react-native-quick-crypto 1.0.7 → 1.0.8

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 (89) hide show
  1. package/QuickCrypto.podspec +3 -0
  2. package/android/CMakeLists.txt +4 -0
  3. package/cpp/dh/HybridDiffieHellman.cpp +438 -0
  4. package/cpp/dh/HybridDiffieHellman.hpp +41 -0
  5. package/cpp/ecdh/HybridECDH.cpp +306 -0
  6. package/cpp/ecdh/HybridECDH.hpp +42 -0
  7. package/cpp/utils/QuickCryptoUtils.hpp +14 -0
  8. package/lib/commonjs/dh-groups.js +29 -0
  9. package/lib/commonjs/dh-groups.js.map +1 -0
  10. package/lib/commonjs/diffie-hellman.js +147 -0
  11. package/lib/commonjs/diffie-hellman.js.map +1 -0
  12. package/lib/commonjs/ec.js +68 -180
  13. package/lib/commonjs/ec.js.map +1 -1
  14. package/lib/commonjs/ecdh.js +71 -0
  15. package/lib/commonjs/ecdh.js.map +1 -0
  16. package/lib/commonjs/index.js +26 -0
  17. package/lib/commonjs/index.js.map +1 -1
  18. package/lib/commonjs/keys/generateKeyPair.js.map +1 -1
  19. package/lib/commonjs/keys/index.js +12 -0
  20. package/lib/commonjs/keys/index.js.map +1 -1
  21. package/lib/commonjs/keys/signVerify.js +42 -0
  22. package/lib/commonjs/keys/signVerify.js.map +1 -1
  23. package/lib/commonjs/specs/diffie-hellman.nitro.js +6 -0
  24. package/lib/commonjs/specs/diffie-hellman.nitro.js.map +1 -0
  25. package/lib/commonjs/specs/ecdh.nitro.js +6 -0
  26. package/lib/commonjs/specs/ecdh.nitro.js.map +1 -0
  27. package/lib/commonjs/subtle.js +2 -0
  28. package/lib/commonjs/subtle.js.map +1 -1
  29. package/lib/module/dh-groups.js +25 -0
  30. package/lib/module/dh-groups.js.map +1 -0
  31. package/lib/module/diffie-hellman.js +140 -0
  32. package/lib/module/diffie-hellman.js.map +1 -0
  33. package/lib/module/ec.js +65 -178
  34. package/lib/module/ec.js.map +1 -1
  35. package/lib/module/ecdh.js +65 -0
  36. package/lib/module/ecdh.js.map +1 -0
  37. package/lib/module/index.js +6 -0
  38. package/lib/module/index.js.map +1 -1
  39. package/lib/module/keys/generateKeyPair.js.map +1 -1
  40. package/lib/module/keys/index.js +2 -2
  41. package/lib/module/keys/index.js.map +1 -1
  42. package/lib/module/keys/signVerify.js +40 -0
  43. package/lib/module/keys/signVerify.js.map +1 -1
  44. package/lib/module/specs/diffie-hellman.nitro.js +4 -0
  45. package/lib/module/specs/diffie-hellman.nitro.js.map +1 -0
  46. package/lib/module/specs/ecdh.nitro.js +4 -0
  47. package/lib/module/specs/ecdh.nitro.js.map +1 -0
  48. package/lib/module/subtle.js +3 -1
  49. package/lib/module/subtle.js.map +1 -1
  50. package/lib/tsconfig.tsbuildinfo +1 -1
  51. package/lib/typescript/dh-groups.d.ts +5 -0
  52. package/lib/typescript/dh-groups.d.ts.map +1 -0
  53. package/lib/typescript/diffie-hellman.d.ts +16 -0
  54. package/lib/typescript/diffie-hellman.d.ts.map +1 -0
  55. package/lib/typescript/ec.d.ts +2 -1
  56. package/lib/typescript/ec.d.ts.map +1 -1
  57. package/lib/typescript/ecdh.d.ts +16 -0
  58. package/lib/typescript/ecdh.d.ts.map +1 -0
  59. package/lib/typescript/index.d.ts +11 -0
  60. package/lib/typescript/index.d.ts.map +1 -1
  61. package/lib/typescript/keys/generateKeyPair.d.ts.map +1 -1
  62. package/lib/typescript/keys/index.d.ts +2 -2
  63. package/lib/typescript/keys/index.d.ts.map +1 -1
  64. package/lib/typescript/keys/signVerify.d.ts +6 -0
  65. package/lib/typescript/keys/signVerify.d.ts.map +1 -1
  66. package/lib/typescript/specs/diffie-hellman.nitro.d.ts +17 -0
  67. package/lib/typescript/specs/diffie-hellman.nitro.d.ts.map +1 -0
  68. package/lib/typescript/specs/ecdh.nitro.d.ts +14 -0
  69. package/lib/typescript/specs/ecdh.nitro.d.ts.map +1 -0
  70. package/lib/typescript/subtle.d.ts.map +1 -1
  71. package/nitrogen/generated/android/QuickCrypto+autolinking.cmake +2 -0
  72. package/nitrogen/generated/android/QuickCryptoOnLoad.cpp +20 -0
  73. package/nitrogen/generated/ios/QuickCryptoAutolinking.mm +20 -0
  74. package/nitrogen/generated/shared/c++/HybridDiffieHellmanSpec.cpp +30 -0
  75. package/nitrogen/generated/shared/c++/HybridDiffieHellmanSpec.hpp +72 -0
  76. package/nitrogen/generated/shared/c++/HybridECDHSpec.cpp +27 -0
  77. package/nitrogen/generated/shared/c++/HybridECDHSpec.hpp +70 -0
  78. package/package.json +1 -1
  79. package/src/dh-groups.ts +27 -0
  80. package/src/diffie-hellman.ts +191 -0
  81. package/src/ec.ts +73 -177
  82. package/src/ecdh.ts +76 -0
  83. package/src/index.ts +6 -0
  84. package/src/keys/generateKeyPair.ts +11 -2
  85. package/src/keys/index.ts +10 -1
  86. package/src/keys/signVerify.ts +84 -0
  87. package/src/specs/diffie-hellman.nitro.ts +15 -0
  88. package/src/specs/ecdh.nitro.ts +11 -0
  89. package/src/subtle.ts +8 -1
