react-native-quick-crypto 1.0.0-beta.21 → 1.0.0-beta.22
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 +11 -1
- package/android/CMakeLists.txt +2 -0
- package/cpp/cipher/GCMCipher.cpp +68 -0
- package/cpp/cipher/GCMCipher.hpp +14 -0
- package/cpp/cipher/HybridCipherFactory.hpp +8 -0
- package/cpp/cipher/HybridRsaCipher.cpp +229 -0
- package/cpp/cipher/HybridRsaCipher.hpp +23 -0
- package/cpp/keys/HybridKeyObjectHandle.cpp +508 -9
- package/cpp/keys/HybridKeyObjectHandle.hpp +10 -1
- package/cpp/utils/base64.h +309 -0
- package/lib/commonjs/ec.js +85 -17
- package/lib/commonjs/ec.js.map +1 -1
- package/lib/commonjs/specs/rsaCipher.nitro.js +6 -0
- package/lib/commonjs/specs/rsaCipher.nitro.js.map +1 -0
- package/lib/commonjs/subtle.js +420 -17
- package/lib/commonjs/subtle.js.map +1 -1
- package/lib/commonjs/utils/conversion.js +1 -1
- package/lib/commonjs/utils/conversion.js.map +1 -1
- package/lib/module/ec.js +86 -18
- package/lib/module/ec.js.map +1 -1
- package/lib/module/specs/rsaCipher.nitro.js +4 -0
- package/lib/module/specs/rsaCipher.nitro.js.map +1 -0
- package/lib/module/subtle.js +421 -18
- package/lib/module/subtle.js.map +1 -1
- package/lib/module/utils/conversion.js +1 -1
- package/lib/module/utils/conversion.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/typescript/ec.d.ts.map +1 -1
- package/lib/typescript/specs/keyObjectHandle.nitro.d.ts +1 -0
- package/lib/typescript/specs/keyObjectHandle.nitro.d.ts.map +1 -1
- package/lib/typescript/specs/rsaCipher.nitro.d.ts +26 -0
- package/lib/typescript/specs/rsaCipher.nitro.d.ts.map +1 -0
- package/lib/typescript/subtle.d.ts.map +1 -1
- package/lib/typescript/utils/conversion.d.ts.map +1 -1
- package/lib/typescript/utils/types.d.ts +1 -1
- package/lib/typescript/utils/types.d.ts.map +1 -1
- package/nitrogen/generated/android/QuickCrypto+autolinking.cmake +1 -0
- package/nitrogen/generated/android/QuickCryptoOnLoad.cpp +10 -0
- package/nitrogen/generated/ios/QuickCryptoAutolinking.mm +10 -0
- package/nitrogen/generated/shared/c++/AsymmetricKeyType.hpp +104 -0
- package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.cpp +1 -0
- package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.hpp +5 -4
- package/nitrogen/generated/shared/c++/HybridRsaCipherSpec.cpp +22 -0
- package/nitrogen/generated/shared/c++/HybridRsaCipherSpec.hpp +70 -0
- package/package.json +1 -1
- package/src/ec.ts +122 -20
- package/src/specs/keyObjectHandle.nitro.ts +1 -0
- package/src/specs/rsaCipher.nitro.ts +35 -0
- package/src/subtle.ts +550 -45
- package/src/utils/conversion.ts +3 -1
- package/src/utils/types.ts +6 -6
- package/nitrogen/generated/shared/c++/CFRGKeyPairType.hpp +0 -84
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ec.d.ts","sourceRoot":"","sources":["../../src/ec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"ec.d.ts","sourceRoot":"","sources":["../../src/ec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EACL,SAAS,EAIV,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,QAAQ,EACR,eAAe,EACf,UAAU,EACV,UAAU,EACV,GAAG,EACH,YAAY,EAEb,MAAM,eAAe,CAAC;AAavB,qBAAa,EAAE;IACb,MAAM,EAAE,SAAS,CAAC;gBAEN,KAAK,EAAE,MAAM;IAKnB,eAAe,IAAI,OAAO,CAAC,aAAa,CAAC;IAQ/C,mBAAmB,IAAI,aAAa;CAOrC;AAsDD,wBAAgB,WAAW,CACzB,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,UAAU,GAAG,UAAU,GAAG,GAAG,EACtC,SAAS,EAAE,eAAe,EAC1B,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,QAAQ,EAAE,GACpB,SAAS,CAyKX;AAqGD,eAAO,MAAM,eAAe,GAC1B,KAAK,SAAS,EACd,MAAM,UAAU,EAChB,UAAU,eAAe,EACzB,YAAY,UAAU,KACrB,WAAW,GAAG,OAmDhB,CAAC;AAIF,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,QAAQ,EAAE,EAErB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,aAAa,CAAC,CAiFxB"}
|
|
@@ -8,6 +8,7 @@ export interface KeyObjectHandle extends HybridObject<{
|
|
|
8
8
|
exportJwk(key: JWK, handleRsaPss: boolean): JWK;
|
|
9
9
|
getAsymmetricKeyType(): AsymmetricKeyType;
|
|
10
10
|
init(keyType: KeyType, key: string | ArrayBuffer, format?: KFormatType, type?: KeyEncoding, passphrase?: ArrayBuffer): boolean;
|
|
11
|
+
initECRaw(namedCurve: string, keyData: ArrayBuffer): boolean;
|
|
11
12
|
initJwk(keyData: JWK, namedCurve?: NamedCurve): KeyType | undefined;
|
|
12
13
|
keyDetail(): KeyDetail;
|
|
13
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyObjectHandle.nitro.d.ts","sourceRoot":"","sources":["../../../src/specs/keyObjectHandle.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EACV,iBAAiB,EACjB,GAAG,EACH,SAAS,EACT,WAAW,EACX,OAAO,EACP,WAAW,EACX,UAAU,EACX,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,eACf,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,KAAK,CAAA;CAAE,CAAC;IACpD,SAAS,CACP,MAAM,CAAC,EAAE,WAAW,EACpB,IAAI,CAAC,EAAE,WAAW,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,WAAW,GACvB,WAAW,CAAC;IACf,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,GAAG,GAAG,CAAC;IAChD,oBAAoB,IAAI,iBAAiB,CAAC;IAC1C,IAAI,CACF,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,GAAG,WAAW,EACzB,MAAM,CAAC,EAAE,WAAW,EACpB,IAAI,CAAC,EAAE,WAAW,EAClB,UAAU,CAAC,EAAE,WAAW,GACvB,OAAO,CAAC;IACX,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;IACpE,SAAS,IAAI,SAAS,CAAC;CACxB"}
|
|
1
|
+
{"version":3,"file":"keyObjectHandle.nitro.d.ts","sourceRoot":"","sources":["../../../src/specs/keyObjectHandle.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EACV,iBAAiB,EACjB,GAAG,EACH,SAAS,EACT,WAAW,EACX,OAAO,EACP,WAAW,EACX,UAAU,EACX,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,eACf,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,KAAK,CAAA;CAAE,CAAC;IACpD,SAAS,CACP,MAAM,CAAC,EAAE,WAAW,EACpB,IAAI,CAAC,EAAE,WAAW,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,WAAW,GACvB,WAAW,CAAC;IACf,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,GAAG,GAAG,CAAC;IAChD,oBAAoB,IAAI,iBAAiB,CAAC;IAC1C,IAAI,CACF,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,GAAG,WAAW,EACzB,MAAM,CAAC,EAAE,WAAW,EACpB,IAAI,CAAC,EAAE,WAAW,EAClB,UAAU,CAAC,EAAE,WAAW,GACvB,OAAO,CAAC;IACX,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC;IAC7D,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;IACpE,SAAS,IAAI,SAAS,CAAC;CACxB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { HybridObject } from 'react-native-nitro-modules';
|
|
2
|
+
import type { KeyObjectHandle } from './keyObjectHandle.nitro';
|
|
3
|
+
export interface RsaCipher extends HybridObject<{
|
|
4
|
+
ios: 'c++';
|
|
5
|
+
android: 'c++';
|
|
6
|
+
}> {
|
|
7
|
+
/**
|
|
8
|
+
* Encrypt data using RSA-OAEP
|
|
9
|
+
* @param keyHandle The public key handle
|
|
10
|
+
* @param data The data to encrypt
|
|
11
|
+
* @param hashAlgorithm The hash algorithm (e.g., 'SHA-256')
|
|
12
|
+
* @param label Optional label for OAEP
|
|
13
|
+
* @returns Encrypted data
|
|
14
|
+
*/
|
|
15
|
+
encrypt(keyHandle: KeyObjectHandle, data: ArrayBuffer, hashAlgorithm: string, label?: ArrayBuffer): ArrayBuffer;
|
|
16
|
+
/**
|
|
17
|
+
* Decrypt data using RSA-OAEP
|
|
18
|
+
* @param keyHandle The private key handle
|
|
19
|
+
* @param data The data to decrypt
|
|
20
|
+
* @param hashAlgorithm The hash algorithm (e.g., 'SHA-256')
|
|
21
|
+
* @param label Optional label for OAEP
|
|
22
|
+
* @returns Decrypted data
|
|
23
|
+
*/
|
|
24
|
+
decrypt(keyHandle: KeyObjectHandle, data: ArrayBuffer, hashAlgorithm: string, label?: ArrayBuffer): ArrayBuffer;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=rsaCipher.nitro.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rsaCipher.nitro.d.ts","sourceRoot":"","sources":["../../../src/specs/rsaCipher.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,WAAW,SACf,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,KAAK,CAAA;CAAE,CAAC;IACpD;;;;;;;OAOG;IACH,OAAO,CACL,SAAS,EAAE,eAAe,EAC1B,IAAI,EAAE,WAAW,EACjB,aAAa,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,WAAW,GAClB,WAAW,CAAC;IAEf;;;;;;;OAOG;IACH,OAAO,CACL,SAAS,EAAE,eAAe,EAC1B,IAAI,EAAE,WAAW,EACjB,aAAa,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,WAAW,GAClB,WAAW,CAAC;CAChB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subtle.d.ts","sourceRoot":"","sources":["../../src/subtle.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,QAAQ,EACR,UAAU,EACV,UAAU,EACV,GAAG,EACH,YAAY,EACZ,YAAY,EAEZ,oBAAoB,
|
|
1
|
+
{"version":3,"file":"subtle.d.ts","sourceRoot":"","sources":["../../src/subtle.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,QAAQ,EACR,UAAU,EACV,UAAU,EACV,GAAG,EACH,YAAY,EACZ,YAAY,EAEZ,oBAAoB,EAMrB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,SAAS,EAKV,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AA+xBnD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,GAAG,aAAa,GAChC,MAAM,IAAI,aAAa,CAEzB;AA2DD,qBAAa,MAAM;IACX,OAAO,CACX,SAAS,EAAE,oBAAoB,EAC/B,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,WAAW,CAAC;IAWjB,MAAM,CACV,SAAS,EAAE,eAAe,GAAG,YAAY,EACzC,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,WAAW,CAAC;IAQjB,UAAU,CACd,SAAS,EAAE,eAAe,EAC1B,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC;IAejB,OAAO,CACX,SAAS,EAAE,oBAAoB,EAC/B,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,WAAW,CAAC;IAWjB,SAAS,CACb,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,SAAS,GACb,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC;IAevB,WAAW,CACf,SAAS,EAAE,eAAe,EAC1B,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,QAAQ,EAAE,GACpB,OAAO,CAAC,SAAS,GAAG,aAAa,CAAC;IA6C/B,SAAS,CACb,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,GAAG,EACnC,SAAS,EAAE,eAAe,GAAG,YAAY,EACzC,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,QAAQ,EAAE,GACpB,OAAO,CAAC,SAAS,CAAC;IA+Ef,IAAI,CACR,SAAS,EAAE,eAAe,EAC1B,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,WAAW,CAAC;IAIjB,MAAM,CACV,SAAS,EAAE,eAAe,EAC1B,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,UAAU,EACrB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,WAAW,CAAC;CAGxB;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversion.d.ts","sourceRoot":"","sources":["../../../src/utils/conversion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG/D;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAAI,KAAK,GAAG,gBAQxC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,eAAe,GAAG,UAAU,GAAG,eAAe,GAClD,WAAW,CAiBb;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,UAAU,GAAG,WAAW,CAgCpE;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,cAAc,EAAE,wCAAwC;AAC/D,QAAQ,GAAE,MAAgB,GACzB,WAAW,
|
|
1
|
+
{"version":3,"file":"conversion.d.ts","sourceRoot":"","sources":["../../../src/utils/conversion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG/D;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAAI,KAAK,GAAG,gBAQxC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,eAAe,GAAG,UAAU,GAAG,eAAe,GAClD,WAAW,CAiBb;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,UAAU,GAAG,WAAW,CAgCpE;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,cAAc,EAAE,wCAAwC;AAC/D,QAAQ,GAAE,MAAgB,GACzB,WAAW,CAwDb;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,GAAE,MAAc,UAEhE;AAED,eAAO,MAAM,YAAY,KAAqC,CAAC;AAE/D,cAAc,SAAS,CAAC"}
|
|
@@ -120,7 +120,7 @@ export type KeyPairGenConfig = {
|
|
|
120
120
|
cipher?: string;
|
|
121
121
|
passphrase?: ArrayBuffer;
|
|
122
122
|
};
|
|
123
|
-
export type AsymmetricKeyType = CFRGKeyPairType;
|
|
123
|
+
export type AsymmetricKeyType = 'rsa' | 'rsa-pss' | 'dsa' | 'ec' | 'dh' | CFRGKeyPairType;
|
|
124
124
|
type JWKkty = 'AES' | 'RSA' | 'EC' | 'oct';
|
|
125
125
|
type JWKuse = 'sig' | 'enc';
|
|
126
126
|
export interface JWK {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,6 +37,7 @@ target_sources(
|
|
|
37
37
|
../nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.cpp
|
|
38
38
|
../nitrogen/generated/shared/c++/HybridPbkdf2Spec.cpp
|
|
39
39
|
../nitrogen/generated/shared/c++/HybridRandomSpec.cpp
|
|
40
|
+
../nitrogen/generated/shared/c++/HybridRsaCipherSpec.cpp
|
|
40
41
|
../nitrogen/generated/shared/c++/HybridRsaKeyPairSpec.cpp
|
|
41
42
|
# Android-specific Nitrogen C++ sources
|
|
42
43
|
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
#include "HybridKeyObjectHandle.hpp"
|
|
26
26
|
#include "HybridPbkdf2.hpp"
|
|
27
27
|
#include "HybridRandom.hpp"
|
|
28
|
+
#include "HybridRsaCipher.hpp"
|
|
28
29
|
#include "HybridRsaKeyPair.hpp"
|
|
29
30
|
|
|
30
31
|
namespace margelo::nitro::crypto {
|
|
@@ -129,6 +130,15 @@ int initialize(JavaVM* vm) {
|
|
|
129
130
|
return std::make_shared<HybridRandom>();
|
|
130
131
|
}
|
|
131
132
|
);
|
|
133
|
+
HybridObjectRegistry::registerHybridObjectConstructor(
|
|
134
|
+
"RsaCipher",
|
|
135
|
+
[]() -> std::shared_ptr<HybridObject> {
|
|
136
|
+
static_assert(std::is_default_constructible_v<HybridRsaCipher>,
|
|
137
|
+
"The HybridObject \"HybridRsaCipher\" is not default-constructible! "
|
|
138
|
+
"Create a public constructor that takes zero arguments to be able to autolink this HybridObject.");
|
|
139
|
+
return std::make_shared<HybridRsaCipher>();
|
|
140
|
+
}
|
|
141
|
+
);
|
|
132
142
|
HybridObjectRegistry::registerHybridObjectConstructor(
|
|
133
143
|
"RsaKeyPair",
|
|
134
144
|
[]() -> std::shared_ptr<HybridObject> {
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
#include "HybridKeyObjectHandle.hpp"
|
|
21
21
|
#include "HybridPbkdf2.hpp"
|
|
22
22
|
#include "HybridRandom.hpp"
|
|
23
|
+
#include "HybridRsaCipher.hpp"
|
|
23
24
|
#include "HybridRsaKeyPair.hpp"
|
|
24
25
|
|
|
25
26
|
@interface QuickCryptoAutolinking : NSObject
|
|
@@ -121,6 +122,15 @@
|
|
|
121
122
|
return std::make_shared<HybridRandom>();
|
|
122
123
|
}
|
|
123
124
|
);
|
|
125
|
+
HybridObjectRegistry::registerHybridObjectConstructor(
|
|
126
|
+
"RsaCipher",
|
|
127
|
+
[]() -> std::shared_ptr<HybridObject> {
|
|
128
|
+
static_assert(std::is_default_constructible_v<HybridRsaCipher>,
|
|
129
|
+
"The HybridObject \"HybridRsaCipher\" is not default-constructible! "
|
|
130
|
+
"Create a public constructor that takes zero arguments to be able to autolink this HybridObject.");
|
|
131
|
+
return std::make_shared<HybridRsaCipher>();
|
|
132
|
+
}
|
|
133
|
+
);
|
|
124
134
|
HybridObjectRegistry::registerHybridObjectConstructor(
|
|
125
135
|
"RsaKeyPair",
|
|
126
136
|
[]() -> std::shared_ptr<HybridObject> {
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// AsymmetricKeyType.hpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © 2025 Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#if __has_include(<NitroModules/NitroHash.hpp>)
|
|
11
|
+
#include <NitroModules/NitroHash.hpp>
|
|
12
|
+
#else
|
|
13
|
+
#error NitroModules cannot be found! Are you sure you installed NitroModules properly?
|
|
14
|
+
#endif
|
|
15
|
+
#if __has_include(<NitroModules/JSIConverter.hpp>)
|
|
16
|
+
#include <NitroModules/JSIConverter.hpp>
|
|
17
|
+
#else
|
|
18
|
+
#error NitroModules cannot be found! Are you sure you installed NitroModules properly?
|
|
19
|
+
#endif
|
|
20
|
+
#if __has_include(<NitroModules/NitroDefines.hpp>)
|
|
21
|
+
#include <NitroModules/NitroDefines.hpp>
|
|
22
|
+
#else
|
|
23
|
+
#error NitroModules cannot be found! Are you sure you installed NitroModules properly?
|
|
24
|
+
#endif
|
|
25
|
+
|
|
26
|
+
namespace margelo::nitro::crypto {
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* An enum which can be represented as a JavaScript union (AsymmetricKeyType).
|
|
30
|
+
*/
|
|
31
|
+
enum class AsymmetricKeyType {
|
|
32
|
+
RSA SWIFT_NAME(rsa) = 0,
|
|
33
|
+
RSA_PSS SWIFT_NAME(rsaPss) = 1,
|
|
34
|
+
DSA SWIFT_NAME(dsa) = 2,
|
|
35
|
+
EC SWIFT_NAME(ec) = 3,
|
|
36
|
+
DH SWIFT_NAME(dh) = 4,
|
|
37
|
+
ED25519 SWIFT_NAME(ed25519) = 5,
|
|
38
|
+
ED448 SWIFT_NAME(ed448) = 6,
|
|
39
|
+
X25519 SWIFT_NAME(x25519) = 7,
|
|
40
|
+
X448 SWIFT_NAME(x448) = 8,
|
|
41
|
+
} CLOSED_ENUM;
|
|
42
|
+
|
|
43
|
+
} // namespace margelo::nitro::crypto
|
|
44
|
+
|
|
45
|
+
namespace margelo::nitro {
|
|
46
|
+
|
|
47
|
+
// C++ AsymmetricKeyType <> JS AsymmetricKeyType (union)
|
|
48
|
+
template <>
|
|
49
|
+
struct JSIConverter<margelo::nitro::crypto::AsymmetricKeyType> final {
|
|
50
|
+
static inline margelo::nitro::crypto::AsymmetricKeyType fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
|
|
51
|
+
std::string unionValue = JSIConverter<std::string>::fromJSI(runtime, arg);
|
|
52
|
+
switch (hashString(unionValue.c_str(), unionValue.size())) {
|
|
53
|
+
case hashString("rsa"): return margelo::nitro::crypto::AsymmetricKeyType::RSA;
|
|
54
|
+
case hashString("rsa-pss"): return margelo::nitro::crypto::AsymmetricKeyType::RSA_PSS;
|
|
55
|
+
case hashString("dsa"): return margelo::nitro::crypto::AsymmetricKeyType::DSA;
|
|
56
|
+
case hashString("ec"): return margelo::nitro::crypto::AsymmetricKeyType::EC;
|
|
57
|
+
case hashString("dh"): return margelo::nitro::crypto::AsymmetricKeyType::DH;
|
|
58
|
+
case hashString("ed25519"): return margelo::nitro::crypto::AsymmetricKeyType::ED25519;
|
|
59
|
+
case hashString("ed448"): return margelo::nitro::crypto::AsymmetricKeyType::ED448;
|
|
60
|
+
case hashString("x25519"): return margelo::nitro::crypto::AsymmetricKeyType::X25519;
|
|
61
|
+
case hashString("x448"): return margelo::nitro::crypto::AsymmetricKeyType::X448;
|
|
62
|
+
default: [[unlikely]]
|
|
63
|
+
throw std::invalid_argument("Cannot convert \"" + unionValue + "\" to enum AsymmetricKeyType - invalid value!");
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
static inline jsi::Value toJSI(jsi::Runtime& runtime, margelo::nitro::crypto::AsymmetricKeyType arg) {
|
|
67
|
+
switch (arg) {
|
|
68
|
+
case margelo::nitro::crypto::AsymmetricKeyType::RSA: return JSIConverter<std::string>::toJSI(runtime, "rsa");
|
|
69
|
+
case margelo::nitro::crypto::AsymmetricKeyType::RSA_PSS: return JSIConverter<std::string>::toJSI(runtime, "rsa-pss");
|
|
70
|
+
case margelo::nitro::crypto::AsymmetricKeyType::DSA: return JSIConverter<std::string>::toJSI(runtime, "dsa");
|
|
71
|
+
case margelo::nitro::crypto::AsymmetricKeyType::EC: return JSIConverter<std::string>::toJSI(runtime, "ec");
|
|
72
|
+
case margelo::nitro::crypto::AsymmetricKeyType::DH: return JSIConverter<std::string>::toJSI(runtime, "dh");
|
|
73
|
+
case margelo::nitro::crypto::AsymmetricKeyType::ED25519: return JSIConverter<std::string>::toJSI(runtime, "ed25519");
|
|
74
|
+
case margelo::nitro::crypto::AsymmetricKeyType::ED448: return JSIConverter<std::string>::toJSI(runtime, "ed448");
|
|
75
|
+
case margelo::nitro::crypto::AsymmetricKeyType::X25519: return JSIConverter<std::string>::toJSI(runtime, "x25519");
|
|
76
|
+
case margelo::nitro::crypto::AsymmetricKeyType::X448: return JSIConverter<std::string>::toJSI(runtime, "x448");
|
|
77
|
+
default: [[unlikely]]
|
|
78
|
+
throw std::invalid_argument("Cannot convert AsymmetricKeyType to JS - invalid value: "
|
|
79
|
+
+ std::to_string(static_cast<int>(arg)) + "!");
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
|
|
83
|
+
if (!value.isString()) {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
std::string unionValue = JSIConverter<std::string>::fromJSI(runtime, value);
|
|
87
|
+
switch (hashString(unionValue.c_str(), unionValue.size())) {
|
|
88
|
+
case hashString("rsa"):
|
|
89
|
+
case hashString("rsa-pss"):
|
|
90
|
+
case hashString("dsa"):
|
|
91
|
+
case hashString("ec"):
|
|
92
|
+
case hashString("dh"):
|
|
93
|
+
case hashString("ed25519"):
|
|
94
|
+
case hashString("ed448"):
|
|
95
|
+
case hashString("x25519"):
|
|
96
|
+
case hashString("x448"):
|
|
97
|
+
return true;
|
|
98
|
+
default:
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
} // namespace margelo::nitro
|
|
@@ -18,6 +18,7 @@ namespace margelo::nitro::crypto {
|
|
|
18
18
|
prototype.registerHybridMethod("exportJwk", &HybridKeyObjectHandleSpec::exportJwk);
|
|
19
19
|
prototype.registerHybridMethod("getAsymmetricKeyType", &HybridKeyObjectHandleSpec::getAsymmetricKeyType);
|
|
20
20
|
prototype.registerHybridMethod("init", &HybridKeyObjectHandleSpec::init);
|
|
21
|
+
prototype.registerHybridMethod("initECRaw", &HybridKeyObjectHandleSpec::initECRaw);
|
|
21
22
|
prototype.registerHybridMethod("initJwk", &HybridKeyObjectHandleSpec::initJwk);
|
|
22
23
|
prototype.registerHybridMethod("keyDetail", &HybridKeyObjectHandleSpec::keyDetail);
|
|
23
24
|
});
|
|
@@ -21,8 +21,8 @@ namespace margelo::nitro::crypto { enum class KFormatType; }
|
|
|
21
21
|
namespace margelo::nitro::crypto { enum class KeyEncoding; }
|
|
22
22
|
// Forward declaration of `JWK` to properly resolve imports.
|
|
23
23
|
namespace margelo::nitro::crypto { struct JWK; }
|
|
24
|
-
// Forward declaration of `
|
|
25
|
-
namespace margelo::nitro::crypto { enum class
|
|
24
|
+
// Forward declaration of `AsymmetricKeyType` to properly resolve imports.
|
|
25
|
+
namespace margelo::nitro::crypto { enum class AsymmetricKeyType; }
|
|
26
26
|
// Forward declaration of `KeyType` to properly resolve imports.
|
|
27
27
|
namespace margelo::nitro::crypto { enum class KeyType; }
|
|
28
28
|
// Forward declaration of `NamedCurve` to properly resolve imports.
|
|
@@ -36,7 +36,7 @@ namespace margelo::nitro::crypto { struct KeyDetail; }
|
|
|
36
36
|
#include "KeyEncoding.hpp"
|
|
37
37
|
#include <string>
|
|
38
38
|
#include "JWK.hpp"
|
|
39
|
-
#include "
|
|
39
|
+
#include "AsymmetricKeyType.hpp"
|
|
40
40
|
#include "KeyType.hpp"
|
|
41
41
|
#include <variant>
|
|
42
42
|
#include "NamedCurve.hpp"
|
|
@@ -75,8 +75,9 @@ namespace margelo::nitro::crypto {
|
|
|
75
75
|
// Methods
|
|
76
76
|
virtual std::shared_ptr<ArrayBuffer> exportKey(std::optional<KFormatType> format, std::optional<KeyEncoding> type, const std::optional<std::string>& cipher, const std::optional<std::shared_ptr<ArrayBuffer>>& passphrase) = 0;
|
|
77
77
|
virtual JWK exportJwk(const JWK& key, bool handleRsaPss) = 0;
|
|
78
|
-
virtual
|
|
78
|
+
virtual AsymmetricKeyType getAsymmetricKeyType() = 0;
|
|
79
79
|
virtual bool init(KeyType keyType, const std::variant<std::string, std::shared_ptr<ArrayBuffer>>& key, std::optional<KFormatType> format, std::optional<KeyEncoding> type, const std::optional<std::shared_ptr<ArrayBuffer>>& passphrase) = 0;
|
|
80
|
+
virtual bool initECRaw(const std::string& namedCurve, const std::shared_ptr<ArrayBuffer>& keyData) = 0;
|
|
80
81
|
virtual std::optional<KeyType> initJwk(const JWK& keyData, std::optional<NamedCurve> namedCurve) = 0;
|
|
81
82
|
virtual KeyDetail keyDetail() = 0;
|
|
82
83
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// HybridRsaCipherSpec.cpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © 2025 Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#include "HybridRsaCipherSpec.hpp"
|
|
9
|
+
|
|
10
|
+
namespace margelo::nitro::crypto {
|
|
11
|
+
|
|
12
|
+
void HybridRsaCipherSpec::loadHybridMethods() {
|
|
13
|
+
// load base methods/properties
|
|
14
|
+
HybridObject::loadHybridMethods();
|
|
15
|
+
// load custom methods/properties
|
|
16
|
+
registerHybrids(this, [](Prototype& prototype) {
|
|
17
|
+
prototype.registerHybridMethod("encrypt", &HybridRsaCipherSpec::encrypt);
|
|
18
|
+
prototype.registerHybridMethod("decrypt", &HybridRsaCipherSpec::decrypt);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
} // namespace margelo::nitro::crypto
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// HybridRsaCipherSpec.hpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © 2025 Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#if __has_include(<NitroModules/HybridObject.hpp>)
|
|
11
|
+
#include <NitroModules/HybridObject.hpp>
|
|
12
|
+
#else
|
|
13
|
+
#error NitroModules cannot be found! Are you sure you installed NitroModules properly?
|
|
14
|
+
#endif
|
|
15
|
+
|
|
16
|
+
// Forward declaration of `ArrayBuffer` to properly resolve imports.
|
|
17
|
+
namespace NitroModules { class ArrayBuffer; }
|
|
18
|
+
// Forward declaration of `HybridKeyObjectHandleSpec` to properly resolve imports.
|
|
19
|
+
namespace margelo::nitro::crypto { class HybridKeyObjectHandleSpec; }
|
|
20
|
+
|
|
21
|
+
#include <NitroModules/ArrayBuffer.hpp>
|
|
22
|
+
#include <memory>
|
|
23
|
+
#include "HybridKeyObjectHandleSpec.hpp"
|
|
24
|
+
#include <string>
|
|
25
|
+
#include <optional>
|
|
26
|
+
|
|
27
|
+
namespace margelo::nitro::crypto {
|
|
28
|
+
|
|
29
|
+
using namespace margelo::nitro;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* An abstract base class for `RsaCipher`
|
|
33
|
+
* Inherit this class to create instances of `HybridRsaCipherSpec` in C++.
|
|
34
|
+
* You must explicitly call `HybridObject`'s constructor yourself, because it is virtual.
|
|
35
|
+
* @example
|
|
36
|
+
* ```cpp
|
|
37
|
+
* class HybridRsaCipher: public HybridRsaCipherSpec {
|
|
38
|
+
* public:
|
|
39
|
+
* HybridRsaCipher(...): HybridObject(TAG) { ... }
|
|
40
|
+
* // ...
|
|
41
|
+
* };
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
class HybridRsaCipherSpec: public virtual HybridObject {
|
|
45
|
+
public:
|
|
46
|
+
// Constructor
|
|
47
|
+
explicit HybridRsaCipherSpec(): HybridObject(TAG) { }
|
|
48
|
+
|
|
49
|
+
// Destructor
|
|
50
|
+
~HybridRsaCipherSpec() override = default;
|
|
51
|
+
|
|
52
|
+
public:
|
|
53
|
+
// Properties
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
public:
|
|
57
|
+
// Methods
|
|
58
|
+
virtual std::shared_ptr<ArrayBuffer> encrypt(const std::shared_ptr<HybridKeyObjectHandleSpec>& keyHandle, const std::shared_ptr<ArrayBuffer>& data, const std::string& hashAlgorithm, const std::optional<std::shared_ptr<ArrayBuffer>>& label) = 0;
|
|
59
|
+
virtual std::shared_ptr<ArrayBuffer> decrypt(const std::shared_ptr<HybridKeyObjectHandleSpec>& keyHandle, const std::shared_ptr<ArrayBuffer>& data, const std::string& hashAlgorithm, const std::optional<std::shared_ptr<ArrayBuffer>>& label) = 0;
|
|
60
|
+
|
|
61
|
+
protected:
|
|
62
|
+
// Hybrid Setup
|
|
63
|
+
void loadHybridMethods() override;
|
|
64
|
+
|
|
65
|
+
protected:
|
|
66
|
+
// Tag for logging
|
|
67
|
+
static constexpr auto TAG = "RsaCipher";
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
} // namespace margelo::nitro::crypto
|
package/package.json
CHANGED
package/src/ec.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { NitroModules } from 'react-native-nitro-modules';
|
|
2
2
|
import type { EcKeyPair } from './specs/ecKeyPair.nitro';
|
|
3
|
+
import type { KeyObjectHandle } from './specs/keyObjectHandle.nitro';
|
|
3
4
|
import {
|
|
4
5
|
CryptoKey,
|
|
5
6
|
KeyObject,
|
|
@@ -15,6 +16,7 @@ import type {
|
|
|
15
16
|
BinaryLike,
|
|
16
17
|
JWK,
|
|
17
18
|
ImportFormat,
|
|
19
|
+
NamedCurve,
|
|
18
20
|
} from './utils/types';
|
|
19
21
|
import {
|
|
20
22
|
bufferLikeToArrayBuffer,
|
|
@@ -121,6 +123,83 @@ export function ecImportKey(
|
|
|
121
123
|
throw lazyDOMException('Unrecognized namedCurve', 'NotSupportedError');
|
|
122
124
|
}
|
|
123
125
|
|
|
126
|
+
// Handle JWK format
|
|
127
|
+
if (format === 'jwk') {
|
|
128
|
+
const jwk = keyData as JWK;
|
|
129
|
+
|
|
130
|
+
// Validate JWK
|
|
131
|
+
if (jwk.kty !== 'EC') {
|
|
132
|
+
throw lazyDOMException('Invalid JWK "kty" Parameter', 'DataError');
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if (jwk.crv !== namedCurve) {
|
|
136
|
+
throw lazyDOMException(
|
|
137
|
+
'JWK "crv" does not match the requested algorithm',
|
|
138
|
+
'DataError',
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// Check use parameter if present
|
|
143
|
+
if (jwk.use !== undefined) {
|
|
144
|
+
const expectedUse = name === 'ECDH' ? 'enc' : 'sig';
|
|
145
|
+
if (jwk.use !== expectedUse) {
|
|
146
|
+
throw lazyDOMException('Invalid JWK "use" Parameter', 'DataError');
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// Check alg parameter if present
|
|
151
|
+
if (jwk.alg !== undefined) {
|
|
152
|
+
let expectedAlg: string | undefined;
|
|
153
|
+
|
|
154
|
+
if (name === 'ECDSA') {
|
|
155
|
+
// Map namedCurve to expected ECDSA algorithm
|
|
156
|
+
expectedAlg =
|
|
157
|
+
namedCurve === 'P-256'
|
|
158
|
+
? 'ES256'
|
|
159
|
+
: namedCurve === 'P-384'
|
|
160
|
+
? 'ES384'
|
|
161
|
+
: namedCurve === 'P-521'
|
|
162
|
+
? 'ES512'
|
|
163
|
+
: undefined;
|
|
164
|
+
} else if (name === 'ECDH') {
|
|
165
|
+
// ECDH uses ECDH-ES algorithm
|
|
166
|
+
expectedAlg = 'ECDH-ES';
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
if (expectedAlg && jwk.alg !== expectedAlg) {
|
|
170
|
+
throw lazyDOMException(
|
|
171
|
+
'JWK "alg" does not match the requested algorithm',
|
|
172
|
+
'DataError',
|
|
173
|
+
);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// Import using C++ layer
|
|
178
|
+
const handle =
|
|
179
|
+
NitroModules.createHybridObject<KeyObjectHandle>('KeyObjectHandle');
|
|
180
|
+
const keyType = handle.initJwk(jwk, namedCurve as NamedCurve);
|
|
181
|
+
|
|
182
|
+
if (keyType === undefined) {
|
|
183
|
+
throw lazyDOMException('Invalid JWK', 'DataError');
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// Create the appropriate KeyObject based on type
|
|
187
|
+
let keyObject: KeyObject;
|
|
188
|
+
if (keyType === 1) {
|
|
189
|
+
keyObject = new PublicKeyObject(handle);
|
|
190
|
+
} else if (keyType === 2) {
|
|
191
|
+
keyObject = new PrivateKeyObject(handle);
|
|
192
|
+
} else {
|
|
193
|
+
throw lazyDOMException(
|
|
194
|
+
'Unexpected key type from JWK import',
|
|
195
|
+
'DataError',
|
|
196
|
+
);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
return new CryptoKey(keyObject, algorithm, keyUsages, extractable);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// Handle binary formats (spki, pkcs8, raw)
|
|
124
203
|
if (format !== 'spki' && format !== 'pkcs8' && format !== 'raw') {
|
|
125
204
|
throw lazyDOMException(
|
|
126
205
|
`Unsupported format: ${format}`,
|
|
@@ -128,32 +207,55 @@ export function ecImportKey(
|
|
|
128
207
|
);
|
|
129
208
|
}
|
|
130
209
|
|
|
131
|
-
//
|
|
132
|
-
|
|
133
|
-
|
|
210
|
+
// Determine expected key type based on format
|
|
211
|
+
const expectedKeyType =
|
|
212
|
+
format === 'spki' || format === 'raw' ? 'public' : 'private';
|
|
213
|
+
|
|
214
|
+
// Validate usages for the key type
|
|
215
|
+
const isPublicKey = expectedKeyType === 'public';
|
|
216
|
+
let validUsages: KeyUsage[];
|
|
217
|
+
|
|
218
|
+
if (name === 'ECDSA') {
|
|
219
|
+
validUsages = isPublicKey ? ['verify'] : ['sign'];
|
|
220
|
+
} else if (name === 'ECDH') {
|
|
221
|
+
validUsages = isPublicKey ? [] : ['deriveKey', 'deriveBits'];
|
|
222
|
+
} else {
|
|
223
|
+
throw lazyDOMException('Unsupported algorithm', 'NotSupportedError');
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
if (hasAnyNotIn(keyUsages, validUsages)) {
|
|
227
|
+
throw lazyDOMException(
|
|
228
|
+
`Unsupported key usage for a ${name} key`,
|
|
229
|
+
'SyntaxError',
|
|
230
|
+
);
|
|
134
231
|
}
|
|
135
232
|
|
|
136
233
|
// Convert keyData to ArrayBuffer
|
|
137
234
|
const keyBuffer = bufferLikeToArrayBuffer(keyData as BufferLike);
|
|
138
235
|
|
|
139
|
-
// Create
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
236
|
+
// Create KeyObject directly using the appropriate format
|
|
237
|
+
let keyObject: KeyObject;
|
|
238
|
+
|
|
239
|
+
if (format === 'raw') {
|
|
240
|
+
// Raw format is only for public keys - use specialized EC raw import
|
|
241
|
+
const handle =
|
|
242
|
+
NitroModules.createHybridObject<KeyObjectHandle>('KeyObjectHandle');
|
|
243
|
+
const curveAlias =
|
|
244
|
+
kNamedCurveAliases[namedCurve as keyof typeof kNamedCurveAliases];
|
|
245
|
+
if (!handle.initECRaw(curveAlias, keyBuffer)) {
|
|
246
|
+
throw lazyDOMException('Failed to import EC raw key', 'DataError');
|
|
247
|
+
}
|
|
248
|
+
keyObject = new PublicKeyObject(handle);
|
|
249
|
+
} else {
|
|
250
|
+
// Use standard DER import for spki/pkcs8
|
|
251
|
+
keyObject = KeyObject.createKeyObject(
|
|
252
|
+
expectedKeyType,
|
|
253
|
+
keyBuffer,
|
|
254
|
+
'der',
|
|
255
|
+
format as 'spki' | 'pkcs8',
|
|
256
|
+
);
|
|
257
|
+
}
|
|
155
258
|
|
|
156
|
-
// Create and return CryptoKey
|
|
157
259
|
return new CryptoKey(keyObject, algorithm, keyUsages, extractable);
|
|
158
260
|
// // // verifyAcceptableEcKeyUse(name, true, usagesSet);
|
|
159
261
|
// // try {
|
|
@@ -26,6 +26,7 @@ export interface KeyObjectHandle
|
|
|
26
26
|
type?: KeyEncoding,
|
|
27
27
|
passphrase?: ArrayBuffer,
|
|
28
28
|
): boolean;
|
|
29
|
+
initECRaw(namedCurve: string, keyData: ArrayBuffer): boolean;
|
|
29
30
|
initJwk(keyData: JWK, namedCurve?: NamedCurve): KeyType | undefined;
|
|
30
31
|
keyDetail(): KeyDetail;
|
|
31
32
|
}
|