
/**
 * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
 *
 * Do not edit this file as changes may cause incorrect behavior and will be lost
 * once the code is regenerated.
 *
 * @generated by codegen project: GenerateModuleJavaSpec.js
 *
 * @nolint
 */

package com.encryption;

import com.facebook.proguard.annotations.DoNotStrip;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.turbomodule.core.interfaces.TurboModule;
import javax.annotation.Nonnull;

public abstract class NativeEncryptionSpec extends ReactContextBaseJavaModule implements TurboModule {
  public static final String NAME = "Encryption";

  public NativeEncryptionSpec(ReactApplicationContext reactContext) {
    super(reactContext);
  }

  @Override
  public @Nonnull String getName() {
    return NAME;
  }

  @ReactMethod(isBlockingSynchronousMethod = true)
  @DoNotStrip
  public abstract String generateAESKey(double keySize);

  @ReactMethod(isBlockingSynchronousMethod = true)
  @DoNotStrip
  public abstract String encryptAES(String data, String key);

  @ReactMethod(isBlockingSynchronousMethod = true)
  @DoNotStrip
  public abstract String decryptAES(String data, String key);

  @ReactMethod
  @DoNotStrip
  public abstract void encryptFile(String inputPath, String outputPath, String key, Promise promise);

  @ReactMethod
  @DoNotStrip
  public abstract void decryptFile(String inputPath, String key, Promise promise);

  @ReactMethod
  @DoNotStrip
  public abstract void encryptAsyncAES(String data, String key, Promise promise);

  @ReactMethod
  @DoNotStrip
  public abstract void decryptAsyncAES(String data, String key, Promise promise);

  @ReactMethod(isBlockingSynchronousMethod = true)
  @DoNotStrip
  public abstract WritableMap generateRSAKeyPair();

  @ReactMethod(isBlockingSynchronousMethod = true)
  @DoNotStrip
  public abstract String getPublicRSAkey(String privateRSAkey);

  @ReactMethod(isBlockingSynchronousMethod = true)
  @DoNotStrip
  public abstract String encryptRSA(String data, String publicKey);

  @ReactMethod(isBlockingSynchronousMethod = true)
  @DoNotStrip
  public abstract String decryptRSA(String data, String privateKey);

  @ReactMethod
  @DoNotStrip
  public abstract void encryptAsyncRSA(String data, String publicKey, Promise promise);

  @ReactMethod
  @DoNotStrip
  public abstract void decryptAsyncRSA(String data, String privateKey, Promise promise);

  @ReactMethod(isBlockingSynchronousMethod = true)
  @DoNotStrip
  public abstract String signDataRSA(String data, String key);

  @ReactMethod(isBlockingSynchronousMethod = true)
  @DoNotStrip
  public abstract boolean verifySignatureRSA(String data, String signatureBase64, String key);

  @ReactMethod(isBlockingSynchronousMethod = true)
  @DoNotStrip
  public abstract String hashSHA256(String input);

  @ReactMethod(isBlockingSynchronousMethod = true)
  @DoNotStrip
  public abstract String hashSHA512(String input);

  @ReactMethod(isBlockingSynchronousMethod = true)
  @DoNotStrip
  public abstract String generateHMACKey(double keySize);

  @ReactMethod(isBlockingSynchronousMethod = true)
  @DoNotStrip
  public abstract String hmacSHA256(String data, String key);

  @ReactMethod(isBlockingSynchronousMethod = true)
  @DoNotStrip
  public abstract String hmacSHA512(String data, String key);

  @ReactMethod(isBlockingSynchronousMethod = true)
  @DoNotStrip
  public abstract String generateRandomString(double input);

  @ReactMethod(isBlockingSynchronousMethod = true)
  @DoNotStrip
  public abstract String base64Encode(String input);

  @ReactMethod(isBlockingSynchronousMethod = true)
  @DoNotStrip
  public abstract String base64Decode(String input);

  @ReactMethod(isBlockingSynchronousMethod = true)
  @DoNotStrip
  public abstract String pbkdf2(String password, String salt, double iterations, double keyLength, String hash);

  @ReactMethod(isBlockingSynchronousMethod = true)
  @DoNotStrip
  public abstract String getRandomBytes(double size);

  @ReactMethod(isBlockingSynchronousMethod = true)
  @DoNotStrip
  public abstract String encryptRSAOAEP(String data, String publicKey);

  @ReactMethod(isBlockingSynchronousMethod = true)
  @DoNotStrip
  public abstract String decryptRSAOAEP(String data, String privateKey);

  @ReactMethod(isBlockingSynchronousMethod = true)
  @DoNotStrip
  public abstract WritableMap generateECDSAKeyPair();

  @ReactMethod(isBlockingSynchronousMethod = true)
  @DoNotStrip
  public abstract String getPublicECDSAKey(String privateECDAkey);

  @ReactMethod(isBlockingSynchronousMethod = true)
  @DoNotStrip
  public abstract String signDataECDSA(String data, String key);

  @ReactMethod(isBlockingSynchronousMethod = true)
  @DoNotStrip
  public abstract boolean verifySignatureECDSA(String data, String signatureBase64, String key);
}
