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/Utils.js
DELETED
|
@@ -1,539 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { Buffer } from '@craftzdog/react-native-buffer';
|
|
4
|
-
|
|
5
|
-
// @types/node
|
|
6
|
-
|
|
7
|
-
// TODO(osp) should buffer be part of the Encoding type?
|
|
8
|
-
|
|
9
|
-
// Mimics node behavior for default global encoding
|
|
10
|
-
let defaultEncoding = 'buffer';
|
|
11
|
-
export function setDefaultEncoding(encoding) {
|
|
12
|
-
defaultEncoding = encoding;
|
|
13
|
-
}
|
|
14
|
-
export function getDefaultEncoding() {
|
|
15
|
-
return defaultEncoding;
|
|
16
|
-
}
|
|
17
|
-
export const kEmptyObject = Object.freeze(Object.create(null));
|
|
18
|
-
|
|
19
|
-
// Should be used by Cipher (or any other module that requires valid encodings)
|
|
20
|
-
// function slowCases(enc: string) {
|
|
21
|
-
// switch (enc.length) {
|
|
22
|
-
// case 4:
|
|
23
|
-
// if (enc === 'UTF8') return 'utf8';
|
|
24
|
-
// if (enc === 'ucs2' || enc === 'UCS2') return 'utf16le';
|
|
25
|
-
// enc = `${enc}`.toLowerCase();
|
|
26
|
-
// if (enc === 'utf8') return 'utf8';
|
|
27
|
-
// if (enc === 'ucs2') return 'utf16le';
|
|
28
|
-
// break;
|
|
29
|
-
// case 3:
|
|
30
|
-
// if (enc === 'hex' || enc === 'HEX' || `${enc}`.toLowerCase() === 'hex')
|
|
31
|
-
// return 'hex';
|
|
32
|
-
// break;
|
|
33
|
-
// case 5:
|
|
34
|
-
// if (enc === 'ascii') return 'ascii';
|
|
35
|
-
// if (enc === 'ucs-2') return 'utf16le';
|
|
36
|
-
// if (enc === 'UTF-8') return 'utf8';
|
|
37
|
-
// if (enc === 'ASCII') return 'ascii';
|
|
38
|
-
// if (enc === 'UCS-2') return 'utf16le';
|
|
39
|
-
// enc = `${enc}`.toLowerCase();
|
|
40
|
-
// if (enc === 'utf-8') return 'utf8';
|
|
41
|
-
// if (enc === 'ascii') return 'ascii';
|
|
42
|
-
// if (enc === 'ucs-2') return 'utf16le';
|
|
43
|
-
// break;
|
|
44
|
-
// case 6:
|
|
45
|
-
// if (enc === 'base64') return 'base64';
|
|
46
|
-
// if (enc === 'latin1' || enc === 'binary') return 'latin1';
|
|
47
|
-
// if (enc === 'BASE64') return 'base64';
|
|
48
|
-
// if (enc === 'LATIN1' || enc === 'BINARY') return 'latin1';
|
|
49
|
-
// enc = `${enc}`.toLowerCase();
|
|
50
|
-
// if (enc === 'base64') return 'base64';
|
|
51
|
-
// if (enc === 'latin1' || enc === 'binary') return 'latin1';
|
|
52
|
-
// break;
|
|
53
|
-
// case 7:
|
|
54
|
-
// if (
|
|
55
|
-
// enc === 'utf16le' ||
|
|
56
|
-
// enc === 'UTF16LE' ||
|
|
57
|
-
// `${enc}`.toLowerCase() === 'utf16le'
|
|
58
|
-
// )
|
|
59
|
-
// return 'utf16le';
|
|
60
|
-
// break;
|
|
61
|
-
// case 8:
|
|
62
|
-
// if (
|
|
63
|
-
// enc === 'utf-16le' ||
|
|
64
|
-
// enc === 'UTF-16LE' ||
|
|
65
|
-
// `${enc}`.toLowerCase() === 'utf-16le'
|
|
66
|
-
// )
|
|
67
|
-
// return 'utf16le';
|
|
68
|
-
// break;
|
|
69
|
-
// case 9:
|
|
70
|
-
// if (
|
|
71
|
-
// enc === 'base64url' ||
|
|
72
|
-
// enc === 'BASE64URL' ||
|
|
73
|
-
// `${enc}`.toLowerCase() === 'base64url'
|
|
74
|
-
// )
|
|
75
|
-
// return 'base64url';
|
|
76
|
-
// break;
|
|
77
|
-
// default:
|
|
78
|
-
// if (enc === '') return 'utf8';
|
|
79
|
-
// }
|
|
80
|
-
// }
|
|
81
|
-
|
|
82
|
-
// // Return undefined if there is no match.
|
|
83
|
-
// // Move the "slow cases" to a separate function to make sure this function gets
|
|
84
|
-
// // inlined properly. That prioritizes the common case.
|
|
85
|
-
// export function normalizeEncoding(enc?: string) {
|
|
86
|
-
// if (enc == null || enc === 'utf8' || enc === 'utf-8') return 'utf8';
|
|
87
|
-
// return slowCases(enc);
|
|
88
|
-
// }
|
|
89
|
-
|
|
90
|
-
export function toArrayBuffer(buf) {
|
|
91
|
-
if (buf?.buffer?.slice) {
|
|
92
|
-
return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
|
|
93
|
-
}
|
|
94
|
-
const ab = new ArrayBuffer(buf.length);
|
|
95
|
-
const view = new Uint8Array(ab);
|
|
96
|
-
for (let i = 0; i < buf.length; ++i) {
|
|
97
|
-
view[i] = buf[i];
|
|
98
|
-
}
|
|
99
|
-
return ab;
|
|
100
|
-
}
|
|
101
|
-
export function bufferLikeToArrayBuffer(buf) {
|
|
102
|
-
return Buffer.isBuffer(buf) ? buf.buffer : ArrayBuffer.isView(buf) ? buf.buffer : buf;
|
|
103
|
-
}
|
|
104
|
-
export function binaryLikeToArrayBuffer(input,
|
|
105
|
-
// CipherKey adds compat with node types
|
|
106
|
-
encoding = 'utf-8') {
|
|
107
|
-
if (typeof input === 'string') {
|
|
108
|
-
if (encoding === 'buffer') {
|
|
109
|
-
throw new Error('Cannot create a buffer from a string with a buffer encoding');
|
|
110
|
-
}
|
|
111
|
-
const buffer = Buffer.from(input, encoding);
|
|
112
|
-
return buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);
|
|
113
|
-
}
|
|
114
|
-
if (Buffer.isBuffer(input)) {
|
|
115
|
-
return toArrayBuffer(input);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
// TODO add further binary types to BinaryLike, UInt8Array and so for have this array as property
|
|
119
|
-
if (ArrayBuffer.isView(input)) {
|
|
120
|
-
return input.buffer;
|
|
121
|
-
}
|
|
122
|
-
if (!(input instanceof ArrayBuffer)) {
|
|
123
|
-
try {
|
|
124
|
-
// this is a strange fallback case and input is unknown at this point
|
|
125
|
-
// @ts-expect-error
|
|
126
|
-
const buffer = Buffer.from(input);
|
|
127
|
-
return buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);
|
|
128
|
-
} catch {
|
|
129
|
-
throw 'error';
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
// TODO: handle if input is KeyObject?
|
|
134
|
-
|
|
135
|
-
return input;
|
|
136
|
-
}
|
|
137
|
-
export function ab2str(buf, encoding = 'hex') {
|
|
138
|
-
return Buffer.from(buf).toString(encoding);
|
|
139
|
-
}
|
|
140
|
-
export function validateString(str, name) {
|
|
141
|
-
const isString = typeof str === 'string';
|
|
142
|
-
if (!isString) {
|
|
143
|
-
throw new Error(`${name} is not a string`);
|
|
144
|
-
}
|
|
145
|
-
return isString;
|
|
146
|
-
}
|
|
147
|
-
export function validateFunction(f) {
|
|
148
|
-
return f !== null && typeof f === 'function';
|
|
149
|
-
}
|
|
150
|
-
export function isStringOrBuffer(val) {
|
|
151
|
-
return typeof val === 'string' || ArrayBuffer.isView(val) || val instanceof ArrayBuffer;
|
|
152
|
-
}
|
|
153
|
-
export function validateObject(value, name, options) {
|
|
154
|
-
const useDefaultOptions = options == null;
|
|
155
|
-
const allowArray = useDefaultOptions ? false : options.allowArray;
|
|
156
|
-
const allowFunction = useDefaultOptions ? false : options.allowFunction;
|
|
157
|
-
const nullable = useDefaultOptions ? false : options.nullable;
|
|
158
|
-
if (!nullable && value === null || !allowArray && Array.isArray(value) || typeof value !== 'object' && (!allowFunction || typeof value !== 'function')) {
|
|
159
|
-
throw new Error(`${name} is not a valid object $${value}`);
|
|
160
|
-
}
|
|
161
|
-
return true;
|
|
162
|
-
}
|
|
163
|
-
export function validateInt32(value, name, min = -2147483648, max = 2147483647) {
|
|
164
|
-
// The defaults for min and max correspond to the limits of 32-bit integers.
|
|
165
|
-
if (typeof value !== 'number') {
|
|
166
|
-
throw new Error(`Invalid argument - ${name} is not a number: ${value}`);
|
|
167
|
-
}
|
|
168
|
-
if (!Number.isInteger(value)) {
|
|
169
|
-
throw new Error(`Argument out of range - ${name} out of integer range: ${value}`);
|
|
170
|
-
}
|
|
171
|
-
if (value < min || value > max) {
|
|
172
|
-
throw new Error(`Invalid argument - ${name} out of range >= ${min} && <= ${max}: ${value}`);
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
export function validateUint32(value, name, positive) {
|
|
176
|
-
if (typeof value !== 'number') {
|
|
177
|
-
// throw new ERR_INVALID_ARG_TYPE(name, 'number', value);
|
|
178
|
-
throw new Error(`Invalid argument - ${name} is not a number: ${value}`);
|
|
179
|
-
}
|
|
180
|
-
if (!Number.isInteger(value)) {
|
|
181
|
-
// throw new ERR_OUT_OF_RANGE(name, 'an integer', value);
|
|
182
|
-
throw new Error(`Argument out of range - ${name} out of integer range: ${value}`);
|
|
183
|
-
}
|
|
184
|
-
const min = positive ? 1 : 0;
|
|
185
|
-
// 2 ** 32 === 4294967296
|
|
186
|
-
const max = 4294967295;
|
|
187
|
-
if (value < min || value > max) {
|
|
188
|
-
// throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value);
|
|
189
|
-
throw new Error(`Invalid argument - ${name} out of range >= ${min} && <= ${max}: ${value}`);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
export function hasAnyNotIn(set, checks) {
|
|
193
|
-
for (const s of set) {
|
|
194
|
-
if (!checks.includes(s)) {
|
|
195
|
-
return true;
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
return false;
|
|
199
|
-
}
|
|
200
|
-
export function lazyDOMException(message, domName) {
|
|
201
|
-
let cause = '';
|
|
202
|
-
if (typeof domName !== 'string') {
|
|
203
|
-
cause = `\nCaused by: ${domName.cause}`;
|
|
204
|
-
}
|
|
205
|
-
return new Error(`[${domName}]: ${message}${cause}`);
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
// from lib/internal/crypto/util.js
|
|
209
|
-
|
|
210
|
-
// The maximum buffer size that we'll support in the WebCrypto impl
|
|
211
|
-
const kMaxBufferLength = 2 ** 31 - 1;
|
|
212
|
-
|
|
213
|
-
// // The EC named curves that we currently support via the Web Crypto API.
|
|
214
|
-
// const kNamedCurveAliases = {
|
|
215
|
-
// 'P-256': 'prime256v1',
|
|
216
|
-
// 'P-384': 'secp384r1',
|
|
217
|
-
// 'P-521': 'secp521r1',
|
|
218
|
-
// };
|
|
219
|
-
|
|
220
|
-
// const kAesKeyLengths = [128, 192, 256];
|
|
221
|
-
|
|
222
|
-
// // These are the only hash algorithms we currently support via
|
|
223
|
-
// // the Web Crypto API.
|
|
224
|
-
// const kHashTypes = ['SHA-1', 'SHA-256', 'SHA-384', 'SHA-512'];
|
|
225
|
-
|
|
226
|
-
const kSupportedAlgorithms = {
|
|
227
|
-
'digest': {
|
|
228
|
-
'SHA-1': null,
|
|
229
|
-
'SHA-256': null,
|
|
230
|
-
'SHA-384': null,
|
|
231
|
-
'SHA-512': null
|
|
232
|
-
},
|
|
233
|
-
'generateKey': {
|
|
234
|
-
'RSASSA-PKCS1-v1_5': 'RsaHashedKeyGenParams',
|
|
235
|
-
'RSA-PSS': 'RsaHashedKeyGenParams',
|
|
236
|
-
'RSA-OAEP': 'RsaHashedKeyGenParams',
|
|
237
|
-
'ECDSA': 'EcKeyGenParams',
|
|
238
|
-
'ECDH': 'EcKeyGenParams',
|
|
239
|
-
'AES-CTR': 'AesKeyGenParams',
|
|
240
|
-
'AES-CBC': 'AesKeyGenParams',
|
|
241
|
-
'AES-GCM': 'AesKeyGenParams',
|
|
242
|
-
'AES-KW': 'AesKeyGenParams',
|
|
243
|
-
'HMAC': 'HmacKeyGenParams',
|
|
244
|
-
'X25519': null,
|
|
245
|
-
'Ed25519': null,
|
|
246
|
-
'X448': null,
|
|
247
|
-
'Ed448': null
|
|
248
|
-
},
|
|
249
|
-
'sign': {
|
|
250
|
-
'RSASSA-PKCS1-v1_5': null,
|
|
251
|
-
'RSA-PSS': 'RsaPssParams',
|
|
252
|
-
'ECDSA': 'EcdsaParams',
|
|
253
|
-
'HMAC': null,
|
|
254
|
-
'Ed25519': null,
|
|
255
|
-
'Ed448': 'Ed448Params'
|
|
256
|
-
},
|
|
257
|
-
'verify': {
|
|
258
|
-
'RSASSA-PKCS1-v1_5': null,
|
|
259
|
-
'RSA-PSS': 'RsaPssParams',
|
|
260
|
-
'ECDSA': 'EcdsaParams',
|
|
261
|
-
'HMAC': null,
|
|
262
|
-
'Ed25519': null,
|
|
263
|
-
'Ed448': 'Ed448Params'
|
|
264
|
-
},
|
|
265
|
-
'importKey': {
|
|
266
|
-
'RSASSA-PKCS1-v1_5': 'RsaHashedImportParams',
|
|
267
|
-
'RSA-PSS': 'RsaHashedImportParams',
|
|
268
|
-
'RSA-OAEP': 'RsaHashedImportParams',
|
|
269
|
-
'ECDSA': 'EcKeyImportParams',
|
|
270
|
-
'ECDH': 'EcKeyImportParams',
|
|
271
|
-
'HMAC': 'HmacImportParams',
|
|
272
|
-
'HKDF': null,
|
|
273
|
-
'PBKDF2': null,
|
|
274
|
-
'AES-CTR': null,
|
|
275
|
-
'AES-CBC': null,
|
|
276
|
-
'AES-GCM': null,
|
|
277
|
-
'AES-KW': null,
|
|
278
|
-
'Ed25519': null,
|
|
279
|
-
'X25519': null,
|
|
280
|
-
'Ed448': null,
|
|
281
|
-
'X448': null
|
|
282
|
-
},
|
|
283
|
-
'deriveBits': {
|
|
284
|
-
HKDF: 'HkdfParams',
|
|
285
|
-
PBKDF2: 'Pbkdf2Params',
|
|
286
|
-
ECDH: 'EcdhKeyDeriveParams',
|
|
287
|
-
X25519: 'EcdhKeyDeriveParams',
|
|
288
|
-
X448: 'EcdhKeyDeriveParams'
|
|
289
|
-
},
|
|
290
|
-
'encrypt': {
|
|
291
|
-
'RSA-OAEP': 'RsaOaepParams',
|
|
292
|
-
'AES-CBC': 'AesCbcParams',
|
|
293
|
-
'AES-GCM': 'AesGcmParams',
|
|
294
|
-
'AES-CTR': 'AesCtrParams'
|
|
295
|
-
},
|
|
296
|
-
'decrypt': {
|
|
297
|
-
'RSA-OAEP': 'RsaOaepParams',
|
|
298
|
-
'AES-CBC': 'AesCbcParams',
|
|
299
|
-
'AES-GCM': 'AesGcmParams',
|
|
300
|
-
'AES-CTR': 'AesCtrParams'
|
|
301
|
-
},
|
|
302
|
-
'get key length': {
|
|
303
|
-
'AES-CBC': 'AesDerivedKeyParams',
|
|
304
|
-
'AES-CTR': 'AesDerivedKeyParams',
|
|
305
|
-
'AES-GCM': 'AesDerivedKeyParams',
|
|
306
|
-
'AES-KW': 'AesDerivedKeyParams',
|
|
307
|
-
'HMAC': 'HmacImportParams',
|
|
308
|
-
'HKDF': null,
|
|
309
|
-
'PBKDF2': null
|
|
310
|
-
},
|
|
311
|
-
'wrapKey': {
|
|
312
|
-
'AES-KW': null
|
|
313
|
-
},
|
|
314
|
-
'unwrapKey': {
|
|
315
|
-
'AES-KW': null
|
|
316
|
-
}
|
|
317
|
-
};
|
|
318
|
-
const simpleAlgorithmDictionaries = {
|
|
319
|
-
AesGcmParams: {
|
|
320
|
-
iv: 'BufferSource',
|
|
321
|
-
additionalData: 'BufferSource'
|
|
322
|
-
},
|
|
323
|
-
RsaHashedKeyGenParams: {
|
|
324
|
-
hash: 'HashAlgorithmIdentifier'
|
|
325
|
-
},
|
|
326
|
-
EcKeyGenParams: {},
|
|
327
|
-
HmacKeyGenParams: {
|
|
328
|
-
hash: 'HashAlgorithmIdentifier'
|
|
329
|
-
},
|
|
330
|
-
RsaPssParams: {},
|
|
331
|
-
EcdsaParams: {
|
|
332
|
-
hash: 'HashAlgorithmIdentifier'
|
|
333
|
-
},
|
|
334
|
-
HmacImportParams: {
|
|
335
|
-
hash: 'HashAlgorithmIdentifier'
|
|
336
|
-
},
|
|
337
|
-
HkdfParams: {
|
|
338
|
-
hash: 'HashAlgorithmIdentifier',
|
|
339
|
-
salt: 'BufferSource',
|
|
340
|
-
info: 'BufferSource'
|
|
341
|
-
},
|
|
342
|
-
Ed448Params: {
|
|
343
|
-
context: 'BufferSource'
|
|
344
|
-
},
|
|
345
|
-
Pbkdf2Params: {
|
|
346
|
-
hash: 'HashAlgorithmIdentifier',
|
|
347
|
-
salt: 'BufferSource'
|
|
348
|
-
},
|
|
349
|
-
RsaOaepParams: {
|
|
350
|
-
label: 'BufferSource'
|
|
351
|
-
},
|
|
352
|
-
RsaHashedImportParams: {
|
|
353
|
-
hash: 'HashAlgorithmIdentifier'
|
|
354
|
-
},
|
|
355
|
-
EcKeyImportParams: {}
|
|
356
|
-
};
|
|
357
|
-
export const validateMaxBufferLength = (data, name) => {
|
|
358
|
-
const length = typeof data === 'string' ? data.length : data.byteLength;
|
|
359
|
-
if (length > kMaxBufferLength) {
|
|
360
|
-
throw lazyDOMException(`${name} must be less than ${kMaxBufferLength + 1} bits`, 'OperationError');
|
|
361
|
-
}
|
|
362
|
-
};
|
|
363
|
-
|
|
364
|
-
// https://w3c.github.io/webcrypto/#algorithm-normalization-normalize-an-algorithm
|
|
365
|
-
// adapted for Node.js from Deno's implementation
|
|
366
|
-
// https://github.com/denoland/deno/blob/v1.29.1/ext/crypto/00_crypto.js#L195
|
|
367
|
-
export const normalizeAlgorithm = (algorithm, op) => {
|
|
368
|
-
if (typeof algorithm === 'string') {
|
|
369
|
-
return normalizeAlgorithm({
|
|
370
|
-
name: algorithm
|
|
371
|
-
}, op);
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
// 1.
|
|
375
|
-
const registeredAlgorithms = kSupportedAlgorithms[op];
|
|
376
|
-
// 2. 3.
|
|
377
|
-
// commented, because typescript takes care of this for us 🤞👀
|
|
378
|
-
// const initialAlg = webidl.converters.Algorithm(algorithm, {
|
|
379
|
-
// prefix: 'Failed to normalize algorithm',
|
|
380
|
-
// context: 'passed algorithm',
|
|
381
|
-
// });
|
|
382
|
-
|
|
383
|
-
// 4.
|
|
384
|
-
let algName = algorithm.name;
|
|
385
|
-
// @ts-expect-error
|
|
386
|
-
if (algName === undefined) return {
|
|
387
|
-
name: undefined
|
|
388
|
-
};
|
|
389
|
-
|
|
390
|
-
// 5.
|
|
391
|
-
let desiredType;
|
|
392
|
-
for (const key in registeredAlgorithms) {
|
|
393
|
-
if (!registeredAlgorithms.hasOwnProperty(key)) {
|
|
394
|
-
continue;
|
|
395
|
-
}
|
|
396
|
-
if (key.toUpperCase() === algName.toUpperCase()) {
|
|
397
|
-
algName = key;
|
|
398
|
-
// @ts-ignore
|
|
399
|
-
desiredType = registeredAlgorithms[algName];
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
if (desiredType === undefined) throw lazyDOMException('Unrecognized algorithm name', 'NotSupportedError');
|
|
403
|
-
|
|
404
|
-
// Fast path everything below if the registered dictionary is null
|
|
405
|
-
if (desiredType === null) return {
|
|
406
|
-
name: algName
|
|
407
|
-
};
|
|
408
|
-
|
|
409
|
-
// 6.
|
|
410
|
-
const normalizedAlgorithm = algorithm;
|
|
411
|
-
// TODO: implement this? Maybe via typescript?
|
|
412
|
-
// webidl.converters[desiredType](algorithm, {
|
|
413
|
-
// prefix: 'Failed to normalize algorithm',
|
|
414
|
-
// context: 'passed algorithm',
|
|
415
|
-
// });
|
|
416
|
-
// 7.
|
|
417
|
-
normalizedAlgorithm.name = algName;
|
|
418
|
-
|
|
419
|
-
// 9.
|
|
420
|
-
const dict = simpleAlgorithmDictionaries[desiredType];
|
|
421
|
-
// 10.
|
|
422
|
-
const dictKeys = dict ? Object.keys(dict) : [];
|
|
423
|
-
for (let i = 0; i < dictKeys.length; i++) {
|
|
424
|
-
const member = dictKeys[i] || '';
|
|
425
|
-
if (!dict?.hasOwnProperty(member)) continue;
|
|
426
|
-
// TODO: implement this? Maybe via typescript?
|
|
427
|
-
// const idlType = dict[member];
|
|
428
|
-
// const idlValue = normalizedAlgorithm[member];
|
|
429
|
-
// 3.
|
|
430
|
-
// if (idlType === 'BufferSource' && idlValue) {
|
|
431
|
-
// const isView = ArrayBufferIsView(idlValue);
|
|
432
|
-
// normalizedAlgorithm[member] = TypedArrayPrototypeSlice(
|
|
433
|
-
// new Uint8Array(
|
|
434
|
-
// isView ? getDataViewOrTypedArrayBuffer(idlValue) : idlValue,
|
|
435
|
-
// isView ? getDataViewOrTypedArrayByteOffset(idlValue) : 0,
|
|
436
|
-
// isView
|
|
437
|
-
// ? getDataViewOrTypedArrayByteLength(idlValue)
|
|
438
|
-
// : ArrayBufferPrototypeGetByteLength(idlValue)
|
|
439
|
-
// )
|
|
440
|
-
// );
|
|
441
|
-
// } else if (idlType === 'HashAlgorithmIdentifier') {
|
|
442
|
-
// normalizedAlgorithm[member] = normalizeAlgorithm(idlValue, 'digest');
|
|
443
|
-
// } else if (idlType === 'AlgorithmIdentifier') {
|
|
444
|
-
// // This extension point is not used by any supported algorithm (yet?)
|
|
445
|
-
// throw lazyDOMException('Not implemented.', 'NotSupportedError');
|
|
446
|
-
// }
|
|
447
|
-
}
|
|
448
|
-
return normalizedAlgorithm;
|
|
449
|
-
};
|
|
450
|
-
export const validateBitLength = (length, name, required = false) => {
|
|
451
|
-
if (length !== undefined || required) {
|
|
452
|
-
// validateNumber(length, name);
|
|
453
|
-
if (length < 0) throw new Error(`${name} > 0`);
|
|
454
|
-
if (length % 8) {
|
|
455
|
-
throw lazyDOMException(`${name}'s length (${length}) must be a multiple of 8`, 'InvalidArgument');
|
|
456
|
-
}
|
|
457
|
-
}
|
|
458
|
-
};
|
|
459
|
-
export const validateByteLength = (buf, name, target) => {
|
|
460
|
-
if (buf.byteLength !== target) {
|
|
461
|
-
throw lazyDOMException(`${name} must contain exactly ${target} bytes`, 'OperationError');
|
|
462
|
-
}
|
|
463
|
-
};
|
|
464
|
-
export const getUsagesUnion = (usageSet, ...usages) => {
|
|
465
|
-
const newset = [];
|
|
466
|
-
for (let n = 0; n < usages.length; n++) {
|
|
467
|
-
if (!usages[n] || usages[n] === undefined) continue;
|
|
468
|
-
if (usageSet.includes(usages[n])) newset.push(usages[n]);
|
|
469
|
-
}
|
|
470
|
-
return newset;
|
|
471
|
-
};
|
|
472
|
-
const kKeyOps = {
|
|
473
|
-
sign: 1,
|
|
474
|
-
verify: 2,
|
|
475
|
-
encrypt: 3,
|
|
476
|
-
decrypt: 4,
|
|
477
|
-
wrapKey: 5,
|
|
478
|
-
unwrapKey: 6,
|
|
479
|
-
deriveKey: 7,
|
|
480
|
-
deriveBits: 8
|
|
481
|
-
};
|
|
482
|
-
export const validateKeyOps = (keyOps, usagesSet) => {
|
|
483
|
-
if (keyOps === undefined) return;
|
|
484
|
-
if (!Array.isArray(keyOps)) {
|
|
485
|
-
throw lazyDOMException('keyData.key_ops', 'InvalidArgument');
|
|
486
|
-
}
|
|
487
|
-
let flags = 0;
|
|
488
|
-
for (let n = 0; n < keyOps.length; n++) {
|
|
489
|
-
const op = keyOps[n];
|
|
490
|
-
const op_flag = kKeyOps[op];
|
|
491
|
-
// Skipping unknown key ops
|
|
492
|
-
if (op_flag === undefined) continue;
|
|
493
|
-
// Have we seen it already? if so, error
|
|
494
|
-
// eslint-disable-next-line no-bitwise
|
|
495
|
-
if (flags & 1 << op_flag) throw lazyDOMException('Duplicate key operation', 'DataError');
|
|
496
|
-
// eslint-disable-next-line no-bitwise
|
|
497
|
-
flags |= 1 << op_flag;
|
|
498
|
-
|
|
499
|
-
// TODO(@jasnell): RFC7517 section 4.3 strong recommends validating
|
|
500
|
-
// key usage combinations. Specifically, it says that unrelated key
|
|
501
|
-
// ops SHOULD NOT be used together. We're not yet validating that here.
|
|
502
|
-
}
|
|
503
|
-
if (usagesSet !== undefined) {
|
|
504
|
-
for (const use of usagesSet) {
|
|
505
|
-
if (!keyOps.includes(use)) {
|
|
506
|
-
throw lazyDOMException('Key operations and usage mismatch', 'DataError');
|
|
507
|
-
}
|
|
508
|
-
}
|
|
509
|
-
}
|
|
510
|
-
};
|
|
511
|
-
|
|
512
|
-
// In WebCrypto, the publicExponent option in RSA is represented as a
|
|
513
|
-
// WebIDL "BigInteger"... that is, a Uint8Array that allows an arbitrary
|
|
514
|
-
// number of leading zero bits. Our conventional APIs for reading
|
|
515
|
-
// an unsigned int from a Buffer are not adequate. The implementation
|
|
516
|
-
// here is adapted from the chromium implementation here:
|
|
517
|
-
// https://github.com/chromium/chromium/blob/HEAD/third_party/blink/public/platform/web_crypto_algorithm_params.h, but ported to JavaScript
|
|
518
|
-
// Returns undefined if the conversion was unsuccessful.
|
|
519
|
-
export const bigIntArrayToUnsignedInt = input => {
|
|
520
|
-
let result = 0;
|
|
521
|
-
for (let n = 0; n < input.length; ++n) {
|
|
522
|
-
const n_reversed = input.length - n - 1;
|
|
523
|
-
if (n_reversed >= 4 && input[n]) return; // Too large
|
|
524
|
-
// @ts-ignore
|
|
525
|
-
// eslint-disable-next-line no-bitwise
|
|
526
|
-
result |= input[n] << 8 * n_reversed;
|
|
527
|
-
}
|
|
528
|
-
return result;
|
|
529
|
-
};
|
|
530
|
-
|
|
531
|
-
// TODO: these used to be shipped by crypto-browserify in quickcrypto v0.6
|
|
532
|
-
// could instead fetch from OpenSSL if needed and handle breaking changes
|
|
533
|
-
export const getHashes = () => ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160', 'sha224WithRSAEncryption', 'RSA-SHA224', 'sha256WithRSAEncryption', 'RSA-SHA256', 'sha384WithRSAEncryption', 'RSA-SHA384', 'sha512WithRSAEncryption', 'RSA-SHA512', 'RSA-SHA1', 'ecdsa-with-SHA1', 'sha256', 'sha224', 'sha384', 'sha512', 'DSA-SHA', 'DSA-SHA1', 'DSA', 'DSA-WITH-SHA224', 'DSA-SHA224', 'DSA-WITH-SHA256', 'DSA-SHA256', 'DSA-WITH-SHA384', 'DSA-SHA384', 'DSA-WITH-SHA512', 'DSA-SHA512', 'DSA-RIPEMD160', 'ripemd160WithRSA', 'RSA-RIPEMD160', 'md5WithRSAEncryption', 'RSA-MD5'];
|
|
534
|
-
|
|
535
|
-
// TODO: these used to be shipped by crypto-browserify in quickcrypto v0.6
|
|
536
|
-
// could instead fetch from OpenSSL if needed and handle breaking changes
|
|
537
|
-
export const getCiphers = () => ['des-ecb', 'des', 'des-cbc', 'des3', 'des-ede3-cbc', 'des-ede3', 'des-ede-cbc', 'des-ede', 'aes-128-ecb', 'aes-192-ecb', 'aes-256-ecb', 'aes-128-cbc', 'aes-192-cbc', 'aes-256-cbc', 'aes128', 'aes192', 'aes256', 'aes-128-cfb', 'aes-192-cfb', 'aes-256-cfb', 'aes-128-cfb8', 'aes-192-cfb8', 'aes-256-cfb8', 'aes-128-cfb1', 'aes-192-cfb1', 'aes-256-cfb1', 'aes-128-ofb', 'aes-192-ofb', 'aes-256-ofb', 'aes-128-ctr', 'aes-192-ctr', 'aes-256-ctr', 'aes-128-gcm', 'aes-192-gcm', 'aes-256-gcm'];
|
|
538
|
-
export * from './Hashnames';
|
|
539
|
-
//# sourceMappingURL=Utils.js.map
|
package/lib/module/Utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["Buffer","defaultEncoding","setDefaultEncoding","encoding","getDefaultEncoding","kEmptyObject","Object","freeze","create","toArrayBuffer","buf","buffer","slice","byteOffset","byteLength","ab","ArrayBuffer","length","view","Uint8Array","i","bufferLikeToArrayBuffer","isBuffer","isView","binaryLikeToArrayBuffer","input","Error","from","ab2str","toString","validateString","str","name","isString","validateFunction","f","isStringOrBuffer","val","validateObject","value","options","useDefaultOptions","allowArray","allowFunction","nullable","Array","isArray","validateInt32","min","max","Number","isInteger","validateUint32","positive","hasAnyNotIn","set","checks","s","includes","lazyDOMException","message","domName","cause","kMaxBufferLength","kSupportedAlgorithms","HKDF","PBKDF2","ECDH","X25519","X448","simpleAlgorithmDictionaries","AesGcmParams","iv","additionalData","RsaHashedKeyGenParams","hash","EcKeyGenParams","HmacKeyGenParams","RsaPssParams","EcdsaParams","HmacImportParams","HkdfParams","salt","info","Ed448Params","context","Pbkdf2Params","RsaOaepParams","label","RsaHashedImportParams","EcKeyImportParams","validateMaxBufferLength","data","normalizeAlgorithm","algorithm","op","registeredAlgorithms","algName","undefined","desiredType","key","hasOwnProperty","toUpperCase","normalizedAlgorithm","dict","dictKeys","keys","member","validateBitLength","required","validateByteLength","target","getUsagesUnion","usageSet","usages","newset","n","push","kKeyOps","sign","verify","encrypt","decrypt","wrapKey","unwrapKey","deriveKey","deriveBits","validateKeyOps","keyOps","usagesSet","flags","op_flag","use","bigIntArrayToUnsignedInt","result","n_reversed","getHashes","getCiphers"],"sourceRoot":"../../src","sources":["Utils.ts"],"mappings":"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","ignoreList":[]}
|