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.
- package/QuickCrypto.podspec +3 -0
- package/android/CMakeLists.txt +4 -0
- package/cpp/dh/HybridDiffieHellman.cpp +438 -0
- package/cpp/dh/HybridDiffieHellman.hpp +41 -0
- package/cpp/ecdh/HybridECDH.cpp +306 -0
- package/cpp/ecdh/HybridECDH.hpp +42 -0
- package/cpp/utils/QuickCryptoUtils.hpp +14 -0
- package/lib/commonjs/dh-groups.js +29 -0
- package/lib/commonjs/dh-groups.js.map +1 -0
- package/lib/commonjs/diffie-hellman.js +147 -0
- package/lib/commonjs/diffie-hellman.js.map +1 -0
- package/lib/commonjs/ec.js +68 -180
- package/lib/commonjs/ec.js.map +1 -1
- package/lib/commonjs/ecdh.js +71 -0
- package/lib/commonjs/ecdh.js.map +1 -0
- package/lib/commonjs/index.js +26 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/keys/generateKeyPair.js.map +1 -1
- package/lib/commonjs/keys/index.js +12 -0
- package/lib/commonjs/keys/index.js.map +1 -1
- package/lib/commonjs/keys/signVerify.js +42 -0
- package/lib/commonjs/keys/signVerify.js.map +1 -1
- package/lib/commonjs/specs/diffie-hellman.nitro.js +6 -0
- package/lib/commonjs/specs/diffie-hellman.nitro.js.map +1 -0
- package/lib/commonjs/specs/ecdh.nitro.js +6 -0
- package/lib/commonjs/specs/ecdh.nitro.js.map +1 -0
- package/lib/commonjs/subtle.js +2 -0
- package/lib/commonjs/subtle.js.map +1 -1
- package/lib/module/dh-groups.js +25 -0
- package/lib/module/dh-groups.js.map +1 -0
- package/lib/module/diffie-hellman.js +140 -0
- package/lib/module/diffie-hellman.js.map +1 -0
- package/lib/module/ec.js +65 -178
- package/lib/module/ec.js.map +1 -1
- package/lib/module/ecdh.js +65 -0
- package/lib/module/ecdh.js.map +1 -0
- package/lib/module/index.js +6 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/keys/generateKeyPair.js.map +1 -1
- package/lib/module/keys/index.js +2 -2
- package/lib/module/keys/index.js.map +1 -1
- package/lib/module/keys/signVerify.js +40 -0
- package/lib/module/keys/signVerify.js.map +1 -1
- package/lib/module/specs/diffie-hellman.nitro.js +4 -0
- package/lib/module/specs/diffie-hellman.nitro.js.map +1 -0
- package/lib/module/specs/ecdh.nitro.js +4 -0
- package/lib/module/specs/ecdh.nitro.js.map +1 -0
- package/lib/module/subtle.js +3 -1
- package/lib/module/subtle.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/typescript/dh-groups.d.ts +5 -0
- package/lib/typescript/dh-groups.d.ts.map +1 -0
- package/lib/typescript/diffie-hellman.d.ts +16 -0
- package/lib/typescript/diffie-hellman.d.ts.map +1 -0
- package/lib/typescript/ec.d.ts +2 -1
- package/lib/typescript/ec.d.ts.map +1 -1
- package/lib/typescript/ecdh.d.ts +16 -0
- package/lib/typescript/ecdh.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +11 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/keys/generateKeyPair.d.ts.map +1 -1
- package/lib/typescript/keys/index.d.ts +2 -2
- package/lib/typescript/keys/index.d.ts.map +1 -1
- package/lib/typescript/keys/signVerify.d.ts +6 -0
- package/lib/typescript/keys/signVerify.d.ts.map +1 -1
- package/lib/typescript/specs/diffie-hellman.nitro.d.ts +17 -0
- package/lib/typescript/specs/diffie-hellman.nitro.d.ts.map +1 -0
- package/lib/typescript/specs/ecdh.nitro.d.ts +14 -0
- package/lib/typescript/specs/ecdh.nitro.d.ts.map +1 -0
- package/lib/typescript/subtle.d.ts.map +1 -1
- package/nitrogen/generated/android/QuickCrypto+autolinking.cmake +2 -0
- package/nitrogen/generated/android/QuickCryptoOnLoad.cpp +20 -0
- package/nitrogen/generated/ios/QuickCryptoAutolinking.mm +20 -0
- package/nitrogen/generated/shared/c++/HybridDiffieHellmanSpec.cpp +30 -0
- package/nitrogen/generated/shared/c++/HybridDiffieHellmanSpec.hpp +72 -0
- package/nitrogen/generated/shared/c++/HybridECDHSpec.cpp +27 -0
- package/nitrogen/generated/shared/c++/HybridECDHSpec.hpp +70 -0
- package/package.json +1 -1
- package/src/dh-groups.ts +27 -0
- package/src/diffie-hellman.ts +191 -0
- package/src/ec.ts +73 -177
- package/src/ecdh.ts +76 -0
- package/src/index.ts +6 -0
- package/src/keys/generateKeyPair.ts +11 -2
- package/src/keys/index.ts +10 -1
- package/src/keys/signVerify.ts +84 -0
- package/src/specs/diffie-hellman.nitro.ts +15 -0
- package/src/specs/ecdh.nitro.ts +11 -0
- package/src/subtle.ts +8 -1
package/src/keys/signVerify.ts
CHANGED
|
@@ -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 {
|
|
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,
|