react-native-quick-crypto 1.0.10 → 1.0.11
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/CMakeLists.txt +9 -0
- package/cpp/argon2/HybridArgon2.cpp +103 -0
- package/cpp/argon2/HybridArgon2.hpp +32 -0
- package/cpp/certificate/HybridCertificate.cpp +42 -0
- package/cpp/certificate/HybridCertificate.hpp +16 -0
- package/cpp/cipher/HybridCipher.cpp +58 -0
- package/cpp/cipher/HybridCipher.hpp +4 -0
- package/cpp/dh/HybridDhKeyPair.cpp +179 -0
- package/cpp/dh/HybridDhKeyPair.hpp +37 -0
- package/cpp/dsa/HybridDsaKeyPair.cpp +128 -0
- package/cpp/dsa/HybridDsaKeyPair.hpp +32 -0
- package/cpp/ecdh/HybridECDH.cpp +35 -0
- package/cpp/ecdh/HybridECDH.hpp +1 -0
- package/cpp/keys/HybridKeyObjectHandle.cpp +19 -0
- package/cpp/prime/HybridPrime.cpp +81 -0
- package/cpp/prime/HybridPrime.hpp +20 -0
- package/lib/commonjs/argon2.js +39 -0
- package/lib/commonjs/argon2.js.map +1 -0
- package/lib/commonjs/certificate.js +35 -0
- package/lib/commonjs/certificate.js.map +1 -0
- package/lib/commonjs/cipher.js +8 -0
- package/lib/commonjs/cipher.js.map +1 -1
- package/lib/commonjs/dhKeyPair.js +109 -0
- package/lib/commonjs/dhKeyPair.js.map +1 -0
- package/lib/commonjs/dsa.js +92 -0
- package/lib/commonjs/dsa.js.map +1 -0
- package/lib/commonjs/ecdh.js +37 -0
- package/lib/commonjs/ecdh.js.map +1 -1
- package/lib/commonjs/index.js +35 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/keys/classes.js +9 -7
- package/lib/commonjs/keys/classes.js.map +1 -1
- package/lib/commonjs/keys/generateKeyPair.js +11 -0
- package/lib/commonjs/keys/generateKeyPair.js.map +1 -1
- package/lib/commonjs/prime.js +84 -0
- package/lib/commonjs/prime.js.map +1 -0
- package/lib/commonjs/specs/argon2.nitro.js +6 -0
- package/lib/commonjs/specs/argon2.nitro.js.map +1 -0
- package/lib/commonjs/specs/certificate.nitro.js +6 -0
- package/lib/commonjs/specs/certificate.nitro.js.map +1 -0
- package/lib/commonjs/specs/dhKeyPair.nitro.js +6 -0
- package/lib/commonjs/specs/dhKeyPair.nitro.js.map +1 -0
- package/lib/commonjs/specs/dsaKeyPair.nitro.js +6 -0
- package/lib/commonjs/specs/dsaKeyPair.nitro.js.map +1 -0
- package/lib/commonjs/specs/prime.nitro.js +6 -0
- package/lib/commonjs/specs/prime.nitro.js.map +1 -0
- package/lib/commonjs/subtle.js +101 -10
- package/lib/commonjs/subtle.js.map +1 -1
- package/lib/commonjs/utils/types.js.map +1 -1
- package/lib/module/argon2.js +34 -0
- package/lib/module/argon2.js.map +1 -0
- package/lib/module/certificate.js +30 -0
- package/lib/module/certificate.js.map +1 -0
- package/lib/module/cipher.js +7 -0
- package/lib/module/cipher.js.map +1 -1
- package/lib/module/dhKeyPair.js +102 -0
- package/lib/module/dhKeyPair.js.map +1 -0
- package/lib/module/dsa.js +85 -0
- package/lib/module/dsa.js.map +1 -0
- package/lib/module/ecdh.js +37 -0
- package/lib/module/ecdh.js.map +1 -1
- package/lib/module/index.js +9 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/keys/classes.js +9 -7
- package/lib/module/keys/classes.js.map +1 -1
- package/lib/module/keys/generateKeyPair.js +11 -0
- package/lib/module/keys/generateKeyPair.js.map +1 -1
- package/lib/module/prime.js +77 -0
- package/lib/module/prime.js.map +1 -0
- package/lib/module/specs/argon2.nitro.js +4 -0
- package/lib/module/specs/argon2.nitro.js.map +1 -0
- package/lib/module/specs/certificate.nitro.js +4 -0
- package/lib/module/specs/certificate.nitro.js.map +1 -0
- package/lib/module/specs/dhKeyPair.nitro.js +4 -0
- package/lib/module/specs/dhKeyPair.nitro.js.map +1 -0
- package/lib/module/specs/dsaKeyPair.nitro.js +4 -0
- package/lib/module/specs/dsaKeyPair.nitro.js.map +1 -0
- package/lib/module/specs/prime.nitro.js +4 -0
- package/lib/module/specs/prime.nitro.js.map +1 -0
- package/lib/module/subtle.js +102 -12
- package/lib/module/subtle.js.map +1 -1
- package/lib/module/utils/types.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/typescript/argon2.d.ts +16 -0
- package/lib/typescript/argon2.d.ts.map +1 -0
- package/lib/typescript/certificate.d.ts +8 -0
- package/lib/typescript/certificate.d.ts.map +1 -0
- package/lib/typescript/cipher.d.ts +12 -0
- package/lib/typescript/cipher.d.ts.map +1 -1
- package/lib/typescript/dhKeyPair.d.ts +19 -0
- package/lib/typescript/dhKeyPair.d.ts.map +1 -0
- package/lib/typescript/dsa.d.ts +19 -0
- package/lib/typescript/dsa.d.ts.map +1 -0
- package/lib/typescript/ecdh.d.ts +3 -0
- package/lib/typescript/ecdh.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +17 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/keys/classes.d.ts +2 -0
- package/lib/typescript/keys/classes.d.ts.map +1 -1
- package/lib/typescript/keys/generateKeyPair.d.ts.map +1 -1
- package/lib/typescript/prime.d.ts +19 -0
- package/lib/typescript/prime.d.ts.map +1 -0
- package/lib/typescript/specs/argon2.nitro.d.ts +9 -0
- package/lib/typescript/specs/argon2.nitro.d.ts.map +1 -0
- package/lib/typescript/specs/certificate.nitro.d.ts +10 -0
- package/lib/typescript/specs/certificate.nitro.d.ts.map +1 -0
- package/lib/typescript/specs/cipher.nitro.d.ts +9 -0
- package/lib/typescript/specs/cipher.nitro.d.ts.map +1 -1
- package/lib/typescript/specs/dhKeyPair.nitro.d.ts +14 -0
- package/lib/typescript/specs/dhKeyPair.nitro.d.ts.map +1 -0
- package/lib/typescript/specs/dsaKeyPair.nitro.d.ts +13 -0
- package/lib/typescript/specs/dsaKeyPair.nitro.d.ts.map +1 -0
- package/lib/typescript/specs/ecdh.nitro.d.ts +1 -0
- package/lib/typescript/specs/ecdh.nitro.d.ts.map +1 -1
- package/lib/typescript/specs/prime.nitro.d.ts +11 -0
- package/lib/typescript/specs/prime.nitro.d.ts.map +1 -0
- package/lib/typescript/subtle.d.ts +2 -0
- package/lib/typescript/subtle.d.ts.map +1 -1
- package/lib/typescript/utils/types.d.ts +13 -3
- package/lib/typescript/utils/types.d.ts.map +1 -1
- package/nitrogen/generated/android/QuickCrypto+autolinking.cmake +5 -0
- package/nitrogen/generated/android/QuickCryptoOnLoad.cpp +50 -0
- package/nitrogen/generated/ios/QuickCryptoAutolinking.mm +50 -0
- package/nitrogen/generated/shared/c++/CipherInfo.hpp +104 -0
- package/nitrogen/generated/shared/c++/HybridArgon2Spec.cpp +22 -0
- package/nitrogen/generated/shared/c++/HybridArgon2Spec.hpp +66 -0
- package/nitrogen/generated/shared/c++/HybridCertificateSpec.cpp +23 -0
- package/nitrogen/generated/shared/c++/HybridCertificateSpec.hpp +64 -0
- package/nitrogen/generated/shared/c++/HybridCipherSpec.cpp +1 -0
- package/nitrogen/generated/shared/c++/HybridCipherSpec.hpp +4 -0
- package/nitrogen/generated/shared/c++/HybridDhKeyPairSpec.cpp +27 -0
- package/nitrogen/generated/shared/c++/HybridDhKeyPairSpec.hpp +69 -0
- package/nitrogen/generated/shared/c++/HybridDsaKeyPairSpec.cpp +26 -0
- package/nitrogen/generated/shared/c++/HybridDsaKeyPairSpec.hpp +68 -0
- package/nitrogen/generated/shared/c++/HybridECDHSpec.cpp +1 -0
- package/nitrogen/generated/shared/c++/HybridECDHSpec.hpp +1 -0
- package/nitrogen/generated/shared/c++/HybridPrimeSpec.cpp +24 -0
- package/nitrogen/generated/shared/c++/HybridPrimeSpec.hpp +67 -0
- package/package.json +1 -1
- package/src/argon2.ts +83 -0
- package/src/certificate.ts +41 -0
- package/src/cipher.ts +24 -0
- package/src/dhKeyPair.ts +156 -0
- package/src/dsa.ts +129 -0
- package/src/ecdh.ts +59 -0
- package/src/index.ts +9 -0
- package/src/keys/classes.ts +16 -5
- package/src/keys/generateKeyPair.ts +14 -0
- package/src/prime.ts +134 -0
- package/src/specs/argon2.nitro.ts +29 -0
- package/src/specs/certificate.nitro.ts +8 -0
- package/src/specs/cipher.nitro.ts +14 -0
- package/src/specs/dhKeyPair.nitro.ts +14 -0
- package/src/specs/dsaKeyPair.nitro.ts +13 -0
- package/src/specs/ecdh.nitro.ts +1 -0
- package/src/specs/prime.nitro.ts +18 -0
- package/src/subtle.ts +271 -12
- package/src/utils/types.ts +22 -3
package/lib/module/ecdh.js
CHANGED
|
@@ -2,7 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
import { NitroModules } from 'react-native-nitro-modules';
|
|
4
4
|
import { Buffer } from '@craftzdog/react-native-buffer';
|
|
5
|
+
const POINT_CONVERSION_COMPRESSED = 2;
|
|
6
|
+
const POINT_CONVERSION_UNCOMPRESSED = 4;
|
|
7
|
+
const POINT_CONVERSION_HYBRID = 6;
|
|
5
8
|
export class ECDH {
|
|
9
|
+
static get convertKeyHybrid() {
|
|
10
|
+
if (!this._convertKeyHybrid) {
|
|
11
|
+
this._convertKeyHybrid = NitroModules.createHybridObject('ECDH');
|
|
12
|
+
}
|
|
13
|
+
return this._convertKeyHybrid;
|
|
14
|
+
}
|
|
6
15
|
constructor(curveName) {
|
|
7
16
|
this._hybrid = NitroModules.createHybridObject('ECDH');
|
|
8
17
|
this._hybrid.init(curveName);
|
|
@@ -58,6 +67,34 @@ export class ECDH {
|
|
|
58
67
|
}
|
|
59
68
|
this._hybrid.setPublicKey(keyBuf.buffer);
|
|
60
69
|
}
|
|
70
|
+
static convertKey(key, curve, inputEncoding, outputEncoding, format) {
|
|
71
|
+
let keyBuf;
|
|
72
|
+
if (Buffer.isBuffer(key)) {
|
|
73
|
+
keyBuf = key;
|
|
74
|
+
} else {
|
|
75
|
+
keyBuf = Buffer.from(key, inputEncoding);
|
|
76
|
+
}
|
|
77
|
+
let formatNum;
|
|
78
|
+
switch (format) {
|
|
79
|
+
case 'compressed':
|
|
80
|
+
formatNum = POINT_CONVERSION_COMPRESSED;
|
|
81
|
+
break;
|
|
82
|
+
case 'hybrid':
|
|
83
|
+
formatNum = POINT_CONVERSION_HYBRID;
|
|
84
|
+
break;
|
|
85
|
+
case 'uncompressed':
|
|
86
|
+
case undefined:
|
|
87
|
+
formatNum = POINT_CONVERSION_UNCOMPRESSED;
|
|
88
|
+
break;
|
|
89
|
+
default:
|
|
90
|
+
throw new TypeError(`Invalid point conversion format: ${format}`);
|
|
91
|
+
}
|
|
92
|
+
const result = Buffer.from(ECDH.convertKeyHybrid.convertKey(keyBuf.buffer, curve, formatNum));
|
|
93
|
+
if (outputEncoding) {
|
|
94
|
+
return result.toString(outputEncoding);
|
|
95
|
+
}
|
|
96
|
+
return result;
|
|
97
|
+
}
|
|
61
98
|
}
|
|
62
99
|
export function createECDH(curveName) {
|
|
63
100
|
return new ECDH(curveName);
|
package/lib/module/ecdh.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NitroModules","Buffer","ECDH","constructor","curveName","_hybrid","
|
|
1
|
+
{"version":3,"names":["NitroModules","Buffer","POINT_CONVERSION_COMPRESSED","POINT_CONVERSION_UNCOMPRESSED","POINT_CONVERSION_HYBRID","ECDH","convertKeyHybrid","_convertKeyHybrid","createHybridObject","constructor","curveName","_hybrid","init","generateKeys","key","from","computeSecret","otherPublicKey","inputEncoding","keyBuf","isBuffer","TypeError","secret","buffer","getPrivateKey","setPrivateKey","privateKey","encoding","getPublicKey","pub","toString","setPublicKey","publicKey","convertKey","curve","outputEncoding","format","formatNum","undefined","result","createECDH"],"sourceRoot":"../../src","sources":["ecdh.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import { Buffer } from '@craftzdog/react-native-buffer';
|
|
5
5
|
|
|
6
6
|
// API imports
|
|
7
|
+
import * as argon2Module from './argon2';
|
|
7
8
|
import * as keys from './keys';
|
|
8
9
|
import * as blake3 from './blake3';
|
|
9
10
|
import * as cipher from './cipher';
|
|
@@ -12,10 +13,12 @@ import { hashExports as hash } from './hash';
|
|
|
12
13
|
import { hmacExports as hmac } from './hmac';
|
|
13
14
|
import * as hkdf from './hkdf';
|
|
14
15
|
import * as pbkdf2 from './pbkdf2';
|
|
16
|
+
import * as prime from './prime';
|
|
15
17
|
import * as scrypt from './scrypt';
|
|
16
18
|
import * as random from './random';
|
|
17
19
|
import * as ecdh from './ecdh';
|
|
18
20
|
import * as dh from './diffie-hellman';
|
|
21
|
+
import { Certificate } from './certificate';
|
|
19
22
|
import { getCurves } from './ec';
|
|
20
23
|
import { constants } from './constants';
|
|
21
24
|
|
|
@@ -28,6 +31,7 @@ import * as subtle from './subtle';
|
|
|
28
31
|
* See `docs/implementation-coverage.md` for status.
|
|
29
32
|
*/
|
|
30
33
|
const QuickCrypto = {
|
|
34
|
+
...argon2Module,
|
|
31
35
|
...keys,
|
|
32
36
|
...blake3,
|
|
33
37
|
...cipher,
|
|
@@ -36,12 +40,14 @@ const QuickCrypto = {
|
|
|
36
40
|
...hmac,
|
|
37
41
|
...hkdf,
|
|
38
42
|
...pbkdf2,
|
|
43
|
+
...prime,
|
|
39
44
|
...scrypt,
|
|
40
45
|
...random,
|
|
41
46
|
...ecdh,
|
|
42
47
|
...dh,
|
|
43
48
|
...utils,
|
|
44
49
|
...subtle,
|
|
50
|
+
Certificate,
|
|
45
51
|
getCurves,
|
|
46
52
|
constants,
|
|
47
53
|
Buffer
|
|
@@ -74,7 +80,9 @@ if (global.process.nextTick == null) {
|
|
|
74
80
|
|
|
75
81
|
// exports
|
|
76
82
|
export default QuickCrypto;
|
|
83
|
+
export * from './argon2';
|
|
77
84
|
export * from './blake3';
|
|
85
|
+
export { Certificate } from './certificate';
|
|
78
86
|
export * from './cipher';
|
|
79
87
|
export * from './ed';
|
|
80
88
|
export * from './keys';
|
|
@@ -82,6 +90,7 @@ export * from './hash';
|
|
|
82
90
|
export * from './hmac';
|
|
83
91
|
export * from './hkdf';
|
|
84
92
|
export * from './pbkdf2';
|
|
93
|
+
export * from './prime';
|
|
85
94
|
export * from './scrypt';
|
|
86
95
|
export * from './random';
|
|
87
96
|
export * from './ecdh';
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Buffer","keys","blake3","cipher","ed","hashExports","hash","hmacExports","hmac","hkdf","pbkdf2","scrypt","random","ecdh","dh","getCurves","constants","utils","subtle","QuickCrypto","install","global","crypto","require","process","nextTick","setImmediate","isCryptoKeyPair","module","exports","default"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA,SAASA,MAAM,QAAQ,gCAAgC;;AAEvD;AACA,OAAO,KAAKC,IAAI,MAAM,QAAQ;AAC9B,OAAO,KAAKC,MAAM,MAAM,UAAU;AAClC,OAAO,KAAKC,MAAM,MAAM,UAAU;AAClC,OAAO,KAAKC,EAAE,MAAM,MAAM;AAC1B,SAASC,WAAW,IAAIC,IAAI,QAAQ,QAAQ;AAC5C,SAASC,WAAW,IAAIC,IAAI,QAAQ,QAAQ;AAC5C,OAAO,KAAKC,IAAI,MAAM,QAAQ;AAC9B,OAAO,KAAKC,MAAM,MAAM,UAAU;AAClC,OAAO,KAAKC,MAAM,MAAM,UAAU;AAClC,OAAO,KAAKC,MAAM,MAAM,UAAU;AAClC,OAAO,KAAKC,IAAI,MAAM,QAAQ;AAC9B,OAAO,KAAKC,EAAE,MAAM,kBAAkB;AACtC,SAASC,SAAS,QAAQ,MAAM;AAChC,SAASC,SAAS,QAAQ,aAAa;;AAEvC;AACA,OAAO,KAAKC,KAAK,MAAM,SAAS;AAChC,OAAO,KAAKC,MAAM,MAAM,UAAU;;AAElC;AACA;AACA;AACA;AACA,MAAMC,WAAW,GAAG;EAClB,
|
|
1
|
+
{"version":3,"names":["Buffer","argon2Module","keys","blake3","cipher","ed","hashExports","hash","hmacExports","hmac","hkdf","pbkdf2","prime","scrypt","random","ecdh","dh","Certificate","getCurves","constants","utils","subtle","QuickCrypto","install","global","crypto","require","process","nextTick","setImmediate","isCryptoKeyPair","module","exports","default"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA,SAASA,MAAM,QAAQ,gCAAgC;;AAEvD;AACA,OAAO,KAAKC,YAAY,MAAM,UAAU;AACxC,OAAO,KAAKC,IAAI,MAAM,QAAQ;AAC9B,OAAO,KAAKC,MAAM,MAAM,UAAU;AAClC,OAAO,KAAKC,MAAM,MAAM,UAAU;AAClC,OAAO,KAAKC,EAAE,MAAM,MAAM;AAC1B,SAASC,WAAW,IAAIC,IAAI,QAAQ,QAAQ;AAC5C,SAASC,WAAW,IAAIC,IAAI,QAAQ,QAAQ;AAC5C,OAAO,KAAKC,IAAI,MAAM,QAAQ;AAC9B,OAAO,KAAKC,MAAM,MAAM,UAAU;AAClC,OAAO,KAAKC,KAAK,MAAM,SAAS;AAChC,OAAO,KAAKC,MAAM,MAAM,UAAU;AAClC,OAAO,KAAKC,MAAM,MAAM,UAAU;AAClC,OAAO,KAAKC,IAAI,MAAM,QAAQ;AAC9B,OAAO,KAAKC,EAAE,MAAM,kBAAkB;AACtC,SAASC,WAAW,QAAQ,eAAe;AAC3C,SAASC,SAAS,QAAQ,MAAM;AAChC,SAASC,SAAS,QAAQ,aAAa;;AAEvC;AACA,OAAO,KAAKC,KAAK,MAAM,SAAS;AAChC,OAAO,KAAKC,MAAM,MAAM,UAAU;;AAElC;AACA;AACA;AACA;AACA,MAAMC,WAAW,GAAG;EAClB,GAAGrB,YAAY;EACf,GAAGC,IAAI;EACP,GAAGC,MAAM;EACT,GAAGC,MAAM;EACT,GAAGC,EAAE;EACL,GAAGE,IAAI;EACP,GAAGE,IAAI;EACP,GAAGC,IAAI;EACP,GAAGC,MAAM;EACT,GAAGC,KAAK;EACR,GAAGC,MAAM;EACT,GAAGC,MAAM;EACT,GAAGC,IAAI;EACP,GAAGC,EAAE;EACL,GAAGI,KAAK;EACR,GAAGC,MAAM;EACTJ,WAAW;EACXC,SAAS;EACTC,SAAS;EACTnB;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,MAAMuB,OAAO,GAAGA,CAAA,KAAM;EAC3B;EACAC,MAAM,CAACxB,MAAM,GAAGA,MAAM;;EAEtB;EACAwB,MAAM,CAACC,MAAM,GAAGH,WAAW;;EAE3B;EACA;EACAI,OAAO,CAAC,2BAA2B,CAAC;AACtC,CAAC;;AAED;AACA,IAAIF,MAAM,CAACG,OAAO,IAAI,IAAI,EAAE;EAC1B;EACAH,MAAM,CAACG,OAAO,GAAG,CAAC,CAAC;AACrB;AACA,IAAIH,MAAM,CAACG,OAAO,CAACC,QAAQ,IAAI,IAAI,EAAE;EACnCJ,MAAM,CAACG,OAAO,CAACC,QAAQ,GAAGC,YAAY;AACxC;;AAEA;AACA,eAAeP,WAAW;AAC1B,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,SAASL,WAAW,QAAQ,eAAe;AAC3C,cAAc,UAAU;AACxB,cAAc,MAAM;AACpB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,SAASC,SAAS,QAAQ,MAAM;AAChC,cAAc,kBAAkB;AAChC,cAAc,SAAS;AACvB,cAAc,UAAU;AACxB,SAASG,MAAM,EAAES,eAAe,QAAQ,UAAU;AAClD,SAASX,SAAS,QAAQ,aAAa;AACvC,SAASnB,MAAM,QAAQ,gCAAgC;;AAEvD;AACA+B,MAAM,CAACC,OAAO,GAAGV,WAAW;AAC5BS,MAAM,CAACC,OAAO,CAACC,OAAO,GAAGX,WAAW;AACpCS,MAAM,CAACC,OAAO,CAACT,OAAO,GAAGA,OAAO","ignoreList":[]}
|
|
@@ -88,13 +88,15 @@ export class KeyObject {
|
|
|
88
88
|
}
|
|
89
89
|
this.type = type;
|
|
90
90
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
91
|
+
static from(key) {
|
|
92
|
+
if (!(key instanceof CryptoKey)) {
|
|
93
|
+
throw new TypeError(`The "key" argument must be an instance of CryptoKey. Received ${typeof key}`);
|
|
94
|
+
}
|
|
95
|
+
return key.keyObject;
|
|
96
|
+
}
|
|
97
|
+
toCryptoKey(algorithm, extractable, keyUsages) {
|
|
98
|
+
return new CryptoKey(this, algorithm, keyUsages, extractable);
|
|
99
|
+
}
|
|
98
100
|
static createKeyObject(type, key, format, encoding) {
|
|
99
101
|
if (type !== 'secret' && type !== 'public' && type !== 'private') throw new Error(`invalid KeyObject type: ${type}`);
|
|
100
102
|
const handle = NitroModules.createHybridObject('KeyObjectHandle');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Buffer","NitroModules","KeyType","parsePrivateKeyEncoding","parsePublicKeyEncoding","CryptoKey","Symbol","toStringTag","constructor","keyObject","keyAlgorithm","keyUsages","keyExtractable","inspect","_depth","_options","Error","type","extractable","algorithm","usages","KeyObject","export","equals","otherKeyObject","TypeError","handle","keyEquals","handleOrKey","ArrayBuffer","createHybridObject","keyType","PUBLIC","PRIVATE","SECRET","init","
|
|
1
|
+
{"version":3,"names":["Buffer","NitroModules","KeyType","parsePrivateKeyEncoding","parsePublicKeyEncoding","CryptoKey","Symbol","toStringTag","constructor","keyObject","keyAlgorithm","keyUsages","keyExtractable","inspect","_depth","_options","Error","type","extractable","algorithm","usages","KeyObject","export","equals","otherKeyObject","TypeError","handle","keyEquals","handleOrKey","ArrayBuffer","createHybridObject","keyType","PUBLIC","PRIVATE","SECRET","init","from","key","toCryptoKey","createKeyObject","format","encoding","undefined","getAsymmetricKeyType","PublicKeyObject","PrivateKeyObject","SecretKeyObject","getAsymmetricKeyDetails","symmetricKeySize","getSymmetricKeySize","options","exportKey","AsymmetricKeyObject","asymmetricKeyType","_asymmetricKeyType","asymmetricKeyDetails","_asymmetricKeyDetails","keyDetail","namedCurve","buffer","toString","passphrase","cipher"],"sourceRoot":"../../../src","sources":["keys/classes.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
import { ed_generateKeyPair } from '../ed';
|
|
4
4
|
import { rsa_generateKeyPairNode, rsa_generateKeyPairNodeSync } from '../rsa';
|
|
5
5
|
import { ec_generateKeyPairNode, ec_generateKeyPairNodeSync } from '../ec';
|
|
6
|
+
import { dsa_generateKeyPairNode, dsa_generateKeyPairNodeSync } from '../dsa';
|
|
7
|
+
import { dh_generateKeyPairNode, dh_generateKeyPairNodeSync } from '../dhKeyPair';
|
|
6
8
|
import { kEmptyObject, validateFunction } from '../utils';
|
|
7
9
|
import { parsePrivateKeyEncoding, parsePublicKeyEncoding } from './utils';
|
|
8
10
|
export const generateKeyPair = (type, options, callback) => {
|
|
@@ -89,6 +91,7 @@ function internalGenerateKeyPair(isAsync, type, options, callback) {
|
|
|
89
91
|
case 'rsa-pss':
|
|
90
92
|
case 'dsa':
|
|
91
93
|
case 'ec':
|
|
94
|
+
case 'dh':
|
|
92
95
|
break;
|
|
93
96
|
default:
|
|
94
97
|
{
|
|
@@ -108,6 +111,10 @@ function internalGenerateKeyPair(isAsync, type, options, callback) {
|
|
|
108
111
|
result = await rsa_generateKeyPairNode(type, options, encoding);
|
|
109
112
|
} else if (type === 'ec') {
|
|
110
113
|
result = await ec_generateKeyPairNode(options, encoding);
|
|
114
|
+
} else if (type === 'dsa') {
|
|
115
|
+
result = await dsa_generateKeyPairNode(options, encoding);
|
|
116
|
+
} else if (type === 'dh') {
|
|
117
|
+
result = await dh_generateKeyPairNode(options, encoding);
|
|
111
118
|
} else {
|
|
112
119
|
throw new Error(`Unsupported key type: ${type}`);
|
|
113
120
|
}
|
|
@@ -128,6 +135,10 @@ function internalGenerateKeyPair(isAsync, type, options, callback) {
|
|
|
128
135
|
result = rsa_generateKeyPairNodeSync(type, options, encoding);
|
|
129
136
|
} else if (type === 'ec') {
|
|
130
137
|
result = ec_generateKeyPairNodeSync(options, encoding);
|
|
138
|
+
} else if (type === 'dsa') {
|
|
139
|
+
result = dsa_generateKeyPairNodeSync(options, encoding);
|
|
140
|
+
} else if (type === 'dh') {
|
|
141
|
+
result = dh_generateKeyPairNodeSync(options, encoding);
|
|
131
142
|
} else {
|
|
132
143
|
throw new Error(`Unsupported key type: ${type}`);
|
|
133
144
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ed_generateKeyPair","rsa_generateKeyPairNode","rsa_generateKeyPairNodeSync","ec_generateKeyPairNode","ec_generateKeyPairNodeSync","kEmptyObject","validateFunction","parsePrivateKeyEncoding","parsePublicKeyEncoding","generateKeyPair","type","options","callback","internalGenerateKeyPair","generateKeyPairPromise","Promise","resolve","reject","err","publicKey","privateKey","undefined","generateKeyPairSync","parseKeyPairEncoding","keyType","publicKeyEncoding","privateKeyEncoding","publicFormat","publicType","format","Error","privateFormat","privateType","cipher","passphrase","isAsync","encoding","impl","result","error","then"],"sourceRoot":"../../../src","sources":["keys/generateKeyPair.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["ed_generateKeyPair","rsa_generateKeyPairNode","rsa_generateKeyPairNodeSync","ec_generateKeyPairNode","ec_generateKeyPairNodeSync","dsa_generateKeyPairNode","dsa_generateKeyPairNodeSync","dh_generateKeyPairNode","dh_generateKeyPairNodeSync","kEmptyObject","validateFunction","parsePrivateKeyEncoding","parsePublicKeyEncoding","generateKeyPair","type","options","callback","internalGenerateKeyPair","generateKeyPairPromise","Promise","resolve","reject","err","publicKey","privateKey","undefined","generateKeyPairSync","parseKeyPairEncoding","keyType","publicKeyEncoding","privateKeyEncoding","publicFormat","publicType","format","Error","privateFormat","privateType","cipher","passphrase","isAsync","encoding","impl","result","error","then"],"sourceRoot":"../../../src","sources":["keys/generateKeyPair.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { NitroModules } from 'react-native-nitro-modules';
|
|
4
|
+
import { Buffer } from '@craftzdog/react-native-buffer';
|
|
5
|
+
import { binaryLikeToArrayBuffer } from './utils';
|
|
6
|
+
let native;
|
|
7
|
+
function getNative() {
|
|
8
|
+
if (native == null) {
|
|
9
|
+
native = NitroModules.createHybridObject('Prime');
|
|
10
|
+
}
|
|
11
|
+
return native;
|
|
12
|
+
}
|
|
13
|
+
function toOptionalArrayBuffer(value) {
|
|
14
|
+
if (value == null) return undefined;
|
|
15
|
+
if (value instanceof ArrayBuffer) return value;
|
|
16
|
+
return binaryLikeToArrayBuffer(value);
|
|
17
|
+
}
|
|
18
|
+
function bufferToBigInt(buf) {
|
|
19
|
+
let result = 0n;
|
|
20
|
+
for (let i = 0; i < buf.length; i++) {
|
|
21
|
+
result = result << 8n | BigInt(buf[i]);
|
|
22
|
+
}
|
|
23
|
+
return result;
|
|
24
|
+
}
|
|
25
|
+
function bigIntToBuffer(value) {
|
|
26
|
+
if (value === 0n) return new Uint8Array([0]).buffer;
|
|
27
|
+
const hex = value.toString(16);
|
|
28
|
+
const paddedHex = hex.length % 2 ? '0' + hex : hex;
|
|
29
|
+
const bytes = new Uint8Array(paddedHex.length / 2);
|
|
30
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
31
|
+
bytes[i] = parseInt(paddedHex.substring(i * 2, i * 2 + 2), 16);
|
|
32
|
+
}
|
|
33
|
+
return bytes.buffer;
|
|
34
|
+
}
|
|
35
|
+
export function generatePrimeSync(size, options) {
|
|
36
|
+
const safe = options?.safe ?? false;
|
|
37
|
+
const add = toOptionalArrayBuffer(options?.add);
|
|
38
|
+
const rem = toOptionalArrayBuffer(options?.rem);
|
|
39
|
+
const result = Buffer.from(getNative().generatePrimeSync(size, safe, add, rem));
|
|
40
|
+
if (options?.bigint) {
|
|
41
|
+
return bufferToBigInt(result);
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
export function generatePrime(size, options, callback) {
|
|
46
|
+
if (typeof options === 'function') {
|
|
47
|
+
callback = options;
|
|
48
|
+
options = {};
|
|
49
|
+
}
|
|
50
|
+
const safe = options?.safe ?? false;
|
|
51
|
+
const add = toOptionalArrayBuffer(options?.add);
|
|
52
|
+
const rem = toOptionalArrayBuffer(options?.rem);
|
|
53
|
+
const wantBigint = options?.bigint ?? false;
|
|
54
|
+
getNative().generatePrime(size, safe, add, rem).then(ab => {
|
|
55
|
+
const result = Buffer.from(ab);
|
|
56
|
+
if (wantBigint) {
|
|
57
|
+
callback?.(null, bufferToBigInt(result));
|
|
58
|
+
} else {
|
|
59
|
+
callback?.(null, result);
|
|
60
|
+
}
|
|
61
|
+
}).catch(err => callback?.(err, Buffer.alloc(0)));
|
|
62
|
+
}
|
|
63
|
+
export function checkPrimeSync(candidate, options) {
|
|
64
|
+
const checks = options?.checks ?? 0;
|
|
65
|
+
const buf = typeof candidate === 'bigint' ? bigIntToBuffer(candidate) : binaryLikeToArrayBuffer(candidate);
|
|
66
|
+
return getNative().checkPrimeSync(buf, checks);
|
|
67
|
+
}
|
|
68
|
+
export function checkPrime(candidate, options, callback) {
|
|
69
|
+
if (typeof options === 'function') {
|
|
70
|
+
callback = options;
|
|
71
|
+
options = {};
|
|
72
|
+
}
|
|
73
|
+
const checks = options.checks ?? 0;
|
|
74
|
+
const buf = typeof candidate === 'bigint' ? bigIntToBuffer(candidate) : binaryLikeToArrayBuffer(candidate);
|
|
75
|
+
getNative().checkPrime(buf, checks).then(result => callback?.(null, result)).catch(err => callback?.(err, false));
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=prime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["NitroModules","Buffer","binaryLikeToArrayBuffer","native","getNative","createHybridObject","toOptionalArrayBuffer","value","undefined","ArrayBuffer","bufferToBigInt","buf","result","i","length","BigInt","bigIntToBuffer","Uint8Array","buffer","hex","toString","paddedHex","bytes","parseInt","substring","generatePrimeSync","size","options","safe","add","rem","from","bigint","generatePrime","callback","wantBigint","then","ab","catch","err","alloc","checkPrimeSync","candidate","checks","checkPrime"],"sourceRoot":"../../src","sources":["prime.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["specs/argon2.nitro.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["specs/certificate.nitro.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["specs/dhKeyPair.nitro.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["specs/dsaKeyPair.nitro.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["specs/prime.nitro.ts"],"mappings":"","ignoreList":[]}
|
package/lib/module/subtle.js
CHANGED
|
@@ -5,11 +5,12 @@ import { Buffer as SBuffer } from 'safe-buffer';
|
|
|
5
5
|
import { KFormatType, KeyEncoding, KeyType } from './utils';
|
|
6
6
|
import { CryptoKey, KeyObject, PublicKeyObject, PrivateKeyObject, SecretKeyObject } from './keys';
|
|
7
7
|
import { bufferLikeToArrayBuffer } from './utils/conversion';
|
|
8
|
+
import { argon2Sync } from './argon2';
|
|
8
9
|
import { lazyDOMException } from './utils/errors';
|
|
9
10
|
import { normalizeHashName, HashContext } from './utils/hashnames';
|
|
10
11
|
import { validateMaxBufferLength } from './utils/validation';
|
|
11
12
|
import { asyncDigest } from './hash';
|
|
12
|
-
import { createSecretKey } from './keys';
|
|
13
|
+
import { createSecretKey, createPublicKey } from './keys';
|
|
13
14
|
import { NitroModules } from 'react-native-nitro-modules';
|
|
14
15
|
import { pbkdf2DeriveBits } from './pbkdf2';
|
|
15
16
|
import { ecImportKey, ecdsaSignVerify, ec_generateKeyPair, ecDeriveBits } from './ec';
|
|
@@ -20,12 +21,6 @@ import { createSign, createVerify } from './keys/signVerify';
|
|
|
20
21
|
import { ed_generateKeyPairWebCrypto, x_generateKeyPairWebCrypto, xDeriveBits, Ed } from './ed';
|
|
21
22
|
import { mldsa_generateKeyPairWebCrypto } from './mldsa';
|
|
22
23
|
import { hkdfDeriveBits } from './hkdf';
|
|
23
|
-
// import { pbkdf2DeriveBits } from './pbkdf2';
|
|
24
|
-
// import { aesCipher, aesGenerateKey, aesImportKey, getAlgorithmName } from './aes';
|
|
25
|
-
// import { rsaCipher, rsaExportKey, rsaImportKey, rsaKeyGenerate } from './rsa';
|
|
26
|
-
// import { normalizeAlgorithm, type Operation } from './algorithms';
|
|
27
|
-
// import { hmacImportKey } from './mac';
|
|
28
|
-
|
|
29
24
|
// Temporary enums that need to be defined
|
|
30
25
|
var KWebCryptoKeyFormat = /*#__PURE__*/function (KWebCryptoKeyFormat) {
|
|
31
26
|
KWebCryptoKeyFormat[KWebCryptoKeyFormat["kWebCryptoKeyFormatRaw"] = 0] = "kWebCryptoKeyFormatRaw";
|
|
@@ -71,15 +66,15 @@ function getAlgorithmName(name, length) {
|
|
|
71
66
|
// Placeholder implementations for missing functions
|
|
72
67
|
function ecExportKey(key, format) {
|
|
73
68
|
const keyObject = key.keyObject;
|
|
74
|
-
if (format === KWebCryptoKeyFormat.
|
|
75
|
-
|
|
69
|
+
if (format === KWebCryptoKeyFormat.kWebCryptoKeyFormatRaw) {
|
|
70
|
+
return bufferLikeToArrayBuffer(keyObject.handle.exportKey());
|
|
71
|
+
} else if (format === KWebCryptoKeyFormat.kWebCryptoKeyFormatSPKI) {
|
|
76
72
|
const exported = keyObject.export({
|
|
77
73
|
format: 'der',
|
|
78
74
|
type: 'spki'
|
|
79
75
|
});
|
|
80
76
|
return bufferLikeToArrayBuffer(exported);
|
|
81
77
|
} else if (format === KWebCryptoKeyFormat.kWebCryptoKeyFormatPKCS8) {
|
|
82
|
-
// Export private key in PKCS8 format
|
|
83
78
|
const exported = keyObject.export({
|
|
84
79
|
format: 'der',
|
|
85
80
|
type: 'pkcs8'
|
|
@@ -984,6 +979,37 @@ const checkCryptoKeyPairUsages = pair => {
|
|
|
984
979
|
}
|
|
985
980
|
throw lazyDOMException('Usages cannot be empty when creating a key.', 'SyntaxError');
|
|
986
981
|
};
|
|
982
|
+
function argon2DeriveBits(algorithm, baseKey, length) {
|
|
983
|
+
if (length === 0 || length % 8 !== 0) {
|
|
984
|
+
throw lazyDOMException('Invalid Argon2 derived key length', 'OperationError');
|
|
985
|
+
}
|
|
986
|
+
if (length < 32) {
|
|
987
|
+
throw lazyDOMException('Argon2 derived key length must be at least 32 bits', 'OperationError');
|
|
988
|
+
}
|
|
989
|
+
const {
|
|
990
|
+
nonce,
|
|
991
|
+
parallelism,
|
|
992
|
+
memory,
|
|
993
|
+
passes,
|
|
994
|
+
secretValue,
|
|
995
|
+
associatedData
|
|
996
|
+
} = algorithm;
|
|
997
|
+
const tagLength = length / 8;
|
|
998
|
+
const message = baseKey.keyObject.export();
|
|
999
|
+
const algName = algorithm.name.toLowerCase();
|
|
1000
|
+
const result = argon2Sync(algName, {
|
|
1001
|
+
message,
|
|
1002
|
+
nonce: nonce ?? new Uint8Array(0),
|
|
1003
|
+
parallelism: parallelism ?? 1,
|
|
1004
|
+
tagLength,
|
|
1005
|
+
memory: memory ?? 65536,
|
|
1006
|
+
passes: passes ?? 3,
|
|
1007
|
+
secret: secretValue,
|
|
1008
|
+
associatedData,
|
|
1009
|
+
version: algorithm.version
|
|
1010
|
+
});
|
|
1011
|
+
return bufferLikeToArrayBuffer(result);
|
|
1012
|
+
}
|
|
987
1013
|
|
|
988
1014
|
// Type guard to check if result is CryptoKeyPair
|
|
989
1015
|
export function isCryptoKeyPair(result) {
|
|
@@ -1145,7 +1171,49 @@ const cipherOrWrap = async (mode, algorithm, key, data, op) => {
|
|
|
1145
1171
|
return chaCha20Poly1305Cipher(mode, key, data, algorithm);
|
|
1146
1172
|
}
|
|
1147
1173
|
};
|
|
1174
|
+
const SUPPORTED_ALGORITHMS = {
|
|
1175
|
+
encrypt: new Set(['RSA-OAEP', 'AES-CTR', 'AES-CBC', 'AES-GCM', 'AES-OCB', 'ChaCha20-Poly1305']),
|
|
1176
|
+
decrypt: new Set(['RSA-OAEP', 'AES-CTR', 'AES-CBC', 'AES-GCM', 'AES-OCB', 'ChaCha20-Poly1305']),
|
|
1177
|
+
sign: new Set(['RSASSA-PKCS1-v1_5', 'RSA-PSS', 'ECDSA', 'HMAC', 'Ed25519', 'Ed448', 'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87']),
|
|
1178
|
+
verify: new Set(['RSASSA-PKCS1-v1_5', 'RSA-PSS', 'ECDSA', 'HMAC', 'Ed25519', 'Ed448', 'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87']),
|
|
1179
|
+
digest: new Set(['SHA-1', 'SHA-256', 'SHA-384', 'SHA-512']),
|
|
1180
|
+
generateKey: new Set(['RSASSA-PKCS1-v1_5', 'RSA-PSS', 'RSA-OAEP', 'ECDSA', 'ECDH', 'Ed25519', 'Ed448', 'X25519', 'X448', 'AES-CTR', 'AES-CBC', 'AES-GCM', 'AES-KW', 'AES-OCB', 'ChaCha20-Poly1305', 'HMAC', 'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87']),
|
|
1181
|
+
importKey: new Set(['RSASSA-PKCS1-v1_5', 'RSA-PSS', 'RSA-OAEP', 'ECDSA', 'ECDH', 'Ed25519', 'Ed448', 'X25519', 'X448', 'AES-CTR', 'AES-CBC', 'AES-GCM', 'AES-KW', 'AES-OCB', 'ChaCha20-Poly1305', 'HMAC', 'HKDF', 'PBKDF2', 'Argon2d', 'Argon2i', 'Argon2id', 'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87']),
|
|
1182
|
+
exportKey: new Set(['RSASSA-PKCS1-v1_5', 'RSA-PSS', 'RSA-OAEP', 'ECDSA', 'ECDH', 'Ed25519', 'Ed448', 'X25519', 'X448', 'AES-CTR', 'AES-CBC', 'AES-GCM', 'AES-KW', 'AES-OCB', 'ChaCha20-Poly1305', 'HMAC', 'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87']),
|
|
1183
|
+
deriveBits: new Set(['PBKDF2', 'HKDF', 'ECDH', 'X25519', 'X448', 'Argon2d', 'Argon2i', 'Argon2id']),
|
|
1184
|
+
wrapKey: new Set(['AES-CTR', 'AES-CBC', 'AES-GCM', 'AES-KW', 'AES-OCB', 'ChaCha20-Poly1305', 'RSA-OAEP']),
|
|
1185
|
+
unwrapKey: new Set(['AES-CTR', 'AES-CBC', 'AES-GCM', 'AES-KW', 'AES-OCB', 'ChaCha20-Poly1305', 'RSA-OAEP'])
|
|
1186
|
+
};
|
|
1187
|
+
const ASYMMETRIC_ALGORITHMS = new Set(['RSASSA-PKCS1-v1_5', 'RSA-PSS', 'RSA-OAEP', 'ECDSA', 'ECDH', 'Ed25519', 'Ed448', 'X25519', 'X448', 'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87']);
|
|
1148
1188
|
export class Subtle {
|
|
1189
|
+
static supports(operation, algorithm, _lengthOrAdditionalAlgorithm) {
|
|
1190
|
+
let normalizedAlgorithm;
|
|
1191
|
+
try {
|
|
1192
|
+
normalizedAlgorithm = normalizeAlgorithm(algorithm, operation === 'getPublicKey' ? 'exportKey' : operation);
|
|
1193
|
+
} catch {
|
|
1194
|
+
return false;
|
|
1195
|
+
}
|
|
1196
|
+
const name = normalizedAlgorithm.name;
|
|
1197
|
+
if (operation === 'getPublicKey') {
|
|
1198
|
+
return ASYMMETRIC_ALGORITHMS.has(name);
|
|
1199
|
+
}
|
|
1200
|
+
if (operation === 'deriveKey') {
|
|
1201
|
+
// deriveKey decomposes to deriveBits + importKey of additional algorithm
|
|
1202
|
+
if (!SUPPORTED_ALGORITHMS.deriveBits?.has(name)) return false;
|
|
1203
|
+
if (_lengthOrAdditionalAlgorithm != null) {
|
|
1204
|
+
try {
|
|
1205
|
+
const additionalAlg = normalizeAlgorithm(_lengthOrAdditionalAlgorithm, 'importKey');
|
|
1206
|
+
return SUPPORTED_ALGORITHMS.importKey?.has(additionalAlg.name) ?? false;
|
|
1207
|
+
} catch {
|
|
1208
|
+
return false;
|
|
1209
|
+
}
|
|
1210
|
+
}
|
|
1211
|
+
return true;
|
|
1212
|
+
}
|
|
1213
|
+
const supported = SUPPORTED_ALGORITHMS[operation];
|
|
1214
|
+
if (!supported) return false;
|
|
1215
|
+
return supported.has(name);
|
|
1216
|
+
}
|
|
1149
1217
|
async decrypt(algorithm, key, data) {
|
|
1150
1218
|
const normalizedAlgorithm = normalizeAlgorithm(algorithm, 'decrypt');
|
|
1151
1219
|
return cipherOrWrap(CipherOrWrapMode.kWebCryptoCipherDecrypt, normalizedAlgorithm, key, bufferLikeToArrayBuffer(data), 'decrypt');
|
|
@@ -1171,6 +1239,10 @@ export class Subtle {
|
|
|
1171
1239
|
return ecDeriveBits(algorithm, baseKey, length);
|
|
1172
1240
|
case 'HKDF':
|
|
1173
1241
|
return hkdfDeriveBits(algorithm, baseKey, length);
|
|
1242
|
+
case 'Argon2d':
|
|
1243
|
+
case 'Argon2i':
|
|
1244
|
+
case 'Argon2id':
|
|
1245
|
+
return argon2DeriveBits(algorithm, baseKey, length);
|
|
1174
1246
|
}
|
|
1175
1247
|
throw new Error(`'subtle.deriveBits()' for ${algorithm.name} is not implemented.`);
|
|
1176
1248
|
}
|
|
@@ -1201,6 +1273,11 @@ export class Subtle {
|
|
|
1201
1273
|
case 'HKDF':
|
|
1202
1274
|
derivedBits = hkdfDeriveBits(algorithm, baseKey, length);
|
|
1203
1275
|
break;
|
|
1276
|
+
case 'Argon2d':
|
|
1277
|
+
case 'Argon2i':
|
|
1278
|
+
case 'Argon2id':
|
|
1279
|
+
derivedBits = argon2DeriveBits(algorithm, baseKey, length);
|
|
1280
|
+
break;
|
|
1204
1281
|
default:
|
|
1205
1282
|
throw new Error(`'subtle.deriveKey()' for ${algorithm.name} is not implemented.`);
|
|
1206
1283
|
}
|
|
@@ -1214,7 +1291,7 @@ export class Subtle {
|
|
|
1214
1291
|
}
|
|
1215
1292
|
async exportKey(format, key) {
|
|
1216
1293
|
if (!key.extractable) throw new Error('key is not extractable');
|
|
1217
|
-
if (format === 'raw-secret') format = 'raw';
|
|
1294
|
+
if (format === 'raw-secret' || format === 'raw-public') format = 'raw';
|
|
1218
1295
|
switch (format) {
|
|
1219
1296
|
case 'spki':
|
|
1220
1297
|
return await exportKeySpki(key);
|
|
@@ -1365,8 +1442,18 @@ export class Subtle {
|
|
|
1365
1442
|
}
|
|
1366
1443
|
return result;
|
|
1367
1444
|
}
|
|
1445
|
+
async getPublicKey(key, keyUsages) {
|
|
1446
|
+
if (key.type === 'secret') {
|
|
1447
|
+
throw lazyDOMException('key must be a private key', 'NotSupportedError');
|
|
1448
|
+
}
|
|
1449
|
+
if (key.type !== 'private') {
|
|
1450
|
+
throw lazyDOMException('key must be a private key', 'InvalidAccessError');
|
|
1451
|
+
}
|
|
1452
|
+
const publicKeyObject = createPublicKey(key.keyObject);
|
|
1453
|
+
return publicKeyObject.toCryptoKey(key.algorithm, true, keyUsages);
|
|
1454
|
+
}
|
|
1368
1455
|
async importKey(format, data, algorithm, extractable, keyUsages) {
|
|
1369
|
-
if (format === 'raw-secret') format = 'raw';
|
|
1456
|
+
if (format === 'raw-secret' || format === 'raw-public') format = 'raw';
|
|
1370
1457
|
const normalizedAlgorithm = normalizeAlgorithm(algorithm, 'importKey');
|
|
1371
1458
|
let result;
|
|
1372
1459
|
switch (normalizedAlgorithm.name) {
|
|
@@ -1399,6 +1486,9 @@ export class Subtle {
|
|
|
1399
1486
|
result = await aesImportKey(normalizedAlgorithm, format, data, extractable, keyUsages);
|
|
1400
1487
|
break;
|
|
1401
1488
|
case 'PBKDF2':
|
|
1489
|
+
case 'Argon2d':
|
|
1490
|
+
case 'Argon2i':
|
|
1491
|
+
case 'Argon2id':
|
|
1402
1492
|
result = await importGenericSecretKey(normalizedAlgorithm, format, data, extractable, keyUsages);
|
|
1403
1493
|
break;
|
|
1404
1494
|
case 'HKDF':
|