react-native-quick-crypto 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
1
  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2
- package="com.reactnativebignumber">
2
+ package="com.margelo.quickcrypto">
3
3
 
4
4
  </manifest>
@@ -0,0 +1,70 @@
1
+ package com.margelo.quickcrypto;
2
+
3
+ import android.util.Log;
4
+
5
+ import androidx.annotation.NonNull;
6
+
7
+ import com.facebook.jni.HybridData;
8
+ import com.facebook.proguard.annotations.DoNotStrip;
9
+ import com.facebook.react.bridge.JavaScriptContextHolder;
10
+ import com.facebook.react.bridge.ReactContextBaseJavaModule;
11
+ import com.facebook.react.bridge.ReactApplicationContext;
12
+ import com.facebook.react.bridge.ReactMethod;
13
+ import com.facebook.react.module.annotations.ReactModule;
14
+ import com.facebook.react.turbomodule.core.CallInvokerHolderImpl;
15
+
16
+ @ReactModule(name = QuickCryptoModule.NAME)
17
+ public class QuickCryptoModule extends ReactContextBaseJavaModule {
18
+ public static final String NAME = "QuickCrypto";
19
+
20
+ @DoNotStrip
21
+ private HybridData mHybridData;
22
+
23
+ private native HybridData initHybrid();
24
+
25
+ public QuickCryptoModule(ReactApplicationContext reactContext) {
26
+ super(reactContext);
27
+ }
28
+
29
+ @NonNull
30
+ @Override
31
+ public String getName() {
32
+ return NAME;
33
+ }
34
+
35
+ @ReactMethod(isBlockingSynchronousMethod = true)
36
+ public boolean install() {
37
+ try {
38
+ if (mHybridData != null) {
39
+ return false;
40
+ }
41
+ Log.i(NAME, "Loading C++ library...");
42
+ System.loadLibrary("reactnativequickcrypto");
43
+
44
+ JavaScriptContextHolder jsContext = getReactApplicationContext().getJavaScriptContextHolder();
45
+ CallInvokerHolderImpl jsCallInvokerHolder = (CallInvokerHolderImpl) getReactApplicationContext()
46
+ .getCatalystInstance()
47
+ .getJSCallInvokerHolder();
48
+
49
+
50
+ Log.i(NAME, "Installing JSI Bindings for react-native-quick-crypto...");
51
+ mHybridData = initHybrid();
52
+ nativeInstall(jsContext.get(), jsCallInvokerHolder);
53
+ Log.i(NAME, "Successfully installed JSI Bindings for react-native-quick-crypto!");
54
+
55
+ return true;
56
+ } catch (Exception exception) {
57
+ Log.e(NAME, "Failed to install JSI Bindings for react-native-quick-crypto!", exception);
58
+ return false;
59
+ }
60
+ }
61
+
62
+ public void destroy() {
63
+ if (mHybridData == null) {
64
+ return;
65
+ }
66
+ mHybridData.resetNative();
67
+ }
68
+
69
+ private native void nativeInstall(long jsiPtr, CallInvokerHolderImpl jsCallInvokerHolder);
70
+ }
@@ -1,4 +1,4 @@
1
- package com.reactnativequickcrypto;
1
+ package com.margelo.quickcrypto;
2
2
 
3
3
  import androidx.annotation.NonNull;
4
4
 
@@ -10,17 +10,16 @@ import com.facebook.react.uimanager.ViewManager;
10
10
  import java.util.Collections;
11
11
  import java.util.List;
12
12
 
13
-
14
13
  public class QuickCryptoPackage implements ReactPackage {
15
- @NonNull
16
- @Override
17
- public List<NativeModule> createNativeModules(@NonNull ReactApplicationContext reactContext) {
18
- return Collections.singletonList(new QuickCryptoModule(reactContext));
19
- }
14
+ @NonNull
15
+ @Override
16
+ public List<NativeModule> createNativeModules(@NonNull ReactApplicationContext reactContext) {
17
+ return Collections.singletonList(new QuickCryptoModule(reactContext));
18
+ }
20
19
 
21
- @NonNull
22
- @Override
23
- public List<ViewManager> createViewManagers(@NonNull ReactApplicationContext reactContext) {
24
- return Collections.emptyList();
25
- }
20
+ @NonNull
21
+ @Override
22
+ public List<ViewManager> createViewManagers(@NonNull ReactApplicationContext reactContext) {
23
+ return Collections.emptyList();
24
+ }
26
25
  }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=crypto-browserify.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
