react-native-quick-crypto 0.7.3 → 1.0.0-beta.2
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 +34 -0
- package/README.md +13 -46
- package/android/CMakeLists.txt +32 -64
- package/android/build.gradle +52 -125
- package/android/gradle.properties +4 -4
- package/android/src/main/cpp/cpp-adapter.cpp +9 -54
- package/android/src/main/java/com/margelo/nitro/quickcrypto/QuickCryptoPackage.java +38 -0
- package/cpp/random/HybridRandom.cpp +34 -0
- package/cpp/random/HybridRandom.hpp +44 -0
- package/cpp/utils/Utils.hpp +9 -0
- package/ios/QuickCryptoOnLoad.mm +19 -0
- package/lib/commonjs/index.js +39 -39
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/random.js +26 -12
- package/lib/commonjs/random.js.map +1 -1
- package/lib/commonjs/{NativeQuickCrypto/rsa.js → specs/random.nitro.js} +1 -1
- package/lib/commonjs/{NativeQuickCrypto/aes.js.map → specs/random.nitro.js.map} +1 -1
- package/lib/commonjs/utils/conversion.js +22 -0
- package/lib/commonjs/utils/conversion.js.map +1 -0
- package/lib/commonjs/utils/index.js +12 -0
- package/lib/commonjs/utils/index.js.map +1 -0
- package/lib/commonjs/utils/types.js +2 -0
- package/lib/{module/NativeQuickCrypto/aes.js.map → commonjs/utils/types.js.map} +1 -1
- package/lib/module/index.js +38 -38
- package/lib/module/index.js.map +1 -1
- package/lib/module/random.js +26 -12
- package/lib/module/random.js.map +1 -1
- package/lib/module/specs/random.nitro.js +4 -0
- package/lib/module/{NativeQuickCrypto/rsa.js.map → specs/random.nitro.js.map} +1 -1
- package/lib/module/utils/conversion.js +16 -0
- package/lib/module/utils/conversion.js.map +1 -0
- package/lib/module/utils/index.js +8 -0
- package/lib/module/utils/index.js.map +1 -0
- package/lib/module/utils/types.js +2 -0
- package/lib/{commonjs/NativeQuickCrypto/rsa.js.map → module/utils/types.js.map} +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/lib/typescript/index.d.ts +10 -141
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/random.d.ts +4 -5
- package/lib/typescript/random.d.ts.map +1 -1
- package/lib/typescript/specs/random.nitro.d.ts +9 -0
- package/lib/typescript/specs/random.nitro.d.ts.map +1 -0
- package/lib/typescript/utils/conversion.d.ts +4 -0
- package/lib/typescript/utils/conversion.d.ts.map +1 -0
- package/lib/typescript/utils/index.d.ts +6 -0
- package/lib/typescript/utils/index.d.ts.map +1 -0
- package/lib/typescript/utils/types.d.ts +5 -0
- package/lib/typescript/utils/types.d.ts.map +1 -0
- package/nitrogen/generated/android/QuickCrypto+autolinking.cmake +45 -0
- package/nitrogen/generated/android/QuickCrypto+autolinking.gradle +26 -0
- package/nitrogen/generated/ios/QuickCrypto+autolinking.rb +57 -0
- package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Bridge.cpp +9 -0
- package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Bridge.hpp +25 -0
- package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Umbrella.hpp +29 -0
- package/nitrogen/generated/shared/c++/HybridRandomSpec.cpp +23 -0
- package/nitrogen/generated/shared/c++/HybridRandomSpec.hpp +62 -0
- package/package.json +50 -106
- package/src/index.ts +38 -48
- package/src/random.ts +51 -48
- package/src/specs/random.nitro.ts +14 -0
- package/src/utils/conversion.ts +16 -0
- package/src/utils/index.ts +6 -0
- package/src/utils/types.ts +15 -0
- package/LICENSE +0 -27
- package/android/src/main/java/com/margelo/quickcrypto/QuickCryptoModule.java +0 -70
- package/android/src/main/java/com/margelo/quickcrypto/QuickCryptoPackage.java +0 -25
- package/cpp/Cipher/MGLCipherHostObject.cpp +0 -663
- package/cpp/Cipher/MGLCipherHostObject.h +0 -90
- package/cpp/Cipher/MGLCreateCipherInstaller.cpp +0 -75
- package/cpp/Cipher/MGLCreateCipherInstaller.h +0 -22
- package/cpp/Cipher/MGLCreateDecipherInstaller.cpp +0 -77
- package/cpp/Cipher/MGLCreateDecipherInstaller.h +0 -17
- package/cpp/Cipher/MGLGenerateKeyPairInstaller.cpp +0 -134
- package/cpp/Cipher/MGLGenerateKeyPairInstaller.h +0 -35
- package/cpp/Cipher/MGLGenerateKeyPairSyncInstaller.cpp +0 -63
- package/cpp/Cipher/MGLGenerateKeyPairSyncInstaller.h +0 -37
- package/cpp/Cipher/MGLPublicCipher.h +0 -124
- package/cpp/Cipher/MGLPublicCipherInstaller.h +0 -107
- package/cpp/Cipher/MGLRsa.cpp +0 -573
- package/cpp/Cipher/MGLRsa.h +0 -109
- package/cpp/HMAC/MGLHmacHostObject.cpp +0 -95
- package/cpp/HMAC/MGLHmacHostObject.h +0 -39
- package/cpp/HMAC/MGLHmacInstaller.cpp +0 -43
- package/cpp/HMAC/MGLHmacInstaller.h +0 -20
- package/cpp/Hash/MGLHashHostObject.cpp +0 -147
- package/cpp/Hash/MGLHashHostObject.h +0 -53
- package/cpp/Hash/MGLHashInstaller.cpp +0 -44
- package/cpp/Hash/MGLHashInstaller.h +0 -20
- package/cpp/JSIUtils/MGLJSIMacros.h +0 -110
- package/cpp/JSIUtils/MGLJSIUtils.h +0 -41
- package/cpp/JSIUtils/MGLSmartHostObject.cpp +0 -43
- package/cpp/JSIUtils/MGLSmartHostObject.h +0 -46
- package/cpp/JSIUtils/MGLThreadAwareHostObject.cpp +0 -24
- package/cpp/JSIUtils/MGLThreadAwareHostObject.h +0 -43
- package/cpp/JSIUtils/MGLTypedArray.cpp +0 -325
- package/cpp/JSIUtils/MGLTypedArray.h +0 -160
- package/cpp/MGLKeys.cpp +0 -1426
- package/cpp/MGLKeys.h +0 -203
- package/cpp/MGLQuickCryptoHostObject.cpp +0 -127
- package/cpp/MGLQuickCryptoHostObject.h +0 -30
- package/cpp/Random/MGLRandomHostObject.cpp +0 -96
- package/cpp/Random/MGLRandomHostObject.h +0 -27
- package/cpp/Sig/MGLSignHostObjects.cpp +0 -757
- package/cpp/Sig/MGLSignHostObjects.h +0 -128
- package/cpp/Sig/MGLSignInstaller.cpp +0 -24
- package/cpp/Sig/MGLSignInstaller.h +0 -29
- package/cpp/Sig/MGLVerifyInstaller.cpp +0 -24
- package/cpp/Sig/MGLVerifyInstaller.h +0 -22
- package/cpp/Utils/MGLDispatchQueue.cpp +0 -75
- package/cpp/Utils/MGLDispatchQueue.h +0 -55
- package/cpp/Utils/MGLUtils.cpp +0 -295
- package/cpp/Utils/MGLUtils.h +0 -358
- package/cpp/Utils/base64.h +0 -320
- package/cpp/Utils/logs.h +0 -38
- package/cpp/Utils/node.h +0 -13
- package/cpp/fastpbkdf2/MGLPbkdf2HostObject.cpp +0 -164
- package/cpp/fastpbkdf2/MGLPbkdf2HostObject.h +0 -29
- package/cpp/fastpbkdf2/fastpbkdf2.c +0 -352
- package/cpp/fastpbkdf2/fastpbkdf2.h +0 -68
- package/cpp/webcrypto/MGLWebCrypto.cpp +0 -125
- package/cpp/webcrypto/MGLWebCrypto.h +0 -32
- package/cpp/webcrypto/crypto_aes.cpp +0 -516
- package/cpp/webcrypto/crypto_aes.h +0 -79
- package/cpp/webcrypto/crypto_ec.cpp +0 -424
- package/cpp/webcrypto/crypto_ec.h +0 -78
- package/cpp/webcrypto/crypto_keygen.cpp +0 -86
- package/cpp/webcrypto/crypto_keygen.h +0 -38
- package/ios/QuickCrypto.xcodeproj/project.pbxproj +0 -274
- package/ios/QuickCryptoModule.h +0 -5
- package/ios/QuickCryptoModule.mm +0 -42
- package/lib/commonjs/Cipher.js +0 -502
- package/lib/commonjs/Cipher.js.map +0 -1
- package/lib/commonjs/Hash.js +0 -99
- package/lib/commonjs/Hash.js.map +0 -1
- package/lib/commonjs/Hashnames.js +0 -87
- package/lib/commonjs/Hashnames.js.map +0 -1
- package/lib/commonjs/Hmac.js +0 -79
- package/lib/commonjs/Hmac.js.map +0 -1
- package/lib/commonjs/NativeQuickCrypto/Cipher.js +0 -30
- package/lib/commonjs/NativeQuickCrypto/Cipher.js.map +0 -1
- package/lib/commonjs/NativeQuickCrypto/NativeQuickCrypto.js +0 -52
- package/lib/commonjs/NativeQuickCrypto/NativeQuickCrypto.js.map +0 -1
- package/lib/commonjs/NativeQuickCrypto/aes.js +0 -6
- package/lib/commonjs/NativeQuickCrypto/hash.js +0 -2
- package/lib/commonjs/NativeQuickCrypto/hash.js.map +0 -1
- package/lib/commonjs/NativeQuickCrypto/hmac.js +0 -2
- package/lib/commonjs/NativeQuickCrypto/hmac.js.map +0 -1
- package/lib/commonjs/NativeQuickCrypto/keygen.js +0 -6
- package/lib/commonjs/NativeQuickCrypto/keygen.js.map +0 -1
- package/lib/commonjs/NativeQuickCrypto/pbkdf2.js +0 -2
- package/lib/commonjs/NativeQuickCrypto/pbkdf2.js.map +0 -1
- package/lib/commonjs/NativeQuickCrypto/random.js +0 -2
- package/lib/commonjs/NativeQuickCrypto/random.js.map +0 -1
- package/lib/commonjs/NativeQuickCrypto/sig.js +0 -19
- package/lib/commonjs/NativeQuickCrypto/sig.js.map +0 -1
- package/lib/commonjs/NativeQuickCrypto/webcrypto.js +0 -6
- package/lib/commonjs/NativeQuickCrypto/webcrypto.js.map +0 -1
- package/lib/commonjs/Utils.js +0 -608
- package/lib/commonjs/Utils.js.map +0 -1
- package/lib/commonjs/aes.js +0 -281
- package/lib/commonjs/aes.js.map +0 -1
- package/lib/commonjs/constants.js +0 -85
- package/lib/commonjs/constants.js.map +0 -1
- package/lib/commonjs/ec.js +0 -276
- package/lib/commonjs/ec.js.map +0 -1
- package/lib/commonjs/keygen.js +0 -56
- package/lib/commonjs/keygen.js.map +0 -1
- package/lib/commonjs/keys.js +0 -492
- package/lib/commonjs/keys.js.map +0 -1
- package/lib/commonjs/pbkdf2.js +0 -90
- package/lib/commonjs/pbkdf2.js.map +0 -1
- package/lib/commonjs/rsa.js +0 -248
- package/lib/commonjs/rsa.js.map +0 -1
- package/lib/commonjs/sig.js +0 -129
- package/lib/commonjs/sig.js.map +0 -1
- package/lib/commonjs/subtle.js +0 -448
- package/lib/commonjs/subtle.js.map +0 -1
- package/lib/commonjs/webcrypto.js +0 -14
- package/lib/commonjs/webcrypto.js.map +0 -1
- package/lib/module/Cipher.js +0 -491
- package/lib/module/Cipher.js.map +0 -1
- package/lib/module/Hash.js +0 -93
- package/lib/module/Hash.js.map +0 -1
- package/lib/module/Hashnames.js +0 -85
- package/lib/module/Hashnames.js.map +0 -1
- package/lib/module/Hmac.js +0 -74
- package/lib/module/Hmac.js.map +0 -1
- package/lib/module/NativeQuickCrypto/Cipher.js +0 -26
- package/lib/module/NativeQuickCrypto/Cipher.js.map +0 -1
- package/lib/module/NativeQuickCrypto/NativeQuickCrypto.js +0 -49
- package/lib/module/NativeQuickCrypto/NativeQuickCrypto.js.map +0 -1
- package/lib/module/NativeQuickCrypto/aes.js +0 -4
- package/lib/module/NativeQuickCrypto/hash.js +0 -2
- package/lib/module/NativeQuickCrypto/hash.js.map +0 -1
- package/lib/module/NativeQuickCrypto/hmac.js +0 -2
- package/lib/module/NativeQuickCrypto/hmac.js.map +0 -1
- package/lib/module/NativeQuickCrypto/keygen.js +0 -4
- package/lib/module/NativeQuickCrypto/keygen.js.map +0 -1
- package/lib/module/NativeQuickCrypto/pbkdf2.js +0 -2
- package/lib/module/NativeQuickCrypto/pbkdf2.js.map +0 -1
- package/lib/module/NativeQuickCrypto/random.js +0 -2
- package/lib/module/NativeQuickCrypto/random.js.map +0 -1
- package/lib/module/NativeQuickCrypto/rsa.js +0 -4
- package/lib/module/NativeQuickCrypto/sig.js +0 -17
- package/lib/module/NativeQuickCrypto/sig.js.map +0 -1
- package/lib/module/NativeQuickCrypto/webcrypto.js +0 -4
- package/lib/module/NativeQuickCrypto/webcrypto.js.map +0 -1
- package/lib/module/Utils.js +0 -539
- package/lib/module/Utils.js.map +0 -1
- package/lib/module/aes.js +0 -274
- package/lib/module/aes.js.map +0 -1
- package/lib/module/constants.js +0 -81
- package/lib/module/constants.js.map +0 -1
- package/lib/module/ec.js +0 -267
- package/lib/module/ec.js.map +0 -1
- package/lib/module/keygen.js +0 -49
- package/lib/module/keygen.js.map +0 -1
- package/lib/module/keys.js +0 -477
- package/lib/module/keys.js.map +0 -1
- package/lib/module/pbkdf2.js +0 -84
- package/lib/module/pbkdf2.js.map +0 -1
- package/lib/module/rsa.js +0 -242
- package/lib/module/rsa.js.map +0 -1
- package/lib/module/sig.js +0 -124
- package/lib/module/sig.js.map +0 -1
- package/lib/module/subtle.js +0 -443
- package/lib/module/subtle.js.map +0 -1
- package/lib/module/webcrypto.js +0 -10
- package/lib/module/webcrypto.js.map +0 -1
- package/lib/typescript/Cipher.d.ts +0 -81
- package/lib/typescript/Cipher.d.ts.map +0 -1
- package/lib/typescript/Hash.d.ts +0 -44
- package/lib/typescript/Hash.d.ts.map +0 -1
- package/lib/typescript/Hashnames.d.ts +0 -11
- package/lib/typescript/Hashnames.d.ts.map +0 -1
- package/lib/typescript/Hmac.d.ts +0 -37
- package/lib/typescript/Hmac.d.ts.map +0 -1
- package/lib/typescript/NativeQuickCrypto/Cipher.d.ts +0 -44
- package/lib/typescript/NativeQuickCrypto/Cipher.d.ts.map +0 -1
- package/lib/typescript/NativeQuickCrypto/NativeQuickCrypto.d.ts +0 -33
- package/lib/typescript/NativeQuickCrypto/NativeQuickCrypto.d.ts.map +0 -1
- package/lib/typescript/NativeQuickCrypto/aes.d.ts +0 -5
- package/lib/typescript/NativeQuickCrypto/aes.d.ts.map +0 -1
- package/lib/typescript/NativeQuickCrypto/hash.d.ts +0 -7
- package/lib/typescript/NativeQuickCrypto/hash.d.ts.map +0 -1
- package/lib/typescript/NativeQuickCrypto/hmac.d.ts +0 -6
- package/lib/typescript/NativeQuickCrypto/hmac.d.ts.map +0 -1
- package/lib/typescript/NativeQuickCrypto/keygen.d.ts +0 -4
- package/lib/typescript/NativeQuickCrypto/keygen.d.ts.map +0 -1
- package/lib/typescript/NativeQuickCrypto/pbkdf2.d.ts +0 -5
- package/lib/typescript/NativeQuickCrypto/pbkdf2.d.ts.map +0 -1
- package/lib/typescript/NativeQuickCrypto/random.d.ts +0 -5
- package/lib/typescript/NativeQuickCrypto/random.d.ts.map +0 -1
- package/lib/typescript/NativeQuickCrypto/rsa.d.ts +0 -5
- package/lib/typescript/NativeQuickCrypto/rsa.d.ts.map +0 -1
- package/lib/typescript/NativeQuickCrypto/sig.d.ts +0 -23
- package/lib/typescript/NativeQuickCrypto/sig.d.ts.map +0 -1
- package/lib/typescript/NativeQuickCrypto/webcrypto.d.ts +0 -39
- package/lib/typescript/NativeQuickCrypto/webcrypto.d.ts.map +0 -1
- package/lib/typescript/Utils.d.ts +0 -48
- package/lib/typescript/Utils.d.ts.map +0 -1
- package/lib/typescript/aes.d.ts +0 -22
- package/lib/typescript/aes.d.ts.map +0 -1
- package/lib/typescript/constants.d.ts +0 -76
- package/lib/typescript/constants.d.ts.map +0 -1
- package/lib/typescript/ec.d.ts +0 -7
- package/lib/typescript/ec.d.ts.map +0 -1
- package/lib/typescript/keygen.d.ts +0 -6
- package/lib/typescript/keygen.d.ts.map +0 -1
- package/lib/typescript/keys.d.ts +0 -206
- package/lib/typescript/keys.d.ts.map +0 -1
- package/lib/typescript/pbkdf2.d.ts +0 -12
- package/lib/typescript/pbkdf2.d.ts.map +0 -1
- package/lib/typescript/rsa.d.ts +0 -12
- package/lib/typescript/rsa.d.ts.map +0 -1
- package/lib/typescript/sig.d.ts +0 -21
- package/lib/typescript/sig.d.ts.map +0 -1
- package/lib/typescript/subtle.d.ts +0 -15
- package/lib/typescript/subtle.d.ts.map +0 -1
- package/lib/typescript/webcrypto.d.ts +0 -9
- package/lib/typescript/webcrypto.d.ts.map +0 -1
- package/react-native-quick-crypto.podspec +0 -40
- package/src/Cipher.ts +0 -832
- package/src/Hash.ts +0 -132
- package/src/Hashnames.ts +0 -93
- package/src/Hmac.ts +0 -106
- package/src/NativeQuickCrypto/Cipher.ts +0 -102
- package/src/NativeQuickCrypto/NativeQuickCrypto.ts +0 -102
- package/src/NativeQuickCrypto/aes.ts +0 -14
- package/src/NativeQuickCrypto/hash.ts +0 -10
- package/src/NativeQuickCrypto/hmac.ts +0 -9
- package/src/NativeQuickCrypto/keygen.ts +0 -7
- package/src/NativeQuickCrypto/pbkdf2.ts +0 -16
- package/src/NativeQuickCrypto/random.ts +0 -12
- package/src/NativeQuickCrypto/rsa.ts +0 -12
- package/src/NativeQuickCrypto/sig.ts +0 -44
- package/src/NativeQuickCrypto/webcrypto.ts +0 -72
- package/src/Utils.ts +0 -777
- package/src/aes.ts +0 -402
- package/src/constants.ts +0 -79
- package/src/ec.ts +0 -375
- package/src/keygen.ts +0 -80
- package/src/keys.ts +0 -787
- package/src/pbkdf2.ts +0 -169
- package/src/rsa.ts +0 -370
- package/src/sig.ts +0 -164
- package/src/subtle.ts +0 -639
- package/src/webcrypto.ts +0 -8
- /package/android/src/main/{AndroidManifestNew.xml → AndroidManifest.xml} +0 -0
package/lib/module/rsa.js
DELETED
|
@@ -1,242 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { KeyVariantLookup } from './NativeQuickCrypto/Cipher';
|
|
4
|
-
import { generateKeyPairPromise } from './Cipher';
|
|
5
|
-
import { NativeQuickCrypto } from './NativeQuickCrypto/NativeQuickCrypto';
|
|
6
|
-
import { lazyDOMException, validateKeyOps, normalizeHashName, HashContext, hasAnyNotIn, getUsagesUnion, bigIntArrayToUnsignedInt, validateMaxBufferLength, bufferLikeToArrayBuffer } from './Utils';
|
|
7
|
-
import { CryptoKey, PrivateKeyObject, PublicKeyObject, KeyType, createPublicKey, CipherOrWrapMode } from './keys';
|
|
8
|
-
|
|
9
|
-
// TODO: keep in in sync with C++ side (cpp/Cipher/MGLRsa.h)
|
|
10
|
-
export let RSAKeyVariant = /*#__PURE__*/function (RSAKeyVariant) {
|
|
11
|
-
RSAKeyVariant[RSAKeyVariant["RSA_SSA_PKCS1_v1_5"] = 0] = "RSA_SSA_PKCS1_v1_5";
|
|
12
|
-
RSAKeyVariant[RSAKeyVariant["RSA_PSS"] = 1] = "RSA_PSS";
|
|
13
|
-
RSAKeyVariant[RSAKeyVariant["RSA_OAEP"] = 2] = "RSA_OAEP";
|
|
14
|
-
return RSAKeyVariant;
|
|
15
|
-
}({});
|
|
16
|
-
function verifyAcceptableRsaKeyUse(name, isPublic, usages) {
|
|
17
|
-
let checkSet;
|
|
18
|
-
switch (name) {
|
|
19
|
-
case 'RSA-OAEP':
|
|
20
|
-
checkSet = isPublic ? ['encrypt', 'wrapKey'] : ['decrypt', 'unwrapKey'];
|
|
21
|
-
break;
|
|
22
|
-
case 'RSA-PSS':
|
|
23
|
-
// Fall through
|
|
24
|
-
case 'RSASSA-PKCS1-v1_5':
|
|
25
|
-
checkSet = isPublic ? ['verify'] : ['sign'];
|
|
26
|
-
break;
|
|
27
|
-
default:
|
|
28
|
-
throw lazyDOMException('The algorithm is not supported', 'NotSupportedError');
|
|
29
|
-
}
|
|
30
|
-
if (hasAnyNotIn(usages, checkSet)) {
|
|
31
|
-
throw lazyDOMException(`Unsupported key usage for an ${name} key`, 'SyntaxError');
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
const rsaOaepCipher = (mode, key, data, {
|
|
35
|
-
label
|
|
36
|
-
}) => {
|
|
37
|
-
const type = mode === CipherOrWrapMode.kWebCryptoCipherEncrypt ? 'public' : 'private';
|
|
38
|
-
if (key.type !== type) {
|
|
39
|
-
throw lazyDOMException('The requested operation is not valid for the provided key', 'InvalidAccessError');
|
|
40
|
-
}
|
|
41
|
-
if (label !== undefined) {
|
|
42
|
-
validateMaxBufferLength(label, 'algorithm.label');
|
|
43
|
-
}
|
|
44
|
-
return NativeQuickCrypto.webcrypto.rsaCipher(mode, key.keyObject.handle, data, RSAKeyVariant.RSA_OAEP, normalizeHashName(key.algorithm.hash), label !== undefined ? bufferLikeToArrayBuffer(label) : undefined);
|
|
45
|
-
};
|
|
46
|
-
export const rsaCipher = rsaOaepCipher;
|
|
47
|
-
export const rsaKeyGenerate = async (algorithm, extractable, keyUsages) => {
|
|
48
|
-
const {
|
|
49
|
-
name,
|
|
50
|
-
modulusLength,
|
|
51
|
-
publicExponent,
|
|
52
|
-
hash: rawHash
|
|
53
|
-
} = algorithm;
|
|
54
|
-
const hash = normalizeHashName(rawHash);
|
|
55
|
-
|
|
56
|
-
// const usageSet = new SafeSet(keyUsages);
|
|
57
|
-
const publicExponentConverted = bigIntArrayToUnsignedInt(publicExponent);
|
|
58
|
-
if (publicExponentConverted === undefined) {
|
|
59
|
-
throw lazyDOMException('The publicExponent must be equivalent to an unsigned 32-bit value', 'OperationError');
|
|
60
|
-
}
|
|
61
|
-
switch (name) {
|
|
62
|
-
case 'RSA-OAEP':
|
|
63
|
-
if (hasAnyNotIn(keyUsages, ['encrypt', 'decrypt', 'wrapKey', 'unwrapKey'])) {
|
|
64
|
-
throw lazyDOMException('Unsupported key usage for a RSA key', 'SyntaxError');
|
|
65
|
-
}
|
|
66
|
-
break;
|
|
67
|
-
default:
|
|
68
|
-
if (hasAnyNotIn(keyUsages, ['sign', 'verify'])) {
|
|
69
|
-
throw lazyDOMException('Unsupported key usage for a RSA key', 'SyntaxError');
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
const [err, keypair] = await generateKeyPairPromise('rsa', {
|
|
73
|
-
modulusLength,
|
|
74
|
-
publicExponent: publicExponentConverted
|
|
75
|
-
});
|
|
76
|
-
if (err) {
|
|
77
|
-
throw lazyDOMException('The operation failed for an operation-specific reason', {
|
|
78
|
-
name: 'OperationError',
|
|
79
|
-
cause: err
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
const keyAlgorithm = {
|
|
83
|
-
name,
|
|
84
|
-
modulusLength,
|
|
85
|
-
publicExponent: publicExponentConverted,
|
|
86
|
-
hash
|
|
87
|
-
};
|
|
88
|
-
let publicUsages = [];
|
|
89
|
-
let privateUsages = [];
|
|
90
|
-
switch (name) {
|
|
91
|
-
case 'RSA-OAEP':
|
|
92
|
-
{
|
|
93
|
-
publicUsages = getUsagesUnion(keyUsages, 'encrypt', 'wrapKey');
|
|
94
|
-
privateUsages = getUsagesUnion(keyUsages, 'decrypt', 'unwrapKey');
|
|
95
|
-
break;
|
|
96
|
-
}
|
|
97
|
-
default:
|
|
98
|
-
{
|
|
99
|
-
publicUsages = getUsagesUnion(keyUsages, 'verify');
|
|
100
|
-
privateUsages = getUsagesUnion(keyUsages, 'sign');
|
|
101
|
-
break;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
const pub = new PublicKeyObject(keypair?.publicKey);
|
|
105
|
-
const publicKey = new CryptoKey(pub, keyAlgorithm, publicUsages, true);
|
|
106
|
-
const priv = new PrivateKeyObject(keypair?.privateKey);
|
|
107
|
-
const privateKey = new CryptoKey(priv, keyAlgorithm, privateUsages, extractable);
|
|
108
|
-
return {
|
|
109
|
-
publicKey,
|
|
110
|
-
privateKey
|
|
111
|
-
};
|
|
112
|
-
};
|
|
113
|
-
export const rsaExportKey = (key, format) => {
|
|
114
|
-
const variant = KeyVariantLookup[key.algorithm.name];
|
|
115
|
-
if (variant === undefined) {
|
|
116
|
-
throw lazyDOMException(`Unrecognized algorithm name '${key.algorithm.name}'`, 'NotSupportedError');
|
|
117
|
-
}
|
|
118
|
-
return NativeQuickCrypto.webcrypto.rsaExportKey(format, key.keyObject.handle, variant);
|
|
119
|
-
};
|
|
120
|
-
export const rsaImportKey = (format, keyData, algorithm, extractable, keyUsages) => {
|
|
121
|
-
// const usagesSet = new SafeSet(keyUsages);
|
|
122
|
-
let keyObject;
|
|
123
|
-
switch (format) {
|
|
124
|
-
case 'spki':
|
|
125
|
-
{
|
|
126
|
-
verifyAcceptableRsaKeyUse(algorithm.name, true, keyUsages);
|
|
127
|
-
try {
|
|
128
|
-
keyObject = createPublicKey({
|
|
129
|
-
key: keyData,
|
|
130
|
-
format: 'der',
|
|
131
|
-
type: 'spki'
|
|
132
|
-
});
|
|
133
|
-
} catch (err) {
|
|
134
|
-
throw lazyDOMException('Invalid keyData', {
|
|
135
|
-
name: 'DataError',
|
|
136
|
-
cause: err
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
break;
|
|
140
|
-
}
|
|
141
|
-
// case 'pkcs8': {
|
|
142
|
-
// verifyAcceptableRsaKeyUse(algorithm.name, false, keyUsages);
|
|
143
|
-
// try {
|
|
144
|
-
// keyObject = createPrivateKey({
|
|
145
|
-
// key: keyData,
|
|
146
|
-
// format: 'der',
|
|
147
|
-
// type: 'pkcs8',
|
|
148
|
-
// });
|
|
149
|
-
// } catch (err) {
|
|
150
|
-
// throw lazyDOMException('Invalid keyData', {
|
|
151
|
-
// name: 'DataError',
|
|
152
|
-
// cause: err,
|
|
153
|
-
// });
|
|
154
|
-
// }
|
|
155
|
-
// break;
|
|
156
|
-
// }
|
|
157
|
-
case 'jwk':
|
|
158
|
-
{
|
|
159
|
-
const data = keyData;
|
|
160
|
-
if (!data.kty) {
|
|
161
|
-
throw lazyDOMException('Invalid keyData', 'DataError');
|
|
162
|
-
}
|
|
163
|
-
if (data.kty !== 'RSA') throw lazyDOMException('Invalid JWK "kty" Parameter', 'DataError');
|
|
164
|
-
verifyAcceptableRsaKeyUse(algorithm.name, data.d === undefined, keyUsages);
|
|
165
|
-
if (keyUsages.length > 0 && data.use !== undefined) {
|
|
166
|
-
const checkUse = algorithm.name === 'RSA-OAEP' ? 'enc' : 'sig';
|
|
167
|
-
if (data.use !== checkUse) throw lazyDOMException('Invalid JWK "use" Parameter', 'DataError');
|
|
168
|
-
}
|
|
169
|
-
validateKeyOps(data.key_ops, keyUsages);
|
|
170
|
-
if (data.ext !== undefined && data.ext === false && extractable === true) {
|
|
171
|
-
throw lazyDOMException('JWK "ext" Parameter and extractable mismatch', 'DataError');
|
|
172
|
-
}
|
|
173
|
-
if (data.alg !== undefined) {
|
|
174
|
-
const hash = normalizeHashName(data.alg, HashContext.WebCrypto);
|
|
175
|
-
if (hash !== algorithm.hash) throw lazyDOMException('JWK "alg" does not match the requested algorithm', 'DataError');
|
|
176
|
-
}
|
|
177
|
-
const handle = NativeQuickCrypto.webcrypto.createKeyObjectHandle();
|
|
178
|
-
const type = handle.initJwk(data);
|
|
179
|
-
if (type === undefined) throw lazyDOMException('Invalid JWK', 'DataError');
|
|
180
|
-
keyObject = type === KeyType.Private ? new PrivateKeyObject(handle) : new PublicKeyObject(handle);
|
|
181
|
-
break;
|
|
182
|
-
}
|
|
183
|
-
default:
|
|
184
|
-
throw lazyDOMException(`Unable to import RSA key with format ${format}`, 'NotSupportedError');
|
|
185
|
-
}
|
|
186
|
-
if (keyObject.asymmetricKeyType !== 'rsa') {
|
|
187
|
-
throw lazyDOMException('Invalid key type', 'DataError');
|
|
188
|
-
}
|
|
189
|
-
const {
|
|
190
|
-
modulusLength,
|
|
191
|
-
publicExponent
|
|
192
|
-
} = keyObject.handle.keyDetail();
|
|
193
|
-
if (publicExponent === undefined) {
|
|
194
|
-
throw lazyDOMException('publicExponent is undefined', 'DataError');
|
|
195
|
-
}
|
|
196
|
-
return new CryptoKey(keyObject, {
|
|
197
|
-
name: algorithm.name,
|
|
198
|
-
modulusLength,
|
|
199
|
-
publicExponent: new Uint8Array(publicExponent),
|
|
200
|
-
hash: algorithm.hash
|
|
201
|
-
}, keyUsages, extractable);
|
|
202
|
-
};
|
|
203
|
-
|
|
204
|
-
// function rsaSignVerify(key, data, { saltLength }, signature) {
|
|
205
|
-
// let padding;
|
|
206
|
-
// if (key.algorithm.name === 'RSA-PSS') {
|
|
207
|
-
// padding = RSA_PKCS1_PSS_PADDING;
|
|
208
|
-
// // TODO(@jasnell): Validate maximum size of saltLength
|
|
209
|
-
// // based on the key size:
|
|
210
|
-
// // Math.ceil((keySizeInBits - 1)/8) - digestSizeInBytes - 2
|
|
211
|
-
// validateInt32(saltLength, 'algorithm.saltLength', -2);
|
|
212
|
-
// }
|
|
213
|
-
|
|
214
|
-
// const mode = signature === undefined ? kSignJobModeSign : kSignJobModeVerify;
|
|
215
|
-
// const type = mode === kSignJobModeSign ? 'private' : 'public';
|
|
216
|
-
|
|
217
|
-
// if (key.type !== type)
|
|
218
|
-
// throw lazyDOMException(`Key must be a ${type} key`, 'InvalidAccessError');
|
|
219
|
-
|
|
220
|
-
// return jobPromise(() => new SignJob(
|
|
221
|
-
// kCryptoJobAsync,
|
|
222
|
-
// signature === undefined ? kSignJobModeSign : kSignJobModeVerify,
|
|
223
|
-
// key[kKeyObject][kHandle],
|
|
224
|
-
// undefined,
|
|
225
|
-
// undefined,
|
|
226
|
-
// undefined,
|
|
227
|
-
// data,
|
|
228
|
-
// normalizeHashName(key.algorithm.hash.name),
|
|
229
|
-
// saltLength,
|
|
230
|
-
// padding,
|
|
231
|
-
// undefined,
|
|
232
|
-
// signature));
|
|
233
|
-
// }
|
|
234
|
-
|
|
235
|
-
// module.exports = {
|
|
236
|
-
// rsaCipher: rsaOaepCipher,
|
|
237
|
-
// rsaExportKey,
|
|
238
|
-
// rsaImportKey,
|
|
239
|
-
// rsaKeyGenerate,
|
|
240
|
-
// rsaSignVerify,
|
|
241
|
-
// };
|
|
242
|
-
//# sourceMappingURL=rsa.js.map
|
package/lib/module/rsa.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["KeyVariantLookup","generateKeyPairPromise","NativeQuickCrypto","lazyDOMException","validateKeyOps","normalizeHashName","HashContext","hasAnyNotIn","getUsagesUnion","bigIntArrayToUnsignedInt","validateMaxBufferLength","bufferLikeToArrayBuffer","CryptoKey","PrivateKeyObject","PublicKeyObject","KeyType","createPublicKey","CipherOrWrapMode","RSAKeyVariant","verifyAcceptableRsaKeyUse","name","isPublic","usages","checkSet","rsaOaepCipher","mode","key","data","label","type","kWebCryptoCipherEncrypt","undefined","webcrypto","rsaCipher","keyObject","handle","RSA_OAEP","algorithm","hash","rsaKeyGenerate","extractable","keyUsages","modulusLength","publicExponent","rawHash","publicExponentConverted","err","keypair","cause","keyAlgorithm","publicUsages","privateUsages","pub","publicKey","priv","privateKey","rsaExportKey","format","variant","rsaImportKey","keyData","kty","d","length","use","checkUse","key_ops","ext","alg","WebCrypto","createKeyObjectHandle","initJwk","Private","asymmetricKeyType","keyDetail","Uint8Array"],"sourceRoot":"../../src","sources":["rsa.ts"],"mappings":";;AAAA,SAASA,gBAAgB,QAAQ,4BAA4B;AAC7D,SAASC,sBAAsB,QAAQ,UAAU;AACjD,SAASC,iBAAiB,QAAQ,uCAAuC;AAEzE,SACEC,gBAAgB,EAEhBC,cAAc,EACdC,iBAAiB,EACjBC,WAAW,EACXC,WAAW,EACXC,cAAc,EACdC,wBAAwB,EACxBC,uBAAuB,EACvBC,uBAAuB,QAClB,SAAS;AAChB,SACEC,SAAS,EACTC,gBAAgB,EAMhBC,eAAe,EAEfC,OAAO,EACPC,eAAe,EAGfC,gBAAgB,QAGX,QAAQ;;AAEf;AACA,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAMzB,SAASC,yBAAyBA,CAChCC,IAAkB,EAClBC,QAAiB,EACjBC,MAAkB,EACZ;EACN,IAAIC,QAAQ;EACZ,QAAQH,IAAI;IACV,KAAK,UAAU;MACbG,QAAQ,GAAGF,QAAQ,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC;MACvE;IACF,KAAK,SAAS;IACd;IACA,KAAK,mBAAmB;MACtBE,QAAQ,GAAGF,QAAQ,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;MAC3C;IACF;MACE,MAAMlB,gBAAgB,CACpB,gCAAgC,EAChC,mBACF,CAAC;EACL;EACA,IAAII,WAAW,CAACe,MAAM,EAAEC,QAAQ,CAAC,EAAE;IACjC,MAAMpB,gBAAgB,CACnB,gCAA+BiB,IAAK,MAAK,EAC1C,aACF,CAAC;EACH;AACF;AAEA,MAAMI,aAAa,GAAGA,CACpBC,IAAsB,EACtBC,GAAc,EACdC,IAAiB,EACjB;EAAEC;AAAqB,CAAC,KACC;EACzB,MAAMC,IAAI,GACRJ,IAAI,KAAKR,gBAAgB,CAACa,uBAAuB,GAAG,QAAQ,GAAG,SAAS;EAC1E,IAAIJ,GAAG,CAACG,IAAI,KAAKA,IAAI,EAAE;IACrB,MAAM1B,gBAAgB,CACpB,2DAA2D,EAC3D,oBACF,CAAC;EACH;EACA,IAAIyB,KAAK,KAAKG,SAAS,EAAE;IACvBrB,uBAAuB,CAACkB,KAAK,EAAE,iBAAiB,CAAC;EACnD;EAEA,OAAO1B,iBAAiB,CAAC8B,SAAS,CAACC,SAAS,CAC1CR,IAAI,EACJC,GAAG,CAACQ,SAAS,CAACC,MAAM,EACpBR,IAAI,EACJT,aAAa,CAACkB,QAAQ,EACtB/B,iBAAiB,CAACqB,GAAG,CAACW,SAAS,CAACC,IAAI,CAAC,EACrCV,KAAK,KAAKG,SAAS,GAAGpB,uBAAuB,CAACiB,KAAK,CAAC,GAAGG,SACzD,CAAC;AACH,CAAC;AAED,OAAO,MAAME,SAAS,GAAGT,aAAa;AAEtC,OAAO,MAAMe,cAAc,GAAG,MAAAA,CAC5BF,SAA0B,EAC1BG,WAAoB,EACpBC,SAAqB,KACM;EAC3B,MAAM;IAAErB,IAAI;IAAEsB,aAAa;IAAEC,cAAc;IAAEL,IAAI,EAAEM;EAAQ,CAAC,GAAGP,SAAS;EACxE,MAAMC,IAAmB,GAAGjC,iBAAiB,CAACuC,OAAO,CAAC;;EAEtD;EACA,MAAMC,uBAAuB,GAAGpC,wBAAwB,CAACkC,cAAc,CAAC;EACxE,IAAIE,uBAAuB,KAAKd,SAAS,EAAE;IACzC,MAAM5B,gBAAgB,CACpB,mEAAmE,EACnE,gBACF,CAAC;EACH;EAEA,QAAQiB,IAAI;IACV,KAAK,UAAU;MACb,IACEb,WAAW,CAACkC,SAAS,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,EACtE;QACA,MAAMtC,gBAAgB,CACpB,qCAAqC,EACrC,aACF,CAAC;MACH;MACA;IACF;MACE,IAAII,WAAW,CAACkC,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,EAAE;QAC9C,MAAMtC,gBAAgB,CACpB,qCAAqC,EACrC,aACF,CAAC;MACH;EACJ;EAEA,MAAM,CAAC2C,GAAG,EAAEC,OAAO,CAAC,GAAG,MAAM9C,sBAAsB,CAAC,KAAK,EAAE;IACzDyC,aAAa;IACbC,cAAc,EAAEE;EAClB,CAAC,CAAC;EACF,IAAIC,GAAG,EAAE;IACP,MAAM3C,gBAAgB,CACpB,uDAAuD,EACvD;MAAEiB,IAAI,EAAE,gBAAgB;MAAE4B,KAAK,EAAEF;IAAI,CACvC,CAAC;EACH;EAEA,MAAMG,YAAY,GAAG;IACnB7B,IAAI;IACJsB,aAAa;IACbC,cAAc,EAAEE,uBAAuB;IACvCP;EACF,CAAC;EAED,IAAIY,YAAwB,GAAG,EAAE;EACjC,IAAIC,aAAyB,GAAG,EAAE;EAClC,QAAQ/B,IAAI;IACV,KAAK,UAAU;MAAE;QACf8B,YAAY,GAAG1C,cAAc,CAACiC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;QAC9DU,aAAa,GAAG3C,cAAc,CAACiC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC;QACjE;MACF;IACA;MAAS;QACPS,YAAY,GAAG1C,cAAc,CAACiC,SAAS,EAAE,QAAQ,CAAC;QAClDU,aAAa,GAAG3C,cAAc,CAACiC,SAAS,EAAE,MAAM,CAAC;QACjD;MACF;EACF;EAEA,MAAMW,GAAG,GAAG,IAAItC,eAAe,CAACiC,OAAO,EAAEM,SAA4B,CAAC;EACtE,MAAMA,SAAS,GAAG,IAAIzC,SAAS,CAACwC,GAAG,EAAEH,YAAY,EAAEC,YAAY,EAAE,IAAI,CAAC;EAEtE,MAAMI,IAAI,GAAG,IAAIzC,gBAAgB,CAACkC,OAAO,EAAEQ,UAA6B,CAAC;EACzE,MAAMA,UAAU,GAAG,IAAI3C,SAAS,CAC9B0C,IAAI,EACJL,YAAY,EACZE,aAAa,EACbX,WACF,CAAC;EAED,OAAO;IAAEa,SAAS;IAAEE;EAAW,CAAC;AAClC,CAAC;AAED,OAAO,MAAMC,YAAY,GAAGA,CAC1B9B,GAAc,EACd+B,MAA2B,KACX;EAChB,MAAMC,OAAO,GAAG1D,gBAAgB,CAAC0B,GAAG,CAACW,SAAS,CAACjB,IAAI,CAAC;EACpD,IAAIsC,OAAO,KAAK3B,SAAS,EAAE;IACzB,MAAM5B,gBAAgB,CACnB,gCAA+BuB,GAAG,CAACW,SAAS,CAACjB,IAAK,GAAE,EACrD,mBACF,CAAC;EACH;EACA,OAAOlB,iBAAiB,CAAC8B,SAAS,CAACwB,YAAY,CAC7CC,MAAM,EACN/B,GAAG,CAACQ,SAAS,CAACC,MAAM,EACpBuB,OACF,CAAC;AACH,CAAC;AAED,OAAO,MAAMC,YAAY,GAAGA,CAC1BF,MAAoB,EACpBG,OAAyB,EACzBvB,SAA0B,EAC1BG,WAAoB,EACpBC,SAAqB,KACP;EACd;EACA,IAAIP,SAA6C;EACjD,QAAQuB,MAAM;IACZ,KAAK,MAAM;MAAE;QACXtC,yBAAyB,CAACkB,SAAS,CAACjB,IAAI,EAAE,IAAI,EAAEqB,SAAS,CAAC;QAC1D,IAAI;UACFP,SAAS,GAAGlB,eAAe,CAAC;YAC1BU,GAAG,EAAEkC,OAAO;YACZH,MAAM,EAAE,KAAK;YACb5B,IAAI,EAAE;UACR,CAAC,CAAC;QACJ,CAAC,CAAC,OAAOiB,GAAG,EAAE;UACZ,MAAM3C,gBAAgB,CAAC,iBAAiB,EAAE;YACxCiB,IAAI,EAAE,WAAW;YACjB4B,KAAK,EAAEF;UACT,CAAC,CAAC;QACJ;QACA;MACF;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,KAAK,KAAK;MAAE;QACV,MAAMnB,IAAI,GAAGiC,OAAc;QAC3B,IAAI,CAACjC,IAAI,CAACkC,GAAG,EAAE;UACb,MAAM1D,gBAAgB,CAAC,iBAAiB,EAAE,WAAW,CAAC;QACxD;QACA,IAAIwB,IAAI,CAACkC,GAAG,KAAK,KAAK,EACpB,MAAM1D,gBAAgB,CAAC,6BAA6B,EAAE,WAAW,CAAC;QAEpEgB,yBAAyB,CACvBkB,SAAS,CAACjB,IAAI,EACdO,IAAI,CAACmC,CAAC,KAAK/B,SAAS,EACpBU,SACF,CAAC;QAED,IAAIA,SAAS,CAACsB,MAAM,GAAG,CAAC,IAAIpC,IAAI,CAACqC,GAAG,KAAKjC,SAAS,EAAE;UAClD,MAAMkC,QAAQ,GAAG5B,SAAS,CAACjB,IAAI,KAAK,UAAU,GAAG,KAAK,GAAG,KAAK;UAC9D,IAAIO,IAAI,CAACqC,GAAG,KAAKC,QAAQ,EACvB,MAAM9D,gBAAgB,CAAC,6BAA6B,EAAE,WAAW,CAAC;QACtE;QAEAC,cAAc,CAACuB,IAAI,CAACuC,OAAO,EAAEzB,SAAS,CAAC;QAEvC,IACEd,IAAI,CAACwC,GAAG,KAAKpC,SAAS,IACtBJ,IAAI,CAACwC,GAAG,KAAK,KAAK,IAClB3B,WAAW,KAAK,IAAI,EACpB;UACA,MAAMrC,gBAAgB,CACpB,8CAA8C,EAC9C,WACF,CAAC;QACH;QAEA,IAAIwB,IAAI,CAACyC,GAAG,KAAKrC,SAAS,EAAE;UAC1B,MAAMO,IAAI,GAAGjC,iBAAiB,CAC5BsB,IAAI,CAACyC,GAAG,EACR9D,WAAW,CAAC+D,SACd,CAAC;UACD,IAAI/B,IAAI,KAAKD,SAAS,CAACC,IAAI,EACzB,MAAMnC,gBAAgB,CACpB,kDAAkD,EAClD,WACF,CAAC;QACL;QAEA,MAAMgC,MAAM,GAAGjC,iBAAiB,CAAC8B,SAAS,CAACsC,qBAAqB,CAAC,CAAC;QAClE,MAAMzC,IAAI,GAAGM,MAAM,CAACoC,OAAO,CAAC5C,IAAI,CAAC;QACjC,IAAIE,IAAI,KAAKE,SAAS,EACpB,MAAM5B,gBAAgB,CAAC,aAAa,EAAE,WAAW,CAAC;QAEpD+B,SAAS,GACPL,IAAI,KAAKd,OAAO,CAACyD,OAAO,GACpB,IAAI3D,gBAAgB,CAACsB,MAAM,CAAC,GAC5B,IAAIrB,eAAe,CAACqB,MAAM,CAAC;QAEjC;MACF;IACA;MACE,MAAMhC,gBAAgB,CACnB,wCAAuCsD,MAAO,EAAC,EAChD,mBACF,CAAC;EACL;EAEA,IAAIvB,SAAS,CAACuC,iBAAiB,KAAK,KAAK,EAAE;IACzC,MAAMtE,gBAAgB,CAAC,kBAAkB,EAAE,WAAW,CAAC;EACzD;EAEA,MAAM;IAAEuC,aAAa;IAAEC;EAAe,CAAC,GAAGT,SAAS,CAACC,MAAM,CAACuC,SAAS,CAAC,CAAC;EAEtE,IAAI/B,cAAc,KAAKZ,SAAS,EAAE;IAChC,MAAM5B,gBAAgB,CAAC,6BAA6B,EAAE,WAAW,CAAC;EACpE;EAEA,OAAO,IAAIS,SAAS,CAClBsB,SAAS,EACT;IACEd,IAAI,EAAEiB,SAAS,CAACjB,IAAI;IACpBsB,aAAa;IACbC,cAAc,EAAE,IAAIgC,UAAU,CAAChC,cAAc,CAAC;IAC9CL,IAAI,EAAED,SAAS,CAACC;EAClB,CAAC,EACDG,SAAS,EACTD,WACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
|
package/lib/module/sig.js
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { NativeQuickCrypto } from './NativeQuickCrypto/NativeQuickCrypto';
|
|
4
|
-
import Stream from 'readable-stream';
|
|
5
|
-
|
|
6
|
-
// TODO(osp) same as publicCipher on node this are defined on C++ and exposed to node
|
|
7
|
-
// Do the same here
|
|
8
|
-
var DSASigEnc = /*#__PURE__*/function (DSASigEnc) {
|
|
9
|
-
DSASigEnc[DSASigEnc["kSigEncDER"] = 0] = "kSigEncDER";
|
|
10
|
-
DSASigEnc[DSASigEnc["kSigEncP1363"] = 1] = "kSigEncP1363";
|
|
11
|
-
return DSASigEnc;
|
|
12
|
-
}(DSASigEnc || {});
|
|
13
|
-
import { binaryLikeToArrayBuffer, getDefaultEncoding } from './Utils';
|
|
14
|
-
import { preparePrivateKey, preparePublicOrPrivateKey } from './keys';
|
|
15
|
-
const createInternalSign = NativeQuickCrypto.createSign;
|
|
16
|
-
const createInternalVerify = NativeQuickCrypto.createVerify;
|
|
17
|
-
function getPadding(options) {
|
|
18
|
-
return getIntOption('padding', options);
|
|
19
|
-
}
|
|
20
|
-
function getSaltLength(options) {
|
|
21
|
-
return getIntOption('saltLength', options);
|
|
22
|
-
}
|
|
23
|
-
function getDSASignatureEncoding(options) {
|
|
24
|
-
if (typeof options === 'object') {
|
|
25
|
-
const {
|
|
26
|
-
dsaEncoding = 'der'
|
|
27
|
-
} = options;
|
|
28
|
-
if (dsaEncoding === 'der') return DSASigEnc.kSigEncDER;else if (dsaEncoding === 'ieee-p1363') return DSASigEnc.kSigEncP1363;
|
|
29
|
-
throw new Error(`options.dsaEncoding: ${dsaEncoding} not a valid encoding`);
|
|
30
|
-
}
|
|
31
|
-
return DSASigEnc.kSigEncDER;
|
|
32
|
-
}
|
|
33
|
-
function getIntOption(name, options) {
|
|
34
|
-
const value = options[name];
|
|
35
|
-
if (value !== undefined) {
|
|
36
|
-
// eslint-disable-next-line no-bitwise
|
|
37
|
-
if (value === value >> 0) {
|
|
38
|
-
return value;
|
|
39
|
-
}
|
|
40
|
-
throw new Error(`options.${name}: ${value} not a valid int value`);
|
|
41
|
-
}
|
|
42
|
-
return undefined;
|
|
43
|
-
}
|
|
44
|
-
class Verify extends Stream.Writable {
|
|
45
|
-
constructor(algorithm, options) {
|
|
46
|
-
super(options);
|
|
47
|
-
this.internal = createInternalVerify();
|
|
48
|
-
this.internal.init(algorithm);
|
|
49
|
-
}
|
|
50
|
-
_write(chunk, encoding, callback) {
|
|
51
|
-
this.update(chunk, encoding);
|
|
52
|
-
callback();
|
|
53
|
-
}
|
|
54
|
-
update(data, encoding) {
|
|
55
|
-
encoding = encoding ?? getDefaultEncoding();
|
|
56
|
-
data = binaryLikeToArrayBuffer(data, encoding);
|
|
57
|
-
this.internal.update(data);
|
|
58
|
-
return this;
|
|
59
|
-
}
|
|
60
|
-
verify(options, signature) {
|
|
61
|
-
if (!options) {
|
|
62
|
-
throw new Error('Crypto sign key required');
|
|
63
|
-
}
|
|
64
|
-
const {
|
|
65
|
-
data,
|
|
66
|
-
format,
|
|
67
|
-
type,
|
|
68
|
-
passphrase
|
|
69
|
-
} = preparePublicOrPrivateKey(options);
|
|
70
|
-
const rsaPadding = getPadding(options);
|
|
71
|
-
const pssSaltLength = getSaltLength(options);
|
|
72
|
-
|
|
73
|
-
// Options specific to (EC)DSA
|
|
74
|
-
const dsaSigEnc = getDSASignatureEncoding(options);
|
|
75
|
-
const ret = this.internal.verify(data, format, type, passphrase, binaryLikeToArrayBuffer(signature), rsaPadding, pssSaltLength, dsaSigEnc);
|
|
76
|
-
return ret;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
class Sign extends Stream.Writable {
|
|
80
|
-
constructor(algorithm, options) {
|
|
81
|
-
super(options);
|
|
82
|
-
this.internal = createInternalSign();
|
|
83
|
-
this.internal.init(algorithm);
|
|
84
|
-
}
|
|
85
|
-
_write(chunk, encoding, callback) {
|
|
86
|
-
this.update(chunk, encoding);
|
|
87
|
-
callback();
|
|
88
|
-
}
|
|
89
|
-
update(data, encoding) {
|
|
90
|
-
encoding = encoding ?? getDefaultEncoding();
|
|
91
|
-
data = binaryLikeToArrayBuffer(data, encoding);
|
|
92
|
-
this.internal.update(data);
|
|
93
|
-
return this;
|
|
94
|
-
}
|
|
95
|
-
sign(options, encoding) {
|
|
96
|
-
if (!options) {
|
|
97
|
-
throw new Error('Crypto sign key required');
|
|
98
|
-
}
|
|
99
|
-
const {
|
|
100
|
-
data,
|
|
101
|
-
format,
|
|
102
|
-
type,
|
|
103
|
-
passphrase
|
|
104
|
-
} = preparePrivateKey(options);
|
|
105
|
-
const rsaPadding = getPadding(options);
|
|
106
|
-
const pssSaltLength = getSaltLength(options);
|
|
107
|
-
|
|
108
|
-
// Options specific to (EC)DSA
|
|
109
|
-
const dsaSigEnc = getDSASignatureEncoding(options);
|
|
110
|
-
const ret = this.internal.sign(data, format, type, passphrase, rsaPadding, pssSaltLength, dsaSigEnc);
|
|
111
|
-
encoding = encoding || getDefaultEncoding();
|
|
112
|
-
if (encoding && encoding !== 'buffer') {
|
|
113
|
-
return Buffer.from(ret).toString(encoding);
|
|
114
|
-
}
|
|
115
|
-
return Buffer.from(ret);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
export function createSign(algorithm, options) {
|
|
119
|
-
return new Sign(algorithm, options);
|
|
120
|
-
}
|
|
121
|
-
export function createVerify(algorithm, options) {
|
|
122
|
-
return new Verify(algorithm, options);
|
|
123
|
-
}
|
|
124
|
-
//# sourceMappingURL=sig.js.map
|
package/lib/module/sig.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["NativeQuickCrypto","Stream","DSASigEnc","binaryLikeToArrayBuffer","getDefaultEncoding","preparePrivateKey","preparePublicOrPrivateKey","createInternalSign","createSign","createInternalVerify","createVerify","getPadding","options","getIntOption","getSaltLength","getDSASignatureEncoding","dsaEncoding","kSigEncDER","kSigEncP1363","Error","name","value","undefined","Verify","Writable","constructor","algorithm","internal","init","_write","chunk","encoding","callback","update","data","verify","signature","format","type","passphrase","rsaPadding","pssSaltLength","dsaSigEnc","ret","Sign","sign","Buffer","from","toString"],"sourceRoot":"../../src","sources":["sig.ts"],"mappings":"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","ignoreList":[]}
|