content: package com.amazonaws;
  
  import com.facebook.react.bridge.ReactApplicationContext;
  import com.facebook.react.bridge.ReactContextBaseJavaModule;
  import com.facebook.react.bridge.ReactMethod;
  import com.facebook.react.bridge.ReadableMap;
  import com.facebook.react.bridge.Callback;
  import java.math.BigInteger;
  
  public class RNAWSCognitoModule extends ReactContextBaseJavaModule {
  
    private final ReactApplicationContext reactContext;
  
    private static final String HEX_N = "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
            + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
            + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"
            + "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED"
            + "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D"
            + "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F"
            + "83655D23DCA3AD961C62F356208552BB9ED529077096966D"
            + "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B"
            + "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9"
            + "DE2BCBF6955817183995497CEA956AE515D2261898FA0510"
            + "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64"
            + "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7"
            + "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B"
            + "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C"
            + "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31"
            + "43DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF";
  
    private static final BigInteger N = new BigInteger(HEX_N, 16);
  
    public RNAWSCognitoModule(ReactApplicationContext reactContext) {
      super(reactContext);
      this.reactContext = reactContext;
    }
  
    @Override
    public String getName() {
      return "RNAWSCognito";
    }
  
    @ReactMethod
    public void computeModPow(final ReadableMap values, final Callback callback) {
      try {
        final BigInteger target = new BigInteger(values.getString("target"), 16);
        final BigInteger value = new BigInteger(values.getString("value"), 16);
        final BigInteger modifier = new BigInteger(values.getString("modifier"), 16);
        final BigInteger result = target.modPow(value, modifier);
        callback.invoke(null, result.toString(16));
      } catch (final Exception e) {
        callback.invoke(e.getMessage(), null);
      }
    }
  
    @ReactMethod
    public void computeS(final ReadableMap values, final Callback callback) {
      try {
        final BigInteger g = new BigInteger(values.getString("g"), 16);
        final BigInteger x = new BigInteger(values.getString("x"), 16);
        final BigInteger k = new BigInteger(values.getString("k"), 16);
        final BigInteger a = new BigInteger(values.getString("a"), 16);
        final BigInteger b = new BigInteger(values.getString("b"), 16);
        final BigInteger u = new BigInteger(values.getString("u"), 16);
        final BigInteger exp = a.add(u.multiply(x));
        final BigInteger base = b.subtract(k.multiply(g.modPow(x, N)));
        final BigInteger result = base.modPow(exp, N).mod(N);
        callback.invoke(null, result.toString(16));
      } catch (final Exception e) {
        callback.invoke(e.getMessage(), null);
      }
    }
  }