@@ -9,16 +9,16 @@ var _reactNativeBuffer = require("@craftzdog/react-native-buffer");
9
9
 
10
10
  var _QuickCrypto = require("./QuickCrypto");
11
11
 
12
- // @ts-expect-error
13
- global.Buffer = _reactNativeBuffer.Buffer; // @ts-expect-error
12
+ var _cryptoBrowserify = _interopRequireDefault(require("crypto-browserify"));
14
13
 
15
- global.crypto = _QuickCrypto.QuickCrypto; // for randombytes https://github.com/crypto-browserify/randombytes/blob/master/browser.js#L16
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
15
 
17
- const fallbackCrypto = require('crypto-browserify');
18
-
19
- const crypto = { ...fallbackCrypto,
16
+ // @ts-expect-error Buffer does not match exact same type definition.
17
+ global.Buffer = _reactNativeBuffer.Buffer;
18
+ const crypto = { ..._cryptoBrowserify.default,
20
19
  ..._QuickCrypto.QuickCrypto
21
- }; // Maybe use proxy to not load everything?
20
+ }; // for randombytes https://github.com/crypto-browserify/randombytes/blob/master/browser.js#L16
21
+ // @ts-expect-error QuickCrypto is missing `subtle` and `randomUUID`
22
22
 
23
23
  global.crypto = crypto;