@@ -237,3 +237,87 @@ export function createSign(algorithm: string): Sign {
237
237
  export function createVerify(algorithm: string): Verify {
238
238
  return new Verify(algorithm);
239
239
  }
240
+
241
+ type SignCallback = (err: Error | null, signature?: Buffer) => void;
242
+ type VerifyCallback = (err: Error | null, result?: boolean) => void;
243
+
244
+ export function sign(
245
+ algorithm: string | null | undefined,
246
+ data: BinaryLike,
247
+ key: KeyInput,
248
+ ): Buffer;
249
+ export function sign(
250
+ algorithm: string | null | undefined,
251
+ data: BinaryLike,
252
+ key: KeyInput,
253
+ callback: SignCallback,
254
+ ): void;
255
+ export function sign(
256
+ algorithm: string | null | undefined,
257
+ data: BinaryLike,
258
+ key: KeyInput,
259
+ callback?: SignCallback,
260
+ ): Buffer | void {
261
+ const doSign = (): Buffer => {
262
+ if (key === null || key === undefined) {
263
+ throw new Error('Private key is required');
264
+ }
265
+ const signer = new Sign(algorithm ?? '');
266
+ signer.update(data);
267
+ return signer.sign(key);
268
+ };
269
+
270
+ if (callback) {
271
+ try {
272
+ const signature = doSign();
273
+ process.nextTick(callback, null, signature);
274
+ } catch (err) {
275
+ process.nextTick(callback, err as Error);
276
+ }
277
+ return;
278
+ }
279
+
280
+ return doSign();
281
+ }
282
+
283
+ export function verify(
284
+ algorithm: string | null | undefined,
285
+ data: BinaryLike,
286
+ key: KeyInput,
287
+ signature: BinaryLike,
288
+ ): boolean;
289
+ export function verify(
290
+ algorithm: string | null | undefined,
291
+ data: BinaryLike,
292
+ key: KeyInput,
293
+ signature: BinaryLike,
294
+ callback: VerifyCallback,
295
+ ): void;
296
+ export function verify(
297
+ algorithm: string | null | undefined,
298
+ data: BinaryLike,
299
+ key: KeyInput,
300
+ signature: BinaryLike,
301
+ callback?: VerifyCallback,
302
+ ): boolean | void {
303
+ const doVerify = (): boolean => {
304
+ if (key === null || key === undefined) {
305
+ throw new Error('Key is required');
306
+ }
307
+ const verifier = new Verify(algorithm ?? '');
308
+ verifier.update(data);
309
+ return verifier.verify(key, signature);
310
+ };
311
+
312
+ if (callback) {
313
+ try {
314
+ const result = doVerify();
315
+ process.nextTick(callback, null, result);
316
+ } catch (err) {
317
+ process.nextTick(callback, err as Error);
318
+ }
319
+ return;
320
+ }
321
+
322
+ return doVerify();
323
+ }
@@ -0,0 +1,15 @@
1
+ import type { HybridObject } from 'react-native-nitro-modules';
2
+
3
+ export interface DiffieHellman
4
+ extends HybridObject<{ ios: 'c++'; android: 'c++' }> {
5
+ init(prime: ArrayBuffer, generator: ArrayBuffer): void;
6
+ initWithSize(primeLength: number, generator: number): void;
7
+ generateKeys(): ArrayBuffer;
8
+ computeSecret(otherPublicKey: ArrayBuffer): ArrayBuffer;
9
+ getPrime(): ArrayBuffer;
10
+ getGenerator(): ArrayBuffer;
11
+ getPublicKey(): ArrayBuffer;
12
+ getPrivateKey(): ArrayBuffer;
13
+ setPublicKey(publicKey: ArrayBuffer): void;
14
+ setPrivateKey(privateKey: ArrayBuffer): void;
15
+ }
@@ -0,0 +1,11 @@
1
+ import type { HybridObject } from 'react-native-nitro-modules';
2
+
3
+ export interface ECDH extends HybridObject<{ ios: 'c++'; android: 'c++' }> {
4
+ init(curveName: string): void;
5
+ generateKeys(): ArrayBuffer;
6
+ computeSecret(otherPublicKey: ArrayBuffer): ArrayBuffer;
7
+ getPrivateKey(): ArrayBuffer;
8
+ setPrivateKey(privateKey: ArrayBuffer): void;
9
+ getPublicKey(): ArrayBuffer;
10
+ setPublicKey(publicKey: ArrayBuffer): void;
11
+ }
package/src/subtle.ts CHANGED
@@ -37,7 +37,12 @@ import type { KeyObjectHandle } from './specs/keyObjectHandle.nitro';
37
37
  import type { RsaCipher } from './specs/rsaCipher.nitro';
38
38
  import type { CipherFactory } from './specs/cipher.nitro';
39
39
  import { pbkdf2DeriveBits } from './pbkdf2';
40
- import { ecImportKey, ecdsaSignVerify, ec_generateKeyPair } from './ec';
40
+ import {
41
+ ecImportKey,
42
+ ecdsaSignVerify,
43
+ ec_generateKeyPair,
44
+ ecDeriveBits,
45
+ } from './ec';
41
46
  import { rsa_generateKeyPair } from './rsa';
42
47
  import { getRandomValues } from './random';
43
48
  import { createHmac } from './hmac';
@@ -1559,6 +1564,8 @@ export class Subtle {
1559
1564
  // Fall through
1560
1565
  case 'X448':
1561
1566
  return xDeriveBits(algorithm, baseKey, length);
1567
+ case 'ECDH':
1568
+ return ecDeriveBits(algorithm, baseKey, length);
1562
1569
  case 'HKDF':
1563
1570
  return hkdfDeriveBits(
1564
1571
  algorithm as unknown as HkdfAlgorithm,