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.
Files changed (202) hide show
  1. package/README.md +13 -46
  2. package/cpp/Cipher/MGLPublicCipher.h +5 -1
  3. package/cpp/Cipher/MGLPublicCipherInstaller.h +1 -1
  4. package/cpp/MGLQuickCryptoHostObject.cpp +8 -5
  5. package/lib/commonjs/Cipher.js +113 -111
  6. package/lib/commonjs/Cipher.js.map +1 -1
  7. package/lib/commonjs/Hash.js +8 -5
  8. package/lib/commonjs/Hash.js.map +1 -1
  9. package/lib/commonjs/Hashnames.js +4 -1
  10. package/lib/commonjs/Hashnames.js.map +1 -1
  11. package/lib/commonjs/Hmac.js +5 -3
  12. package/lib/commonjs/Hmac.js.map +1 -1
  13. package/lib/commonjs/NativeQuickCrypto/Cipher.js +7 -7
  14. package/lib/commonjs/NativeQuickCrypto/Cipher.js.map +1 -1
  15. package/lib/commonjs/NativeQuickCrypto/NativeQuickCrypto.js +11 -4
  16. package/lib/commonjs/NativeQuickCrypto/NativeQuickCrypto.js.map +1 -1
  17. package/lib/commonjs/NativeQuickCrypto/sig.js.map +1 -1
  18. package/lib/commonjs/Utils.js +98 -63
  19. package/lib/commonjs/Utils.js.map +1 -1
  20. package/lib/commonjs/aes.js +9 -8
  21. package/lib/commonjs/aes.js.map +1 -1
  22. package/lib/commonjs/ec.js +2 -3
  23. package/lib/commonjs/ec.js.map +1 -1
  24. package/lib/commonjs/index.js +1 -1
  25. package/lib/commonjs/index.js.map +1 -1
  26. package/lib/commonjs/keygen.js +4 -2
  27. package/lib/commonjs/keygen.js.map +1 -1
  28. package/lib/commonjs/keys.js +7 -2
  29. package/lib/commonjs/keys.js.map +1 -1
  30. package/lib/commonjs/package.json +1 -0
  31. package/lib/commonjs/pbkdf2.js +13 -21
  32. package/lib/commonjs/pbkdf2.js.map +1 -1
  33. package/lib/commonjs/random.js +6 -8
  34. package/lib/commonjs/random.js.map +1 -1
  35. package/lib/commonjs/rsa.js.map +1 -1
  36. package/lib/commonjs/sig.js +1 -2
  37. package/lib/commonjs/sig.js.map +1 -1
  38. package/lib/commonjs/subtle.js +4 -3
  39. package/lib/commonjs/subtle.js.map +1 -1
  40. package/lib/module/Cipher.js +114 -110
  41. package/lib/module/Cipher.js.map +1 -1
  42. package/lib/module/Hash.js +9 -4
  43. package/lib/module/Hash.js.map +1 -1
  44. package/lib/module/Hashnames.js +6 -1
  45. package/lib/module/Hashnames.js.map +1 -1
  46. package/lib/module/Hmac.js +6 -2
  47. package/lib/module/Hmac.js.map +1 -1
  48. package/lib/module/NativeQuickCrypto/Cipher.js +9 -7
  49. package/lib/module/NativeQuickCrypto/Cipher.js.map +1 -1
  50. package/lib/module/NativeQuickCrypto/NativeQuickCrypto.js +13 -4
  51. package/lib/module/NativeQuickCrypto/NativeQuickCrypto.js.map +1 -1
  52. package/lib/module/NativeQuickCrypto/aes.js +2 -0
  53. package/lib/module/NativeQuickCrypto/hash.js +1 -1
  54. package/lib/module/NativeQuickCrypto/hmac.js +1 -1
  55. package/lib/module/NativeQuickCrypto/keygen.js +2 -0
  56. package/lib/module/NativeQuickCrypto/pbkdf2.js +1 -1
  57. package/lib/module/NativeQuickCrypto/random.js +1 -1
  58. package/lib/module/NativeQuickCrypto/rsa.js +2 -0
  59. package/lib/module/NativeQuickCrypto/sig.js +2 -0
  60. package/lib/module/NativeQuickCrypto/sig.js.map +1 -1
  61. package/lib/module/NativeQuickCrypto/webcrypto.js +2 -0
  62. package/lib/module/Utils.js +97 -62
  63. package/lib/module/Utils.js.map +1 -1
  64. package/lib/module/aes.js +11 -8
  65. package/lib/module/aes.js.map +1 -1
  66. package/lib/module/constants.js +2 -0
  67. package/lib/module/constants.js.map +1 -1
  68. package/lib/module/ec.js +4 -3
  69. package/lib/module/ec.js.map +1 -1
  70. package/lib/module/index.js +2 -0
  71. package/lib/module/index.js.map +1 -1
  72. package/lib/module/keygen.js +6 -2
  73. package/lib/module/keygen.js.map +1 -1
  74. package/lib/module/keys.js +9 -2
  75. package/lib/module/keys.js.map +1 -1
  76. package/lib/module/package.json +1 -0
  77. package/lib/module/pbkdf2.js +15 -21
  78. package/lib/module/pbkdf2.js.map +1 -1
  79. package/lib/module/random.js +8 -8
  80. package/lib/module/random.js.map +1 -1
  81. package/lib/module/rsa.js +2 -0
  82. package/lib/module/rsa.js.map +1 -1
  83. package/lib/module/sig.js +2 -1
  84. package/lib/module/sig.js.map +1 -1
  85. package/lib/module/subtle.js +6 -3
  86. package/lib/module/subtle.js.map +1 -1
  87. package/lib/module/webcrypto.js +2 -0
  88. package/lib/module/webcrypto.js.map +1 -1
  89. package/lib/typescript/{Cipher.d.ts → src/Cipher.d.ts} +37 -33
  90. package/lib/typescript/src/Cipher.d.ts.map +1 -0
  91. package/lib/typescript/src/Hash.d.ts.map +1 -0
  92. package/lib/typescript/src/Hashnames.d.ts.map +1 -0
  93. package/lib/typescript/src/Hmac.d.ts.map +1 -0
  94. package/lib/typescript/{NativeQuickCrypto → src/NativeQuickCrypto}/Cipher.d.ts +5 -5
  95. package/lib/typescript/src/NativeQuickCrypto/Cipher.d.ts.map +1 -0
  96. package/lib/typescript/{NativeQuickCrypto → src/NativeQuickCrypto}/NativeQuickCrypto.d.ts +1 -1
  97. package/lib/typescript/src/NativeQuickCrypto/NativeQuickCrypto.d.ts.map +1 -0
  98. package/lib/typescript/src/NativeQuickCrypto/aes.d.ts.map +1 -0
  99. package/lib/typescript/src/NativeQuickCrypto/hash.d.ts.map +1 -0
  100. package/lib/typescript/src/NativeQuickCrypto/hmac.d.ts.map +1 -0
  101. package/lib/typescript/src/NativeQuickCrypto/keygen.d.ts.map +1 -0
  102. package/lib/typescript/src/NativeQuickCrypto/pbkdf2.d.ts.map +1 -0
  103. package/lib/typescript/src/NativeQuickCrypto/random.d.ts.map +1 -0
  104. package/lib/typescript/src/NativeQuickCrypto/rsa.d.ts.map +1 -0
  105. package/lib/typescript/src/NativeQuickCrypto/sig.d.ts.map +1 -0
  106. package/lib/typescript/{NativeQuickCrypto → src/NativeQuickCrypto}/webcrypto.d.ts +1 -1
  107. package/lib/typescript/src/NativeQuickCrypto/webcrypto.d.ts.map +1 -0
  108. package/lib/typescript/{Utils.d.ts → src/Utils.d.ts} +18 -8
  109. package/lib/typescript/src/Utils.d.ts.map +1 -0
  110. package/lib/typescript/src/aes.d.ts.map +1 -0
  111. package/lib/typescript/src/constants.d.ts.map +1 -0
  112. package/lib/typescript/src/ec.d.ts.map +1 -0
  113. package/lib/typescript/{index.d.ts → src/index.d.ts} +5 -30
  114. package/lib/typescript/src/index.d.ts.map +1 -0
  115. package/lib/typescript/src/keygen.d.ts.map +1 -0
  116. package/lib/typescript/{keys.d.ts → src/keys.d.ts} +27 -25
  117. package/lib/typescript/src/keys.d.ts.map +1 -0
  118. package/lib/typescript/{pbkdf2.d.ts → src/pbkdf2.d.ts} +3 -4
  119. package/lib/typescript/src/pbkdf2.d.ts.map +1 -0
  120. package/lib/typescript/{random.d.ts → src/random.d.ts} +5 -5
  121. package/lib/typescript/src/random.d.ts.map +1 -0
  122. package/lib/typescript/src/rsa.d.ts.map +1 -0
  123. package/lib/typescript/{sig.d.ts → src/sig.d.ts} +5 -5
  124. package/lib/typescript/src/sig.d.ts.map +1 -0
  125. package/lib/typescript/src/subtle.d.ts.map +1 -0
  126. package/lib/typescript/src/webcrypto.d.ts.map +1 -0
  127. package/package.json +23 -46
  128. package/src/Cipher.ts +270 -212
  129. package/src/Hash.ts +14 -7
  130. package/src/Hashnames.ts +5 -2
  131. package/src/Hmac.ts +6 -5
  132. package/src/NativeQuickCrypto/Cipher.ts +21 -20
  133. package/src/NativeQuickCrypto/NativeQuickCrypto.ts +15 -11
  134. package/src/NativeQuickCrypto/aes.ts +1 -1
  135. package/src/NativeQuickCrypto/hash.ts +1 -1
  136. package/src/NativeQuickCrypto/hmac.ts +1 -1
  137. package/src/NativeQuickCrypto/keygen.ts +1 -1
  138. package/src/NativeQuickCrypto/pbkdf2.ts +2 -2
  139. package/src/NativeQuickCrypto/random.ts +2 -2
  140. package/src/NativeQuickCrypto/rsa.ts +1 -1
  141. package/src/NativeQuickCrypto/sig.ts +3 -1
  142. package/src/NativeQuickCrypto/webcrypto.ts +5 -5
  143. package/src/Utils.ts +175 -108
  144. package/src/aes.ts +29 -29
  145. package/src/ec.ts +18 -19
  146. package/src/keygen.ts +7 -7
  147. package/src/keys.ts +71 -65
  148. package/src/pbkdf2.ts +24 -48
  149. package/src/random.ts +37 -43
  150. package/src/rsa.ts +25 -23
  151. package/src/sig.ts +12 -13
  152. package/src/subtle.ts +50 -45
  153. package/ios/QuickCrypto.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  154. package/ios/QuickCrypto.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  155. package/ios/QuickCrypto.xcodeproj/project.xcworkspace/xcuserdata/brad.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  156. package/ios/QuickCrypto.xcodeproj/xcuserdata/brad.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
  157. package/lib/typescript/Cipher.d.ts.map +0 -1
  158. package/lib/typescript/Hash.d.ts.map +0 -1
  159. package/lib/typescript/Hashnames.d.ts.map +0 -1
  160. package/lib/typescript/Hmac.d.ts.map +0 -1
  161. package/lib/typescript/NativeQuickCrypto/Cipher.d.ts.map +0 -1
  162. package/lib/typescript/NativeQuickCrypto/NativeQuickCrypto.d.ts.map +0 -1
  163. package/lib/typescript/NativeQuickCrypto/aes.d.ts.map +0 -1
  164. package/lib/typescript/NativeQuickCrypto/hash.d.ts.map +0 -1
  165. package/lib/typescript/NativeQuickCrypto/hmac.d.ts.map +0 -1
  166. package/lib/typescript/NativeQuickCrypto/keygen.d.ts.map +0 -1
  167. package/lib/typescript/NativeQuickCrypto/pbkdf2.d.ts.map +0 -1
  168. package/lib/typescript/NativeQuickCrypto/random.d.ts.map +0 -1
  169. package/lib/typescript/NativeQuickCrypto/rsa.d.ts.map +0 -1
  170. package/lib/typescript/NativeQuickCrypto/sig.d.ts.map +0 -1
  171. package/lib/typescript/NativeQuickCrypto/webcrypto.d.ts.map +0 -1
  172. package/lib/typescript/Utils.d.ts.map +0 -1
  173. package/lib/typescript/aes.d.ts.map +0 -1
  174. package/lib/typescript/constants.d.ts.map +0 -1
  175. package/lib/typescript/ec.d.ts.map +0 -1
  176. package/lib/typescript/index.d.ts.map +0 -1
  177. package/lib/typescript/keygen.d.ts.map +0 -1
  178. package/lib/typescript/keys.d.ts.map +0 -1
  179. package/lib/typescript/pbkdf2.d.ts.map +0 -1
  180. package/lib/typescript/random.d.ts.map +0 -1
  181. package/lib/typescript/rsa.d.ts.map +0 -1
  182. package/lib/typescript/sig.d.ts.map +0 -1
  183. package/lib/typescript/subtle.d.ts.map +0 -1
  184. package/lib/typescript/webcrypto.d.ts.map +0 -1
  185. /package/lib/typescript/{Hash.d.ts → src/Hash.d.ts} +0 -0
  186. /package/lib/typescript/{Hashnames.d.ts → src/Hashnames.d.ts} +0 -0
  187. /package/lib/typescript/{Hmac.d.ts → src/Hmac.d.ts} +0 -0
  188. /package/lib/typescript/{NativeQuickCrypto → src/NativeQuickCrypto}/aes.d.ts +0 -0
  189. /package/lib/typescript/{NativeQuickCrypto → src/NativeQuickCrypto}/hash.d.ts +0 -0
  190. /package/lib/typescript/{NativeQuickCrypto → src/NativeQuickCrypto}/hmac.d.ts +0 -0
  191. /package/lib/typescript/{NativeQuickCrypto → src/NativeQuickCrypto}/keygen.d.ts +0 -0
  192. /package/lib/typescript/{NativeQuickCrypto → src/NativeQuickCrypto}/pbkdf2.d.ts +0 -0
  193. /package/lib/typescript/{NativeQuickCrypto → src/NativeQuickCrypto}/random.d.ts +0 -0
  194. /package/lib/typescript/{NativeQuickCrypto → src/NativeQuickCrypto}/rsa.d.ts +0 -0
  195. /package/lib/typescript/{NativeQuickCrypto → src/NativeQuickCrypto}/sig.d.ts +0 -0
  196. /package/lib/typescript/{aes.d.ts → src/aes.d.ts} +0 -0
  197. /package/lib/typescript/{constants.d.ts → src/constants.d.ts} +0 -0
  198. /package/lib/typescript/{ec.d.ts → src/ec.d.ts} +0 -0
  199. /package/lib/typescript/{keygen.d.ts → src/keygen.d.ts} +0 -0
  200. /package/lib/typescript/{rsa.d.ts → src/rsa.d.ts} +0 -0
  201. /package/lib/typescript/{subtle.d.ts → src/subtle.d.ts} +0 -0
  202. /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
