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.
- package/android/src/main/AndroidManifest.xml +1 -1
- package/android/src/main/java/com/margelo/quickcrypto/QuickCryptoModule.java +70 -0
- package/android/src/main/java/com/{reactnativequickcrypto → margelo/quickcrypto}/QuickCryptoPackage.java +11 -12
- package/lib/commonjs/@types/crypto-browserify.d.js +2 -0
- package/lib/commonjs/@types/crypto-browserify.d.js.map +1 -0
- package/lib/commonjs/index.js +7 -7
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/@types/crypto-browserify.d.js +2 -0
- package/lib/module/@types/crypto-browserify.d.js.map +1 -0
- package/lib/module/index.js +6 -9
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/index.d.ts +207 -1
- package/package.json +1 -1
- package/src/@types/crypto-browserify.d.ts +4 -0
- package/src/index.ts +6 -5
- package/android/src/main/java/com/reactnativequickcrypto/QuickCryptoModule.java +0 -70
|
@@ -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.
|
|
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
|
-
|
|
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
|
-
|
|
25
|
-
}
|
|
20
|
+
@NonNull
|
|
21
|
+
@Override
|
|
22
|
+
public List<ViewManager> createViewManagers(@NonNull ReactApplicationContext reactContext) {
|
|
23
|
+
return Collections.emptyList();
|
|
24
|
+
}
|
|
26
25
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -9,16 +9,16 @@ var _reactNativeBuffer = require("@craftzdog/react-native-buffer");
|
|
|
9
9
|
|
|
10
10
|
var _QuickCrypto = require("./QuickCrypto");
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
global.Buffer = _reactNativeBuffer.Buffer; // @ts-expect-error
|
|
12
|
+
var _cryptoBrowserify = _interopRequireDefault(require("crypto-browserify"));
|
|
14
13
|
|
|
15
|
-
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
15
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const crypto = { ...
|
|
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
|
-
}; //
|
|
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","
|
|
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 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
import { Buffer } from '@craftzdog/react-native-buffer';
|
|
2
|
-
import { QuickCrypto } from './QuickCrypto';
|
|
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;
|
|
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
|
-
}; //
|
|
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;
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":["Buffer","QuickCrypto","
|
|
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
|
-
|
|
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
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
|
|
10
|
-
|
|
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
|
-
}
|