react-native-quick-crypto 0.7.2 → 0.7.4
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/README.md +13 -46
- package/cpp/Cipher/MGLPublicCipher.h +5 -1
- package/cpp/Cipher/MGLPublicCipherInstaller.h +1 -1
- package/cpp/MGLQuickCryptoHostObject.cpp +8 -5
- package/lib/commonjs/Cipher.js +113 -111
- package/lib/commonjs/Cipher.js.map +1 -1
- package/lib/commonjs/Hash.js +8 -5
- package/lib/commonjs/Hash.js.map +1 -1
- package/lib/commonjs/Hashnames.js +4 -1
- package/lib/commonjs/Hashnames.js.map +1 -1
- package/lib/commonjs/Hmac.js +5 -3
- package/lib/commonjs/Hmac.js.map +1 -1
- package/lib/commonjs/NativeQuickCrypto/Cipher.js +7 -7
- package/lib/commonjs/NativeQuickCrypto/Cipher.js.map +1 -1
- package/lib/commonjs/NativeQuickCrypto/NativeQuickCrypto.js +11 -4
- package/lib/commonjs/NativeQuickCrypto/NativeQuickCrypto.js.map +1 -1
- package/lib/commonjs/NativeQuickCrypto/sig.js.map +1 -1
- package/lib/commonjs/Utils.js +98 -63
- package/lib/commonjs/Utils.js.map +1 -1
- package/lib/commonjs/aes.js +9 -8
- package/lib/commonjs/aes.js.map +1 -1
- package/lib/commonjs/ec.js +2 -3
- package/lib/commonjs/ec.js.map +1 -1
- package/lib/commonjs/index.js +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/keygen.js +4 -2
- package/lib/commonjs/keygen.js.map +1 -1
- package/lib/commonjs/keys.js +7 -2
- package/lib/commonjs/keys.js.map +1 -1
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/pbkdf2.js +13 -21
- package/lib/commonjs/pbkdf2.js.map +1 -1
- package/lib/commonjs/random.js +6 -8
- package/lib/commonjs/random.js.map +1 -1
- package/lib/commonjs/rsa.js.map +1 -1
- package/lib/commonjs/sig.js +1 -2
- package/lib/commonjs/sig.js.map +1 -1
- package/lib/commonjs/subtle.js +4 -3
- package/lib/commonjs/subtle.js.map +1 -1
- package/lib/module/Cipher.js +114 -110
- package/lib/module/Cipher.js.map +1 -1
- package/lib/module/Hash.js +9 -4
- package/lib/module/Hash.js.map +1 -1
- package/lib/module/Hashnames.js +6 -1
- package/lib/module/Hashnames.js.map +1 -1
- package/lib/module/Hmac.js +6 -2
- package/lib/module/Hmac.js.map +1 -1
- package/lib/module/NativeQuickCrypto/Cipher.js +9 -7
- package/lib/module/NativeQuickCrypto/Cipher.js.map +1 -1
- package/lib/module/NativeQuickCrypto/NativeQuickCrypto.js +13 -4
- package/lib/module/NativeQuickCrypto/NativeQuickCrypto.js.map +1 -1
- package/lib/module/NativeQuickCrypto/aes.js +2 -0
- package/lib/module/NativeQuickCrypto/hash.js +1 -1
- package/lib/module/NativeQuickCrypto/hmac.js +1 -1
- package/lib/module/NativeQuickCrypto/keygen.js +2 -0
- package/lib/module/NativeQuickCrypto/pbkdf2.js +1 -1
- package/lib/module/NativeQuickCrypto/random.js +1 -1
- package/lib/module/NativeQuickCrypto/rsa.js +2 -0
- package/lib/module/NativeQuickCrypto/sig.js +2 -0
- package/lib/module/NativeQuickCrypto/sig.js.map +1 -1
- package/lib/module/NativeQuickCrypto/webcrypto.js +2 -0
- package/lib/module/Utils.js +97 -62
- package/lib/module/Utils.js.map +1 -1
- package/lib/module/aes.js +11 -8
- package/lib/module/aes.js.map +1 -1
- package/lib/module/constants.js +2 -0
- package/lib/module/constants.js.map +1 -1
- package/lib/module/ec.js +4 -3
- package/lib/module/ec.js.map +1 -1
- package/lib/module/index.js +2 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/keygen.js +6 -2
- package/lib/module/keygen.js.map +1 -1
- package/lib/module/keys.js +9 -2
- package/lib/module/keys.js.map +1 -1
- package/lib/module/package.json +1 -0
- package/lib/module/pbkdf2.js +15 -21
- package/lib/module/pbkdf2.js.map +1 -1
- package/lib/module/random.js +8 -8
- package/lib/module/random.js.map +1 -1
- package/lib/module/rsa.js +2 -0
- package/lib/module/rsa.js.map +1 -1
- package/lib/module/sig.js +2 -1
- package/lib/module/sig.js.map +1 -1
- package/lib/module/subtle.js +6 -3
- package/lib/module/subtle.js.map +1 -1
- package/lib/module/webcrypto.js +2 -0
- package/lib/module/webcrypto.js.map +1 -1
- package/lib/typescript/{Cipher.d.ts → src/Cipher.d.ts} +37 -33
- package/lib/typescript/src/Cipher.d.ts.map +1 -0
- package/lib/typescript/src/Hash.d.ts.map +1 -0
- package/lib/typescript/src/Hashnames.d.ts.map +1 -0
- package/lib/typescript/src/Hmac.d.ts.map +1 -0
- package/lib/typescript/{NativeQuickCrypto → src/NativeQuickCrypto}/Cipher.d.ts +5 -5
- package/lib/typescript/src/NativeQuickCrypto/Cipher.d.ts.map +1 -0
- package/lib/typescript/{NativeQuickCrypto → src/NativeQuickCrypto}/NativeQuickCrypto.d.ts +1 -1
- package/lib/typescript/src/NativeQuickCrypto/NativeQuickCrypto.d.ts.map +1 -0
- package/lib/typescript/src/NativeQuickCrypto/aes.d.ts.map +1 -0
- package/lib/typescript/src/NativeQuickCrypto/hash.d.ts.map +1 -0
- package/lib/typescript/src/NativeQuickCrypto/hmac.d.ts.map +1 -0
- package/lib/typescript/src/NativeQuickCrypto/keygen.d.ts.map +1 -0
- package/lib/typescript/src/NativeQuickCrypto/pbkdf2.d.ts.map +1 -0
- package/lib/typescript/src/NativeQuickCrypto/random.d.ts.map +1 -0
- package/lib/typescript/src/NativeQuickCrypto/rsa.d.ts.map +1 -0
- package/lib/typescript/src/NativeQuickCrypto/sig.d.ts.map +1 -0
- package/lib/typescript/{NativeQuickCrypto → src/NativeQuickCrypto}/webcrypto.d.ts +1 -1
- package/lib/typescript/src/NativeQuickCrypto/webcrypto.d.ts.map +1 -0
- package/lib/typescript/{Utils.d.ts → src/Utils.d.ts} +18 -8
- package/lib/typescript/src/Utils.d.ts.map +1 -0
- package/lib/typescript/src/aes.d.ts.map +1 -0
- package/lib/typescript/src/constants.d.ts.map +1 -0
- package/lib/typescript/src/ec.d.ts.map +1 -0
- package/lib/typescript/{index.d.ts → src/index.d.ts} +5 -30
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/keygen.d.ts.map +1 -0
- package/lib/typescript/{keys.d.ts → src/keys.d.ts} +27 -25
- package/lib/typescript/src/keys.d.ts.map +1 -0
- package/lib/typescript/{pbkdf2.d.ts → src/pbkdf2.d.ts} +3 -4
- package/lib/typescript/src/pbkdf2.d.ts.map +1 -0
- package/lib/typescript/{random.d.ts → src/random.d.ts} +5 -5
- package/lib/typescript/src/random.d.ts.map +1 -0
- package/lib/typescript/src/rsa.d.ts.map +1 -0
- package/lib/typescript/{sig.d.ts → src/sig.d.ts} +5 -5
- package/lib/typescript/src/sig.d.ts.map +1 -0
- package/lib/typescript/src/subtle.d.ts.map +1 -0
- package/lib/typescript/src/webcrypto.d.ts.map +1 -0
- package/package.json +23 -46
- package/src/Cipher.ts +270 -212
- package/src/Hash.ts +14 -7
- package/src/Hashnames.ts +5 -2
- package/src/Hmac.ts +6 -5
- package/src/NativeQuickCrypto/Cipher.ts +21 -20
- package/src/NativeQuickCrypto/NativeQuickCrypto.ts +15 -11
- package/src/NativeQuickCrypto/aes.ts +1 -1
- package/src/NativeQuickCrypto/hash.ts +1 -1
- package/src/NativeQuickCrypto/hmac.ts +1 -1
- package/src/NativeQuickCrypto/keygen.ts +1 -1
- package/src/NativeQuickCrypto/pbkdf2.ts +2 -2
- package/src/NativeQuickCrypto/random.ts +2 -2
- package/src/NativeQuickCrypto/rsa.ts +1 -1
- package/src/NativeQuickCrypto/sig.ts +3 -1
- package/src/NativeQuickCrypto/webcrypto.ts +5 -5
- package/src/Utils.ts +175 -108
- package/src/aes.ts +29 -29
- package/src/ec.ts +18 -19
- package/src/keygen.ts +7 -7
- package/src/keys.ts +71 -65
- package/src/pbkdf2.ts +24 -48
- package/src/random.ts +37 -43
- package/src/rsa.ts +25 -23
- package/src/sig.ts +12 -13
- package/src/subtle.ts +50 -45
- package/ios/QuickCrypto.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
- package/ios/QuickCrypto.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- package/ios/QuickCrypto.xcodeproj/project.xcworkspace/xcuserdata/brad.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/QuickCrypto.xcodeproj/xcuserdata/brad.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
- package/lib/typescript/Cipher.d.ts.map +0 -1
- package/lib/typescript/Hash.d.ts.map +0 -1
- package/lib/typescript/Hashnames.d.ts.map +0 -1
- package/lib/typescript/Hmac.d.ts.map +0 -1
- package/lib/typescript/NativeQuickCrypto/Cipher.d.ts.map +0 -1
- package/lib/typescript/NativeQuickCrypto/NativeQuickCrypto.d.ts.map +0 -1
- package/lib/typescript/NativeQuickCrypto/aes.d.ts.map +0 -1
- package/lib/typescript/NativeQuickCrypto/hash.d.ts.map +0 -1
- package/lib/typescript/NativeQuickCrypto/hmac.d.ts.map +0 -1
- package/lib/typescript/NativeQuickCrypto/keygen.d.ts.map +0 -1
- package/lib/typescript/NativeQuickCrypto/pbkdf2.d.ts.map +0 -1
- package/lib/typescript/NativeQuickCrypto/random.d.ts.map +0 -1
- package/lib/typescript/NativeQuickCrypto/rsa.d.ts.map +0 -1
- package/lib/typescript/NativeQuickCrypto/sig.d.ts.map +0 -1
- package/lib/typescript/NativeQuickCrypto/webcrypto.d.ts.map +0 -1
- package/lib/typescript/Utils.d.ts.map +0 -1
- package/lib/typescript/aes.d.ts.map +0 -1
- package/lib/typescript/constants.d.ts.map +0 -1
- package/lib/typescript/ec.d.ts.map +0 -1
- package/lib/typescript/index.d.ts.map +0 -1
- package/lib/typescript/keygen.d.ts.map +0 -1
- package/lib/typescript/keys.d.ts.map +0 -1
- package/lib/typescript/pbkdf2.d.ts.map +0 -1
- package/lib/typescript/random.d.ts.map +0 -1
- package/lib/typescript/rsa.d.ts.map +0 -1
- package/lib/typescript/sig.d.ts.map +0 -1
- package/lib/typescript/subtle.d.ts.map +0 -1
- package/lib/typescript/webcrypto.d.ts.map +0 -1
- /package/lib/typescript/{Hash.d.ts → src/Hash.d.ts} +0 -0
- /package/lib/typescript/{Hashnames.d.ts → src/Hashnames.d.ts} +0 -0
- /package/lib/typescript/{Hmac.d.ts → src/Hmac.d.ts} +0 -0
- /package/lib/typescript/{NativeQuickCrypto → src/NativeQuickCrypto}/aes.d.ts +0 -0
- /package/lib/typescript/{NativeQuickCrypto → src/NativeQuickCrypto}/hash.d.ts +0 -0
- /package/lib/typescript/{NativeQuickCrypto → src/NativeQuickCrypto}/hmac.d.ts +0 -0
- /package/lib/typescript/{NativeQuickCrypto → src/NativeQuickCrypto}/keygen.d.ts +0 -0
- /package/lib/typescript/{NativeQuickCrypto → src/NativeQuickCrypto}/pbkdf2.d.ts +0 -0
- /package/lib/typescript/{NativeQuickCrypto → src/NativeQuickCrypto}/random.d.ts +0 -0
- /package/lib/typescript/{NativeQuickCrypto → src/NativeQuickCrypto}/rsa.d.ts +0 -0
- /package/lib/typescript/{NativeQuickCrypto → src/NativeQuickCrypto}/sig.d.ts +0 -0
- /package/lib/typescript/{aes.d.ts → src/aes.d.ts} +0 -0
- /package/lib/typescript/{constants.d.ts → src/constants.d.ts} +0 -0
- /package/lib/typescript/{ec.d.ts → src/ec.d.ts} +0 -0
- /package/lib/typescript/{keygen.d.ts → src/keygen.d.ts} +0 -0
- /package/lib/typescript/{rsa.d.ts → src/rsa.d.ts} +0 -0
- /package/lib/typescript/{subtle.d.ts → src/subtle.d.ts} +0 -0
- /package/lib/typescript/{webcrypto.d.ts → src/webcrypto.d.ts} +0 -0
package/src/Hash.ts
CHANGED
|
@@ -68,7 +68,7 @@ class Hash extends Stream.Transform {
|
|
|
68
68
|
_transform(
|
|
69
69
|
chunk: string | ArrayBuffer,
|
|
70
70
|
encoding: Encoding,
|
|
71
|
-
callback: () => void
|
|
71
|
+
callback: () => void,
|
|
72
72
|
) {
|
|
73
73
|
this.update(chunk, encoding);
|
|
74
74
|
callback();
|
|
@@ -107,7 +107,7 @@ class Hash extends Stream.Transform {
|
|
|
107
107
|
|
|
108
108
|
export const asyncDigest = async (
|
|
109
109
|
algorithm: SubtleAlgorithm,
|
|
110
|
-
data: BufferLike
|
|
110
|
+
data: BufferLike,
|
|
111
111
|
): Promise<ArrayBuffer> => {
|
|
112
112
|
validateMaxBufferLength(data, 'data');
|
|
113
113
|
|
|
@@ -119,14 +119,21 @@ export const asyncDigest = async (
|
|
|
119
119
|
case 'SHA-384':
|
|
120
120
|
// Fall through
|
|
121
121
|
case 'SHA-512':
|
|
122
|
-
|
|
123
|
-
const hash = new Hash(normalizedHashName);
|
|
124
|
-
hash.update(bufferLikeToArrayBuffer(data));
|
|
125
|
-
return hash.digest();
|
|
122
|
+
return internalDigest(algorithm, data);
|
|
126
123
|
}
|
|
127
124
|
|
|
128
125
|
throw lazyDOMException(
|
|
129
126
|
`Unrecognized algorithm name: ${algorithm.name}`,
|
|
130
|
-
'NotSupportedError'
|
|
127
|
+
'NotSupportedError',
|
|
131
128
|
);
|
|
132
129
|
};
|
|
130
|
+
|
|
131
|
+
const internalDigest = (
|
|
132
|
+
algorithm: SubtleAlgorithm,
|
|
133
|
+
data: BufferLike,
|
|
134
|
+
): ArrayBuffer => {
|
|
135
|
+
const normalizedHashName = normalizeHashName(algorithm.name);
|
|
136
|
+
const hash = new Hash(normalizedHashName);
|
|
137
|
+
hash.update(bufferLikeToArrayBuffer(data));
|
|
138
|
+
return hash.digest();
|
|
139
|
+
};
|
package/src/Hashnames.ts
CHANGED
|
@@ -80,14 +80,17 @@ const kHashNames: HashNames = {
|
|
|
80
80
|
|
|
81
81
|
export function normalizeHashName(
|
|
82
82
|
algo: string | HashAlgorithm | undefined,
|
|
83
|
-
context: HashContext = HashContext.Node
|
|
83
|
+
context: HashContext = HashContext.Node,
|
|
84
84
|
): HashAlgorithm {
|
|
85
85
|
if (typeof algo !== 'undefined') {
|
|
86
86
|
const normAlgo = algo.toString().toLowerCase();
|
|
87
87
|
try {
|
|
88
88
|
const alias = kHashNames[normAlgo]![context] as HashAlgorithm;
|
|
89
89
|
if (alias) return alias;
|
|
90
|
-
|
|
90
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
91
|
+
} catch (_e) {
|
|
92
|
+
// ignore
|
|
93
|
+
}
|
|
91
94
|
}
|
|
92
95
|
throw new Error(`Invalid Hash Algorithm: ${algo}`);
|
|
93
96
|
}
|
package/src/Hmac.ts
CHANGED
|
@@ -14,7 +14,7 @@ const createInternalHmac = NativeQuickCrypto.createHmac;
|
|
|
14
14
|
export function createHmac(
|
|
15
15
|
algorithm: string,
|
|
16
16
|
key: BinaryLike,
|
|
17
|
-
options?: Stream.TransformOptions
|
|
17
|
+
options?: Stream.TransformOptions,
|
|
18
18
|
) {
|
|
19
19
|
return new Hmac(algorithm, key, options);
|
|
20
20
|
}
|
|
@@ -26,10 +26,11 @@ class Hmac extends Stream.Transform {
|
|
|
26
26
|
constructor(
|
|
27
27
|
algorithm: string,
|
|
28
28
|
key: BinaryLike,
|
|
29
|
-
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
30
|
+
_options?: Stream.TransformOptions,
|
|
30
31
|
) {
|
|
31
32
|
super();
|
|
32
|
-
|
|
33
|
+
const keyAsString = binaryLikeToArrayBuffer(key);
|
|
33
34
|
|
|
34
35
|
if (keyAsString === undefined) {
|
|
35
36
|
throw 'Wrong key type';
|
|
@@ -37,7 +38,7 @@ class Hmac extends Stream.Transform {
|
|
|
37
38
|
|
|
38
39
|
this.internalHmac = createInternalHmac(
|
|
39
40
|
algorithm,
|
|
40
|
-
keyAsString as ArrayBuffer
|
|
41
|
+
keyAsString as ArrayBuffer,
|
|
41
42
|
);
|
|
42
43
|
}
|
|
43
44
|
|
|
@@ -69,7 +70,7 @@ class Hmac extends Stream.Transform {
|
|
|
69
70
|
_transform(
|
|
70
71
|
chunk: string | BinaryLike,
|
|
71
72
|
encoding: Encoding,
|
|
72
|
-
callback: () => void
|
|
73
|
+
callback: () => void,
|
|
73
74
|
) {
|
|
74
75
|
this.update(chunk, encoding);
|
|
75
76
|
callback();
|
|
@@ -3,6 +3,7 @@ import type { BinaryLike } from '../Utils';
|
|
|
3
3
|
import type { Buffer } from '@craftzdog/react-native-buffer';
|
|
4
4
|
import type {
|
|
5
5
|
EncodingOptions,
|
|
6
|
+
KeyEncoding,
|
|
6
7
|
PrivateKeyObject,
|
|
7
8
|
PublicKeyObject,
|
|
8
9
|
SecretKeyObject,
|
|
@@ -23,13 +24,13 @@ export const KeyVariantLookup: Record<string, KeyVariant> = {
|
|
|
23
24
|
'RSASSA-PKCS1-v1_5': KeyVariant.RSA_SSA_PKCS1_v1_5,
|
|
24
25
|
'RSA-PSS': KeyVariant.RSA_PSS,
|
|
25
26
|
'RSA-OAEP': KeyVariant.RSA_OAEP,
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
ECDSA: KeyVariant.DSA,
|
|
28
|
+
ECDH: KeyVariant.EC,
|
|
29
|
+
Ed25519: KeyVariant.NID,
|
|
30
|
+
Ed448: KeyVariant.NID,
|
|
31
|
+
X25519: KeyVariant.NID,
|
|
32
|
+
X448: KeyVariant.NID,
|
|
33
|
+
DH: KeyVariant.DH,
|
|
33
34
|
};
|
|
34
35
|
|
|
35
36
|
export type InternalCipher = {
|
|
@@ -60,43 +61,43 @@ export type CreateDecipherMethod = (params: {
|
|
|
60
61
|
export type PublicEncryptMethod = (
|
|
61
62
|
data: ArrayBuffer,
|
|
62
63
|
format: number,
|
|
63
|
-
type:
|
|
64
|
-
passphrase:
|
|
64
|
+
type: KeyEncoding | undefined,
|
|
65
|
+
passphrase: string | ArrayBuffer | undefined,
|
|
65
66
|
buffer: ArrayBuffer,
|
|
66
67
|
padding: number,
|
|
67
|
-
oaepHash:
|
|
68
|
-
oaepLabel:
|
|
68
|
+
oaepHash: ArrayBuffer | undefined,
|
|
69
|
+
oaepLabel: ArrayBuffer | undefined,
|
|
69
70
|
) => Buffer;
|
|
70
71
|
export type PrivateDecryptMethod = (
|
|
71
72
|
data: ArrayBuffer,
|
|
72
73
|
format: number,
|
|
73
|
-
type:
|
|
74
|
-
passphrase:
|
|
74
|
+
type: KeyEncoding | undefined,
|
|
75
|
+
passphrase: string | ArrayBuffer | undefined,
|
|
75
76
|
buffer: ArrayBuffer,
|
|
76
77
|
padding: number,
|
|
77
|
-
oaepHash:
|
|
78
|
-
oaepLabel:
|
|
78
|
+
oaepHash: ArrayBuffer | undefined,
|
|
79
|
+
oaepLabel: ArrayBuffer | undefined,
|
|
79
80
|
) => Buffer;
|
|
80
81
|
|
|
81
82
|
export type GenerateKeyPairMethod = (
|
|
82
83
|
keyVariant: KeyVariant,
|
|
83
|
-
...rest:
|
|
84
|
+
...rest: unknown[]
|
|
84
85
|
) => Promise<GenerateKeyPairReturn>;
|
|
85
86
|
|
|
86
87
|
export type GenerateKeyPairSyncMethod = (
|
|
87
88
|
keyVariant: KeyVariant,
|
|
88
|
-
...rest:
|
|
89
|
+
...rest: unknown[]
|
|
89
90
|
) => GenerateKeyPairReturn;
|
|
90
91
|
|
|
91
92
|
export type CreatePublicKeyMethod = (
|
|
92
|
-
key: BinaryLike | EncodingOptions
|
|
93
|
+
key: BinaryLike | EncodingOptions,
|
|
93
94
|
) => PublicKeyObject;
|
|
94
95
|
|
|
95
96
|
export type CreatePrivateKeyMethod = (
|
|
96
|
-
key: BinaryLike | EncodingOptions
|
|
97
|
+
key: BinaryLike | EncodingOptions,
|
|
97
98
|
) => PrivateKeyObject;
|
|
98
99
|
|
|
99
100
|
export type CreateSecretKeyMethod = (
|
|
100
101
|
key: BinaryLike | EncodingOptions,
|
|
101
|
-
encoding?: string
|
|
102
|
+
encoding?: string,
|
|
102
103
|
) => SecretKeyObject;
|
|
@@ -40,10 +40,11 @@ interface NativeQuickCryptoSpec {
|
|
|
40
40
|
// global func declaration for JSI functions
|
|
41
41
|
declare global {
|
|
42
42
|
function nativeCallSyncHook(): unknown;
|
|
43
|
-
|
|
43
|
+
let __QuickCryptoProxy: object | undefined;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
// Check if the constructor exists. If not, try installing the JSI bindings.
|
|
47
|
+
// @ts-expect-error this may not exist on global object
|
|
47
48
|
if (global.__QuickCryptoProxy == null) {
|
|
48
49
|
// Get the native QuickCrypto ReactModule
|
|
49
50
|
const QuickCryptoModule = NativeModules.QuickCrypto;
|
|
@@ -65,7 +66,7 @@ if (global.__QuickCryptoProxy == null) {
|
|
|
65
66
|
if (ExpoConstants.appOwnership === 'expo') {
|
|
66
67
|
// We're running Expo Go
|
|
67
68
|
throw new Error(
|
|
68
|
-
'react-native-quick-crypto is not supported in Expo Go! Use EAS (`expo prebuild`) or eject to a bare workflow instead.'
|
|
69
|
+
'react-native-quick-crypto is not supported in Expo Go! Use EAS (`expo prebuild`) or eject to a bare workflow instead.',
|
|
69
70
|
);
|
|
70
71
|
} else {
|
|
71
72
|
// We're running Expo bare / standalone
|
|
@@ -77,26 +78,29 @@ if (global.__QuickCryptoProxy == null) {
|
|
|
77
78
|
throw new Error(message);
|
|
78
79
|
}
|
|
79
80
|
|
|
80
|
-
//
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
81
|
+
// see #333, commenting this may allow the library to work in new architecture
|
|
82
|
+
// // Check if we are running on-device (JSI)
|
|
83
|
+
// if (global.nativeCallSyncHook == null || QuickCryptoModule.install == null) {
|
|
84
|
+
// throw new Error(
|
|
85
|
+
// 'Failed to install react-native-quick-crypto: React Native is not running on-device. QuickCrypto can only be used when synchronous method invocations (JSI) are possible. If you are using a remote debugger (e.g. Chrome), switch to an on-device debugger (e.g. Flipper) instead.',
|
|
86
|
+
// );
|
|
87
|
+
// }
|
|
86
88
|
|
|
87
89
|
// Call the synchronous blocking install() function
|
|
88
90
|
const result = QuickCryptoModule.install();
|
|
89
91
|
if (result !== true)
|
|
90
92
|
throw new Error(
|
|
91
|
-
`Failed to install react-native-quick-crypto: The native QuickCrypto Module could not be installed! Looks like something went wrong when installing JSI bindings: ${result}
|
|
93
|
+
`Failed to install react-native-quick-crypto: The native QuickCrypto Module could not be installed! Looks like something went wrong when installing JSI bindings: ${result}`,
|
|
92
94
|
);
|
|
93
95
|
|
|
94
96
|
// Check again if the constructor now exists. If not, throw an error.
|
|
97
|
+
// @ts-expect-error this may not exist on global object
|
|
95
98
|
if (global.__QuickCryptoProxy == null)
|
|
96
99
|
throw new Error(
|
|
97
|
-
'Failed to install react-native-quick-crypto, the native initializer function does not exist. Are you trying to use QuickCrypto from different JS Runtimes?'
|
|
100
|
+
'Failed to install react-native-quick-crypto, the native initializer function does not exist. Are you trying to use QuickCrypto from different JS Runtimes?',
|
|
98
101
|
);
|
|
99
102
|
}
|
|
100
103
|
|
|
104
|
+
// @ts-expect-error this may not exist on global object
|
|
101
105
|
const proxy = global.__QuickCryptoProxy;
|
|
102
|
-
export const NativeQuickCrypto = proxy as
|
|
106
|
+
export const NativeQuickCrypto = proxy as NativeQuickCryptoSpec;
|
|
@@ -4,13 +4,13 @@ export type Pbkdf2Object = {
|
|
|
4
4
|
salt: ArrayBuffer,
|
|
5
5
|
iterations: number,
|
|
6
6
|
keylen: number,
|
|
7
|
-
digest: string
|
|
7
|
+
digest: string,
|
|
8
8
|
) => Promise<ArrayBuffer>;
|
|
9
9
|
pbkdf2Sync: (
|
|
10
10
|
password: ArrayBuffer,
|
|
11
11
|
salt: ArrayBuffer,
|
|
12
12
|
iterations: number,
|
|
13
13
|
keylen: number,
|
|
14
|
-
digest: string
|
|
14
|
+
digest: string,
|
|
15
15
|
) => ArrayBuffer;
|
|
16
16
|
};
|
|
@@ -2,11 +2,11 @@ export type RandomObject = {
|
|
|
2
2
|
randomFill: (
|
|
3
3
|
buffer: ArrayBuffer,
|
|
4
4
|
offset: number,
|
|
5
|
-
size: number
|
|
5
|
+
size: number,
|
|
6
6
|
) => Promise<ArrayBuffer>;
|
|
7
7
|
randomFillSync: (
|
|
8
8
|
buffer: ArrayBuffer,
|
|
9
9
|
offset: number,
|
|
10
|
-
size: number
|
|
10
|
+
size: number,
|
|
11
11
|
) => ArrayBuffer;
|
|
12
12
|
};
|
|
@@ -6,12 +6,14 @@ import type { KeyObjectHandle } from './webcrypto';
|
|
|
6
6
|
export type InternalSign = {
|
|
7
7
|
init: (algorithm: string) => void;
|
|
8
8
|
update: (data: ArrayBuffer) => void;
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
9
10
|
sign: (...args: any) => Uint8Array; // returns raw bytes
|
|
10
11
|
};
|
|
11
12
|
|
|
12
13
|
export type InternalVerify = {
|
|
13
14
|
init: (algorithm: string) => void;
|
|
14
15
|
update: (data: ArrayBuffer) => void;
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
15
17
|
verify: (...args: any) => boolean;
|
|
16
18
|
};
|
|
17
19
|
|
|
@@ -40,5 +42,5 @@ export type SignVerify = (
|
|
|
40
42
|
salt_length: number | undefined,
|
|
41
43
|
padding: number | undefined,
|
|
42
44
|
dsa_encoding: DSASigEnc | undefined,
|
|
43
|
-
signature: ArrayBuffer | undefined
|
|
45
|
+
signature: ArrayBuffer | undefined,
|
|
44
46
|
) => ArrayBuffer | boolean;
|
|
@@ -28,13 +28,13 @@ type KeyDetail = {
|
|
|
28
28
|
|
|
29
29
|
type ECExportKey = (
|
|
30
30
|
format: KWebCryptoKeyFormat,
|
|
31
|
-
handle: KeyObjectHandle
|
|
31
|
+
handle: KeyObjectHandle,
|
|
32
32
|
) => ArrayBuffer;
|
|
33
33
|
|
|
34
34
|
type RSAExportKey = (
|
|
35
35
|
format: KWebCryptoKeyFormat,
|
|
36
36
|
handle: KeyObjectHandle,
|
|
37
|
-
variant: KeyVariant
|
|
37
|
+
variant: KeyVariant,
|
|
38
38
|
) => ArrayBuffer;
|
|
39
39
|
|
|
40
40
|
export type KeyObjectHandle = {
|
|
@@ -42,16 +42,16 @@ export type KeyObjectHandle = {
|
|
|
42
42
|
format?: KFormatType,
|
|
43
43
|
type?: KeyEncoding,
|
|
44
44
|
cipher?: string,
|
|
45
|
-
passphrase?: ArrayBuffer
|
|
45
|
+
passphrase?: ArrayBuffer,
|
|
46
46
|
): ArrayBuffer;
|
|
47
47
|
exportJwk(key: JWK, handleRsaPss: boolean): JWK;
|
|
48
48
|
getAsymmetricKeyType(): AsymmetricKeyType;
|
|
49
49
|
init(
|
|
50
50
|
keyType: KeyType,
|
|
51
|
-
key:
|
|
51
|
+
key: string | ArrayBuffer,
|
|
52
52
|
format?: KFormatType,
|
|
53
53
|
type?: KeyEncoding,
|
|
54
|
-
passphrase?: string | ArrayBuffer
|
|
54
|
+
passphrase?: string | ArrayBuffer,
|
|
55
55
|
): boolean;
|
|
56
56
|
initECRaw(curveName: string, keyData: ArrayBuffer): boolean;
|
|
57
57
|
initJwk(keyData: JWK, namedCurve?: NamedCurve): KeyType | undefined;
|