- const normalizedHashName = normalizeHashName(algorithm.name);
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
- } catch (_e) {}
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
- _options?: Stream.TransformOptions
29
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
30
+ _options?: Stream.TransformOptions,
30
31
  ) {
31
32
  super();
32
- let keyAsString = binaryLikeToArrayBuffer(key);
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
- 'ECDSA': KeyVariant.DSA,
27
- 'ECDH': KeyVariant.EC,
28
- 'Ed25519': KeyVariant.NID,
29
- 'Ed448': KeyVariant.NID,
30
- 'X25519': KeyVariant.NID,
31
- 'X448': KeyVariant.NID,
32
- 'DH': KeyVariant.DH,
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: any,
64
- passphrase: any,
64
+ type: KeyEncoding | undefined,
65
+ passphrase: string | ArrayBuffer | undefined,
65
66
  buffer: ArrayBuffer,
66
67
  padding: number,
67
- oaepHash: any,
68
- oaepLabel: any
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: any,
74
- passphrase: any,
74
+ type: KeyEncoding | undefined,
75
+ passphrase: string | ArrayBuffer | undefined,
75
76
  buffer: ArrayBuffer,
76
77
  padding: number,
77
- oaepHash: any,
78
- oaepLabel: any
78
+ oaepHash: ArrayBuffer | undefined,
79
+ oaepLabel: ArrayBuffer | undefined,
79
80
  ) => Buffer;