24
24
  module.exports = crypto;
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":["global","Buffer","crypto","QuickCrypto","fallbackCrypto","require","module","exports"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;AACAA,MAAM,CAACC,MAAP,GAAgBA,yBAAhB,C,CACA;;AACAD,MAAM,CAACE,MAAP,GAAgBC,wBAAhB,C,CAA6B;;AAE7B,MAAMC,cAAc,GAAGC,OAAO,CAAC,mBAAD,CAA9B;;AACA,MAAMH,MAAM,GAAG,EAAE,GAAGE,cAAL;AAAqB,KAAGD;AAAxB,CAAf,C,CAAsD;;AACtDH,MAAM,CAACE,MAAP,GAAgBA,MAAhB;AAEAI,MAAM,CAACC,OAAP,GAAiBL,MAAjB;eACeA,M","sourcesContent":["import { Buffer } from '@craftzdog/react-native-buffer';\nimport { QuickCrypto } from './QuickCrypto';\n\n// @ts-expect-error\nglobal.Buffer = Buffer;\n// @ts-expect-error\nglobal.crypto = QuickCrypto; // for randombytes https://github.com/crypto-browserify/randombytes/blob/master/browser.js#L16\n\nconst fallbackCrypto = require('crypto-browserify');\nconst crypto = { ...fallbackCrypto, ...QuickCrypto }; // Maybe use proxy to not load everything?\nglobal.crypto = crypto;\n\nmodule.exports = crypto;\nexport default crypto;\n"]}
1
+ {"version":3,"sources":["index.ts"],"names":["global","Buffer","crypto","FallbackCrypto","QuickCrypto","module","exports"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;AAEA;AACAA,MAAM,CAACC,MAAP,GAAgBA,yBAAhB;AAEA,MAAMC,MAAM,GAAG,EAAE,GAAGC,yBAAL;AAAqB,KAAGC;AAAxB,CAAf,C,CAEA;AACA;;AACAJ,MAAM,CAACE,MAAP,GAAgBA,MAAhB;AAEAG,MAAM,CAACC,OAAP,GAAiBJ,MAAjB;eACeA,M","sourcesContent":["import { Buffer } from '@craftzdog/react-native-buffer';\nimport { QuickCrypto } from './QuickCrypto';\nimport FallbackCrypto from 'crypto-browserify';\n\n// @ts-expect-error Buffer does not match exact same type definition.\nglobal.Buffer = Buffer;\n\nconst crypto = { ...FallbackCrypto, ...QuickCrypto };\n\n// for randombytes https://github.com/crypto-browserify/randombytes/blob/master/browser.js#L16\n// @ts-expect-error QuickCrypto is missing `subtle` and `randomUUID`\nglobal.crypto = crypto;\n\nmodule.exports = crypto;\nexport default crypto;\n"]}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=crypto-browserify.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
@@ -1,15 +1,12 @@
1
1
  import { Buffer } from '@craftzdog/react-native-buffer';
2
- import { QuickCrypto } from './QuickCrypto'; // @ts-expect-error
2
+ import { QuickCrypto } from './QuickCrypto';
3
+ import FallbackCrypto from 'crypto-browserify'; // @ts-expect-error Buffer does not match exact same type definition.
3
4
 
4
- global.Buffer = Buffer; // @ts-expect-error
5
-
6
- global.crypto = QuickCrypto; // for randombytes https://github.com/crypto-browserify/randombytes/blob/master/browser.js#L16
7
-
8
- const fallbackCrypto = require('crypto-browserify');
9
-
10
- const crypto = { ...fallbackCrypto,
5
+ global.Buffer = Buffer;
6
+ const crypto = { ...FallbackCrypto,
11
7
  ...QuickCrypto
12
- }; // Maybe use proxy to not load everything?
8
+ }; // for randombytes https://github.com/crypto-browserify/randombytes/blob/master/browser.js#L16
9
+ // @ts-expect-error QuickCrypto is missing `subtle` and `randomUUID`
13
10
 
14
11
  global.crypto = crypto;
15
12
  module.exports = crypto;
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":["Buffer","QuickCrypto","global","crypto","fallbackCrypto","require","module","exports"],"mappings":"AAAA,SAASA,MAAT,QAAuB,gCAAvB;AACA,SAASC,WAAT,QAA4B,eAA5B,C,CAEA;;AACAC,MAAM,CAACF,MAAP,GAAgBA,MAAhB,C,CACA;;AACAE,MAAM,CAACC,MAAP,GAAgBF,WAAhB,C,CAA6B;;AAE7B,MAAMG,cAAc,GAAGC,OAAO,CAAC,mBAAD,CAA9B;;AACA,MAAMF,MAAM,GAAG,EAAE,GAAGC,cAAL;AAAqB,KAAGH;AAAxB,CAAf,C,CAAsD;;AACtDC,MAAM,CAACC,MAAP,GAAgBA,MAAhB;AAEAG,MAAM,CAACC,OAAP,GAAiBJ,MAAjB;AACA,eAAeA,MAAf","sourcesContent":["import { Buffer } from '@craftzdog/react-native-buffer';\nimport { QuickCrypto } from './QuickCrypto';\n\n// @ts-expect-error\nglobal.Buffer = Buffer;\n// @ts-expect-error\nglobal.crypto = QuickCrypto; // for randombytes https://github.com/crypto-browserify/randombytes/blob/master/browser.js#L16\n\nconst fallbackCrypto = require('crypto-browserify');\nconst crypto = { ...fallbackCrypto, ...QuickCrypto }; // Maybe use proxy to not load everything?\nglobal.crypto = crypto;\n\nmodule.exports = crypto;\nexport default crypto;\n"]}
1
+ {"version":3,"sources":["index.ts"],"names":["Buffer","QuickCrypto","FallbackCrypto","global","crypto","module","exports"],"mappings":"AAAA,SAASA,MAAT,QAAuB,gCAAvB;AACA,SAASC,WAAT,QAA4B,eAA5B;AACA,OAAOC,cAAP,MAA2B,mBAA3B,C,CAEA;;AACAC,MAAM,CAACH,MAAP,GAAgBA,MAAhB;AAEA,MAAMI,MAAM,GAAG,EAAE,GAAGF,cAAL;AAAqB,KAAGD;AAAxB,CAAf,C,CAEA;AACA;;AACAE,MAAM,CAACC,MAAP,GAAgBA,MAAhB;AAEAC,MAAM,CAACC,OAAP,GAAiBF,MAAjB;AACA,eAAeA,MAAf","sourcesContent":["import { Buffer } from '@craftzdog/react-native-buffer';\nimport { QuickCrypto } from './QuickCrypto';\nimport FallbackCrypto from 'crypto-browserify';\n\n// @ts-expect-error Buffer does not match exact same type definition.\nglobal.Buffer = Buffer;\n\nconst crypto = { ...FallbackCrypto, ...QuickCrypto };\n\n// for randombytes https://github.com/crypto-browserify/randombytes/blob/master/browser.js#L16\n// @ts-expect-error QuickCrypto is missing `subtle` and `randomUUID`\nglobal.crypto = crypto;\n\nmodule.exports = crypto;\nexport default crypto;\n"]}
@@ -1,2 +1,208 @@
1
- declare const crypto: any;
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ /// <reference types="node" />
4
+ /// <reference types="node" />
5
+ import { Buffer } from '@craftzdog/react-native-buffer';
6
+ import FallbackCrypto from 'crypto-browserify';
7
+ declare const crypto: {
8
+ randomFill<T extends Buffer | ArrayBufferLike | (Uint8Array | Uint8ClampedArray | Uint16Array | Uint32Array | Int8Array | Int16Array | Int32Array | Float32Array | Float64Array) | DataView>(buffer: T, callback: (err: Error | null, buf: T) => void): void;
9
+ randomFill<T_1 extends Buffer | ArrayBufferLike | (Uint8Array | Uint8ClampedArray | Uint16Array | Uint32Array | Int8Array | Int16Array | Int32Array | Float32Array | Float64Array) | DataView>(buffer: T_1, offset: number, callback: (err: Error | null, buf: T_1) => void): void;
10
+ randomFill<T_2 extends Buffer | ArrayBufferLike | (Uint8Array | Uint8ClampedArray | Uint16Array | Uint32Array | Int8Array | Int16Array | Int32Array | Float32Array | Float64Array) | DataView>(buffer: T_2, offset: number, size: number, callback: (err: Error | null, buf: T_2) => void): void;
11
+ randomFillSync<T_3 extends Buffer | ArrayBufferLike | (Uint8Array | Uint8ClampedArray | Uint16Array | Uint32Array | Int8Array | Int16Array | Int32Array | Float32Array | Float64Array) | DataView>(buffer: T_3, offset?: number | undefined, size?: number | undefined): T_3;
12
+ randomBytes(size: number): ArrayBuffer;
13
+ randomBytes(size: number, callback: (err: Error | null, buf?: ArrayBuffer | undefined) => void): void;
14
+ randomInt(max: number, callback: (err: Error | null, value: number) => void): void;
15
+ randomInt(max: number): number;
16
+ randomInt(min: number, max: number, callback: (err: Error | null, value: number) => void): void;
17
+ randomInt(min: number, max: number): number;
18
+ getRandomValues(data: Uint8Array | Uint16Array | Uint32Array | Int8Array | Int16Array | Int32Array): Uint8Array | Uint16Array | Uint32Array | Int8Array | Int16Array | Int32Array;
19
+ rng: typeof import("./random").randomBytes;
20
+ pseudoRandomBytes: typeof import("./random").randomBytes;
21
+ prng: typeof import("./random").randomBytes;
22
+ pbkdf2(password: import("./Utils").BinaryLike, salt: import("./Utils").BinaryLike, iterations: number, keylen: number, digest: string, callback: (err: Error | null, derivedKey?: Buffer | undefined) => void): void;
23
+ pbkdf2(password: import("./Utils").BinaryLike, salt: import("./Utils").BinaryLike, iterations: number, keylen: number, callback: (err: Error | null, derivedKey?: Buffer | undefined) => void): void;
24
+ pbkdf2Sync(password: import("./Utils").BinaryLike, salt: import("./Utils").BinaryLike, iterations: number, keylen: number, digest?: string | undefined): Buffer;
25
+ createHmac: typeof import("./Hmac").createHmac;
26
+ Hmac: typeof import("./Hmac").createHmac;
27
+ Hash: typeof import("./Hash").createHash;
28
+ createHash: typeof import("./Hash").createHash;
29
+ createCipher: typeof import("./Cipher").createCipher;
30
+ createCipheriv: typeof import("./Cipher").createCipheriv;
31
+ createDecipher: typeof import("./Cipher").createDecipher;
32
+ createDecipheriv: typeof import("./Cipher").createDecipheriv;
33
+ publicEncrypt: (options: {
34
+ key: any;
35
+ encoding?: string | undefined;
36
+ format?: any;
37
+ padding?: any;
38
+ oaepHash?: any;
39
+ oaepLabel?: any;
40
+ passphrase?: string | undefined;
41
+ }, buffer: import("./Utils").BinaryLike) => Buffer;
42
+ publicDecrypt: (options: {
43
+ key: any;
44
+ encoding?: string | undefined;
45
+ format?: any;
46
+ padding?: any;
47
+ oaepHash?: any;
48
+ oaepLabel?: any;
49
+ passphrase?: string | undefined;
50
+ }, buffer: import("./Utils").BinaryLike) => Buffer;
51
+ privateDecrypt: (options: {
52
+ key: any;
53
+ encoding?: string | undefined;
54
+ format?: any;
55
+ padding?: any;
56
+ oaepHash?: any;
57
+ oaepLabel?: any;
58
+ passphrase?: string | undefined;
59
+ }, buffer: import("./Utils").BinaryLike) => Buffer;
60
+ generateKeyPair: typeof import("./Cipher").generateKeyPair;
61
+ generateKeyPairSync: typeof import("./Cipher").generateKeyPairSync;
62
+ constants: {
63
+ OPENSSL_VERSION_NUMBER: number;
64
+ SSL_OP_ALL: number;
65
+ SSL_OP_ALLOW_NO_DHE_KEX: number;
66
+ SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: number;
67
+ SSL_OP_CIPHER_SERVER_PREFERENCE: number;
68
+ SSL_OP_CISCO_ANYCONNECT: number;
69
+ SSL_OP_COOKIE_EXCHANGE: number;
70
+ SSL_OP_CRYPTOPRO_TLSEXT_BUG: number;
71
+ SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: number;
72
+ SSL_OP_EPHEMERAL_RSA: number;
73
+ SSL_OP_LEGACY_SERVER_CONNECT: number;
74
+ SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER: number;
75
+ SSL_OP_MICROSOFT_SESS_ID_BUG: number;
76
+ SSL_OP_MSIE_SSLV2_RSA_PADDING: number;
77
+ SSL_OP_NETSCAPE_CA_DN_BUG: number;
78
+ SSL_OP_NETSCAPE_CHALLENGE_BUG: number;
79
+ SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG: number;
80
+ SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: number;
81
+ SSL_OP_NO_COMPRESSION: number;
82
+ SSL_OP_NO_ENCRYPT_THEN_MAC: number;
83
+ SSL_OP_NO_QUERY_MTU: number;
84
+ SSL_OP_NO_RENEGOTIATION: number;
85
+ SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION: number;
86
+ SSL_OP_NO_SSLv2: number;
87
+ SSL_OP_NO_SSLv3: number;
88
+ SSL_OP_NO_TICKET: number;
89
+ SSL_OP_NO_TLSv1: number;
90
+ SSL_OP_NO_TLSv1_1: number;
91
+ SSL_OP_NO_TLSv1_2: number;
92
+ SSL_OP_NO_TLSv1_3: number;
93
+ SSL_OP_PKCS1_CHECK_1: number;
94
+ SSL_OP_PKCS1_CHECK_2: number;
95
+ SSL_OP_PRIORITIZE_CHACHA: number;
96
+ SSL_OP_SINGLE_DH_USE: number;
97
+ SSL_OP_SINGLE_ECDH_USE: number;
98
+ SSL_OP_SSLEAY_080_CLIENT_DH_BUG: number;
99
+ SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG: number;
100
+ SSL_OP_TLS_BLOCK_PADDING_BUG: number;
101
+ SSL_OP_TLS_D5_BUG: number;
102
+ SSL_OP_TLS_ROLLBACK_BUG: number;
103
+ ENGINE_METHOD_RSA: number;
104
+ ENGINE_METHOD_DSA: number;
105
+ ENGINE_METHOD_DH: number;
106
+ ENGINE_METHOD_RAND: number;
107
+ ENGINE_METHOD_EC: number;
108
+ ENGINE_METHOD_CIPHERS: number;
109
+ ENGINE_METHOD_DIGESTS: number;
110
+ ENGINE_METHOD_PKEY_METHS: number;
111
+ ENGINE_METHOD_PKEY_ASN1_METHS: number;
112
+ ENGINE_METHOD_ALL: number;
113
+ ENGINE_METHOD_NONE: number;
114
+ DH_CHECK_P_NOT_SAFE_PRIME: number;
115
+ DH_CHECK_P_NOT_PRIME: number;
116
+ DH_UNABLE_TO_CHECK_GENERATOR: number;
117
+ DH_NOT_SUITABLE_GENERATOR: number;
118
+ ALPN_ENABLED: number;
119
+ RSA_PKCS1_PADDING: number;
120
+ RSA_SSLV23_PADDING: number;
121
+ RSA_NO_PADDING: number;
122
+ RSA_PKCS1_OAEP_PADDING: number;
123
+ RSA_X931_PADDING: number;
124
+ RSA_PKCS1_PSS_PADDING: number;
125
+ RSA_PSS_SALTLEN_DIGEST: number;
126
+ RSA_PSS_SALTLEN_MAX_SIGN: number;
127
+ RSA_PSS_SALTLEN_AUTO: number;
128
+ defaultCoreCipherList: string;
129
+ TLS1_VERSION: number;
130
+ TLS1_1_VERSION: number;
131
+ TLS1_2_VERSION: number;
132
+ TLS1_3_VERSION: number;
133
+ POINT_CONVERSION_COMPRESSED: number;
134
+ POINT_CONVERSION_UNCOMPRESSED: number;
135
+ POINT_CONVERSION_HYBRID: number;
136
+ };
137
+ generateKey(type: "hmac" | "aes", options: {
138
+ length: number;
139
+ }, callback: (err: Error | null, key: FallbackCrypto.KeyObject) => void): void;
140
+ generateKeySync(type: "hmac" | "aes", options: {
141
+ length: number;
142
+ }): FallbackCrypto.KeyObject;
143
+ createPrivateKey(key: string | globalThis.Buffer | FallbackCrypto.PrivateKeyInput | FallbackCrypto.JsonWebKeyInput): FallbackCrypto.KeyObject;
144
+ createPublicKey(key: string | globalThis.Buffer | FallbackCrypto.KeyObject | FallbackCrypto.JsonWebKeyInput | FallbackCrypto.PublicKeyInput): FallbackCrypto.KeyObject;
145
+ createSecretKey(key: NodeJS.ArrayBufferView): FallbackCrypto.KeyObject;
146
+ createSecretKey(key: string, encoding: BufferEncoding): FallbackCrypto.KeyObject;
147
+ createSign(algorithm: string, options?: import("stream").WritableOptions | undefined): FallbackCrypto.Sign;
148
+ createVerify(algorithm: string, options?: import("stream").WritableOptions | undefined): FallbackCrypto.Verify;
149
+ createDiffieHellman(primeLength: number, generator?: number | NodeJS.ArrayBufferView | undefined): FallbackCrypto.DiffieHellman;
150
+ createDiffieHellman(prime: NodeJS.ArrayBufferView): FallbackCrypto.DiffieHellman;
151
+ createDiffieHellman(prime: string, primeEncoding: FallbackCrypto.BinaryToTextEncoding): FallbackCrypto.DiffieHellman;
152
+ createDiffieHellman(prime: string, primeEncoding: FallbackCrypto.BinaryToTextEncoding, generator: number | NodeJS.ArrayBufferView): FallbackCrypto.DiffieHellman;
153
+ createDiffieHellman(prime: string, primeEncoding: FallbackCrypto.BinaryToTextEncoding, generator: string, generatorEncoding: FallbackCrypto.BinaryToTextEncoding): FallbackCrypto.DiffieHellman;
154
+ getDiffieHellman(groupName: string): FallbackCrypto.DiffieHellman;
155
+ scrypt(password: FallbackCrypto.BinaryLike, salt: FallbackCrypto.BinaryLike, keylen: number, callback: (err: Error | null, derivedKey: globalThis.Buffer) => void): void;
156
+ scrypt(password: FallbackCrypto.BinaryLike, salt: FallbackCrypto.BinaryLike, keylen: number, options: FallbackCrypto.ScryptOptions, callback: (err: Error | null, derivedKey: globalThis.Buffer) => void): void;
157
+ scryptSync(password: FallbackCrypto.BinaryLike, salt: FallbackCrypto.BinaryLike, keylen: number, options?: FallbackCrypto.ScryptOptions | undefined): globalThis.Buffer;
158
+ privateEncrypt(privateKey: FallbackCrypto.RsaPrivateKey | FallbackCrypto.KeyLike, buffer: NodeJS.ArrayBufferView): globalThis.Buffer;
159
+ getCiphers(): string[];
160
+ getCurves(): string[];
161
+ getFips(): 0 | 1;
162
+ getHashes(): string[];
163
+ createECDH(curveName: string): FallbackCrypto.ECDH;
164
+ timingSafeEqual(a: NodeJS.ArrayBufferView, b: NodeJS.ArrayBufferView): boolean;
165
+ sign(algorithm: string | null | undefined, data: NodeJS.ArrayBufferView, key: FallbackCrypto.KeyLike | FallbackCrypto.SignKeyObjectInput | FallbackCrypto.SignPrivateKeyInput): globalThis.Buffer;
166
+ sign(algorithm: string | null | undefined, data: NodeJS.ArrayBufferView, key: FallbackCrypto.KeyLike | FallbackCrypto.SignKeyObjectInput | FallbackCrypto.SignPrivateKeyInput, callback: (error: Error | null, data: globalThis.Buffer) => void): void;
167
+ verify(algorithm: string | null | undefined, data: NodeJS.ArrayBufferView, key: FallbackCrypto.KeyLike | FallbackCrypto.VerifyKeyObjectInput | FallbackCrypto.VerifyPublicKeyInput, signature: NodeJS.ArrayBufferView): boolean;
168
+ verify(algorithm: string | null | undefined, data: NodeJS.ArrayBufferView, key: FallbackCrypto.KeyLike | FallbackCrypto.VerifyKeyObjectInput | FallbackCrypto.VerifyPublicKeyInput, signature: NodeJS.ArrayBufferView, callback: (error: Error | null, result: boolean) => void): void;
169
+ diffieHellman(options: {
170
+ privateKey: FallbackCrypto.KeyObject;
171
+ publicKey: FallbackCrypto.KeyObject;
172
+ }): globalThis.Buffer;
173
+ getCipherInfo(nameOrNid: string | number, options?: FallbackCrypto.CipherInfoOptions | undefined): FallbackCrypto.CipherInfo | undefined;
174
+ hkdf(digest: string, irm: FallbackCrypto.KeyObject | FallbackCrypto.BinaryLike, salt: FallbackCrypto.BinaryLike, info: FallbackCrypto.BinaryLike, keylen: number, callback: (err: Error | null, derivedKey: ArrayBuffer) => void): void;
175
+ hkdfSync(digest: string, ikm: FallbackCrypto.KeyObject | FallbackCrypto.BinaryLike, salt: FallbackCrypto.BinaryLike, info: FallbackCrypto.BinaryLike, keylen: number): ArrayBuffer;
176
+ secureHeapUsed(): FallbackCrypto.SecureHeapUsage;
177
+ randomUUID(options?: FallbackCrypto.RandomUUIDOptions | undefined): string;
178
+ generatePrime(size: number, callback: (err: Error | null, prime: ArrayBuffer) => void): void;
179
+ generatePrime(size: number, options: FallbackCrypto.GeneratePrimeOptionsBigInt, callback: (err: Error | null, prime: bigint) => void): void;
180
+ generatePrime(size: number, options: FallbackCrypto.GeneratePrimeOptionsArrayBuffer, callback: (err: Error | null, prime: ArrayBuffer) => void): void;
181
+ generatePrime(size: number, options: FallbackCrypto.GeneratePrimeOptions, callback: (err: Error | null, prime: bigint | ArrayBuffer) => void): void;
182
+ generatePrimeSync(size: number): ArrayBuffer;
183
+ generatePrimeSync(size: number, options: FallbackCrypto.GeneratePrimeOptionsBigInt): bigint;
184
+ generatePrimeSync(size: number, options: FallbackCrypto.GeneratePrimeOptionsArrayBuffer): ArrayBuffer;
185
+ generatePrimeSync(size: number, options: FallbackCrypto.GeneratePrimeOptions): bigint | ArrayBuffer;
186
+ checkPrime(value: FallbackCrypto.LargeNumberLike, callback: (err: Error | null, result: boolean) => void): void;
187
+ checkPrime(value: FallbackCrypto.LargeNumberLike, options: FallbackCrypto.CheckPrimeOptions, callback: (err: Error | null, result: boolean) => void): void;
188
+ checkPrimeSync(candidate: FallbackCrypto.LargeNumberLike, options?: FallbackCrypto.CheckPrimeOptions | undefined): boolean;
189
+ Certificate: FallbackCrypto.Certificate & {
190
+ (): FallbackCrypto.Certificate;
191
+ new (): FallbackCrypto.Certificate;
192
+ exportChallenge(spkac: FallbackCrypto.BinaryLike): globalThis.Buffer;
193
+ exportPublicKey(spkac: FallbackCrypto.BinaryLike, encoding?: string | undefined): globalThis.Buffer;
194
+ verifySpkac(spkac: NodeJS.ArrayBufferView): boolean;
195
+ };
196
+ fips: boolean;
197
+ KeyObject: typeof FallbackCrypto.KeyObject;
198
+ Cipher: typeof FallbackCrypto.Cipher;
199
+ Decipher: typeof FallbackCrypto.Decipher;
200
+ Sign: typeof FallbackCrypto.Sign;
201
+ Verify: typeof FallbackCrypto.Verify;
202
+ DiffieHellman: typeof FallbackCrypto.DiffieHellman;
203
+ ECDH: typeof FallbackCrypto.ECDH;
204
+ DEFAULT_ENCODING: BufferEncoding;
205
+ X509Certificate: typeof FallbackCrypto.X509Certificate;
206
+ webcrypto: typeof FallbackCrypto.webcrypto;
207
+ };
2
208
  export default crypto;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-quick-crypto",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "description": "A fast implementation of Node's `crypto` module written in C/C++ JSI",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -0,0 +1,4 @@
1
+ declare module 'crypto-browserify' {
2
+ import Crypto from 'crypto';
3
+ export = Crypto;
4
+ }
package/src/index.ts CHANGED
@@ -1,13 +1,14 @@
1
1
  import { Buffer } from '@craftzdog/react-native-buffer';
2
2
  import { QuickCrypto } from './QuickCrypto';
3
+ import FallbackCrypto from 'crypto-browserify';
3
4
 
4
- // @ts-expect-error
5
+ // @ts-expect-error Buffer does not match exact same type definition.
5
6
  global.Buffer = Buffer;
6
- // @ts-expect-error
7
- global.crypto = QuickCrypto; // for randombytes https://github.com/crypto-browserify/randombytes/blob/master/browser.js#L16
8
7
 
9
- const fallbackCrypto = require('crypto-browserify');
10
- const crypto = { ...fallbackCrypto, ...QuickCrypto }; // Maybe use proxy to not load everything?
8
+ const crypto = { ...FallbackCrypto, ...QuickCrypto };
9
+
10
+ // for randombytes https://github.com/crypto-browserify/randombytes/blob/master/browser.js#L16
11
+ // @ts-expect-error QuickCrypto is missing `subtle` and `randomUUID`
11
12
  global.crypto = crypto;
12
13
 
13
14
  module.exports = crypto;
@@ -1,70 +0,0 @@
1
- package com.reactnativequickcrypto;
2
-
3
- import android.util.Log;
4
-
5
- import androidx.annotation.NonNull;
6
-
7
- import com.facebook.jni.HybridData;
8
- import com.facebook.proguard.annotations.DoNotStrip;
9
- import com.facebook.react.bridge.JavaScriptContextHolder;
10
- import com.facebook.react.bridge.ReactContextBaseJavaModule;
11
- import com.facebook.react.bridge.ReactApplicationContext;
12
- import com.facebook.react.bridge.ReactMethod;
13
- import com.facebook.react.module.annotations.ReactModule;
14
- import com.facebook.react.turbomodule.core.CallInvokerHolderImpl;
15
-
16
- @ReactModule(name = QuickCryptoModule.NAME)
17
- public class QuickCryptoModule extends ReactContextBaseJavaModule {
18
- public static final String NAME = "QuickCrypto";
19
-
20
- @DoNotStrip
21
- private HybridData mHybridData;
22
-
23
- private native HybridData initHybrid();
24
-
25
- public QuickCryptoModule(ReactApplicationContext reactContext) {
26
- super(reactContext);
27
- }
28
-
29
- @NonNull
30
- @Override
31
- public String getName() {
32
- return NAME;
33
- }
34
-
35
- @ReactMethod(isBlockingSynchronousMethod = true)
36
- public boolean install() {
37
- try {
38
- if (mHybridData != null) {
39
- return false;
40
- }
41
- Log.i(NAME, "Loading C++ library...");
42
- System.loadLibrary("reactnativequickcrypto");
43
-
44
- JavaScriptContextHolder jsContext = getReactApplicationContext().getJavaScriptContextHolder();
45
- CallInvokerHolderImpl jsCallInvokerHolder = (CallInvokerHolderImpl) getReactApplicationContext()
46
- .getCatalystInstance()
47
- .getJSCallInvokerHolder();
48
-
49
-
50
- Log.i(NAME, "Installing JSI Bindings for react-native-quick-crypto...");
51
- mHybridData = initHybrid();
52
- nativeInstall(jsContext.get(), jsCallInvokerHolder);
53
- Log.i(NAME, "Successfully installed JSI Bindings for react-native-quick-crypto!");
54
-
55
- return true;
56
- } catch (Exception exception) {
57
- Log.e(NAME, "Failed to install JSI Bindings for react-native-quick-crypto!", exception);
58
- return false;
59
- }
60
- }
61
-
62
- public void destroy() {
63
- if (mHybridData == null) {
64
- return;
65
- }
66
- mHybridData.resetNative();
67
- }
68
-
69
- private native void nativeInstall(long jsiPtr, CallInvokerHolderImpl jsCallInvokerHolder);
70
- }