80
81
 
81
82
  export type GenerateKeyPairMethod = (
82
83
  keyVariant: KeyVariant,
83
- ...rest: any[]
84
+ ...rest: unknown[]
84
85
  ) => Promise<GenerateKeyPairReturn>;
85
86
 
86
87
  export type GenerateKeyPairSyncMethod = (
87
88
  keyVariant: KeyVariant,
88
- ...rest: any[]
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
- var __QuickCryptoProxy: object | undefined;
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
- // Check if we are running on-device (JSI)
81
- if (global.nativeCallSyncHook == null || QuickCryptoModule.install == null) {
82
- throw new Error(
83
- '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.'
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 any as NativeQuickCryptoSpec;
106
+ export const NativeQuickCrypto = proxy as NativeQuickCryptoSpec;
@@ -10,5 +10,5 @@ export type AESCipher = (
10
10
  iv_or_counter?: ArrayBuffer,
11
11
  length?: number,
12
12
  authTag?: ArrayBuffer,
13
- additionalData?: ArrayBuffer
13
+ additionalData?: ArrayBuffer,
14
14
  ) => Promise<ArrayBuffer>;
@@ -6,5 +6,5 @@ export type InternalHash = {
6
6
 
7
7
  export type CreateHashMethod = (
8
8
  algorithm: string,
9
- outputLength?: number
9
+ outputLength?: number,
10
10
  ) => InternalHash;
@@ -5,5 +5,5 @@ export type InternalHmac = {
5
5
 
6
6
  export type CreateHmacMethod = (
7
7
  algorithm: string,
8
- key?: ArrayBuffer
8
+ key?: ArrayBuffer,
9
9
  ) => InternalHmac;
@@ -1,7 +1,7 @@
1
1
  import type { KeyObjectHandle } from './webcrypto';
2
2
 
3
3
  export type GenerateSecretKeyMethod = (
4
- length: number
4
+ length: number,
5
5
  ) => Promise<KeyObjectHandle>;
6
6
 
7
7
  export type GenerateSecretKeySyncMethod = (length: number) => KeyObjectHandle;
@@ -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
  };
@@ -8,5 +8,5 @@ export type RSACipher = (
8
8
  data: ArrayBuffer,
9
9
  variant: RSAKeyVariant,
10
10
  hash: DigestAlgorithm,
11
- label?: ArrayBuffer
11
+ label?: ArrayBuffer,
12
12
  ) => Promise<ArrayBuffer>;
@@ -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: any,
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;