react-native-quick-crypto 0.2.0 → 0.3.0
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/README.md +23 -6
- package/cpp/Cipher/MGLCipherHostObject.cpp +64 -48
- package/cpp/Cipher/MGLCipherKeys.cpp +1469 -0
- package/cpp/Cipher/MGLCipherKeys.h +124 -0
- package/cpp/Cipher/MGLCreateCipherInstaller.cpp +56 -53
- package/cpp/Cipher/MGLCreateCipherInstaller.h +5 -0
- package/cpp/Cipher/MGLCreateDecipherInstaller.cpp +56 -53
- package/cpp/Cipher/MGLGenerateKeyPairInstaller.cpp +107 -0
- package/cpp/Cipher/MGLGenerateKeyPairInstaller.h +32 -0
- package/cpp/Cipher/MGLGenerateKeyPairSyncInstaller.cpp +60 -0
- package/cpp/Cipher/MGLGenerateKeyPairSyncInstaller.h +35 -0
- package/cpp/Cipher/MGLPublicCipher.h +120 -0
- package/cpp/Cipher/MGLPublicCipherInstaller.h +113 -0
- package/cpp/Cipher/MGLRsa.cpp +188 -0
- package/cpp/Cipher/MGLRsa.h +61 -0
- package/cpp/JSIUtils/MGLJSIUtils.h +24 -0
- package/cpp/JSIUtils/MGLThreadAwareHostObject.h +1 -1
- package/cpp/MGLQuickCryptoHostObject.cpp +42 -3
- package/cpp/Utils/MGLUtils.cpp +156 -0
- package/cpp/Utils/MGLUtils.h +254 -0
- package/lib/commonjs/Cipher.js +307 -0
- package/lib/commonjs/Cipher.js.map +1 -1
- package/lib/commonjs/NativeQuickCrypto/Cipher.js +11 -0
- package/lib/commonjs/NativeQuickCrypto/Cipher.js.map +1 -1
- package/lib/commonjs/NativeQuickCrypto/NativeQuickCrypto.js.map +1 -1
- package/lib/commonjs/QuickCrypto.js +8 -0
- package/lib/commonjs/QuickCrypto.js.map +1 -1
- package/lib/commonjs/Utils.js +82 -1
- package/lib/commonjs/Utils.js.map +1 -1
- package/lib/commonjs/constants.js +86 -0
- package/lib/commonjs/constants.js.map +1 -0
- package/lib/commonjs/index.js +5 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/keys.js +207 -0
- package/lib/commonjs/keys.js.map +1 -0
- package/lib/module/Cipher.js +296 -3
- package/lib/module/Cipher.js.map +1 -1
- package/lib/module/NativeQuickCrypto/Cipher.js +9 -1
- package/lib/module/NativeQuickCrypto/Cipher.js.map +1 -1
- package/lib/module/NativeQuickCrypto/NativeQuickCrypto.js.map +1 -1
- package/lib/module/QuickCrypto.js +8 -1
- package/lib/module/QuickCrypto.js.map +1 -1
- package/lib/module/Utils.js +67 -1
- package/lib/module/Utils.js.map +1 -1
- package/lib/module/constants.js +79 -0
- package/lib/module/constants.js.map +1 -0
- package/lib/module/index.js +2 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/keys.js +193 -0
- package/lib/module/keys.js.map +1 -0
- package/lib/typescript/Cipher.d.ts +58 -1
- package/lib/typescript/NativeQuickCrypto/Cipher.d.ts +10 -0
- package/lib/typescript/NativeQuickCrypto/NativeQuickCrypto.d.ts +6 -1
- package/lib/typescript/QuickCrypto.d.ts +105 -1
- package/lib/typescript/Utils.d.ts +11 -0
- package/lib/typescript/constants.d.ts +75 -0
- package/lib/typescript/index.d.ts +2 -0
- package/lib/typescript/keys.d.ts +60 -0
- package/package.json +5 -5
- package/react-native-quick-crypto.podspec +1 -1
- package/src/.DS_Store +0 -0
- package/src/Cipher.ts +444 -3
- package/src/NativeQuickCrypto/Cipher.ts +44 -0
- package/src/NativeQuickCrypto/NativeQuickCrypto.ts +13 -1
- package/src/QuickCrypto.ts +12 -0
- package/src/Utils.ts +91 -0
- package/src/constants.ts +79 -0
- package/src/index.ts +4 -0
- package/src/keys.ts +297 -0
package/lib/module/Utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Utils.ts"],"names":["Buffer","defaultEncoding","setDefaultEncoding","encoding","getDefaultEncoding","isBuffer","buf","constructor","name","toArrayBuffer","buffer","slice","byteOffset","byteLength","ab","ArrayBuffer","length","view","Uint8Array","i","binaryLikeToArrayBuffer","input","from","ab2str","toString"],"mappings":"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","sourcesContent":["import { Buffer } from '@craftzdog/react-native-buffer';\n\nexport type BinaryLike = string | ArrayBuffer | Buffer;\n\nexport type BinaryToTextEncoding = 'base64' | 'base64url' | 'hex' | 'binary';\nexport type CharacterEncoding = 'utf8' | 'utf-8' | 'utf16le' | 'latin1';\nexport type LegacyCharacterEncoding = 'ascii' | 'binary' | 'ucs2' | 'ucs-2';\nexport type Encoding =\n | BinaryToTextEncoding\n | CharacterEncoding\n | LegacyCharacterEncoding;\n\n// TODO(osp) should buffer be part of the Encoding type?\nexport type CipherEncoding = Encoding | 'buffer';\n\n// Mimics node behavior for default global encoding\nlet defaultEncoding: CipherEncoding = 'buffer';\n\nexport function setDefaultEncoding(encoding: CipherEncoding) {\n defaultEncoding = encoding;\n}\n\nexport function getDefaultEncoding(): CipherEncoding {\n return defaultEncoding;\n}\n\n// function slowCases(enc: string) {\n// switch (enc.length) {\n// case 4:\n// if (enc === 'UTF8') return 'utf8';\n// if (enc === 'ucs2' || enc === 'UCS2') return 'utf16le';\n// enc = `${enc}`.toLowerCase();\n// if (enc === 'utf8') return 'utf8';\n// if (enc === 'ucs2') return 'utf16le';\n// break;\n// case 3:\n// if (enc === 'hex' || enc === 'HEX' || `${enc}`.toLowerCase() === 'hex')\n// return 'hex';\n// break;\n// case 5:\n// if (enc === 'ascii') return 'ascii';\n// if (enc === 'ucs-2') return 'utf16le';\n// if (enc === 'UTF-8') return 'utf8';\n// if (enc === 'ASCII') return 'ascii';\n// if (enc === 'UCS-2') return 'utf16le';\n// enc = `${enc}`.toLowerCase();\n// if (enc === 'utf-8') return 'utf8';\n// if (enc === 'ascii') return 'ascii';\n// if (enc === 'ucs-2') return 'utf16le';\n// break;\n// case 6:\n// if (enc === 'base64') return 'base64';\n// if (enc === 'latin1' || enc === 'binary') return 'latin1';\n// if (enc === 'BASE64') return 'base64';\n// if (enc === 'LATIN1' || enc === 'BINARY') return 'latin1';\n// enc = `${enc}`.toLowerCase();\n// if (enc === 'base64') return 'base64';\n// if (enc === 'latin1' || enc === 'binary') return 'latin1';\n// break;\n// case 7:\n// if (\n// enc === 'utf16le' ||\n// enc === 'UTF16LE' ||\n// `${enc}`.toLowerCase() === 'utf16le'\n// )\n// return 'utf16le';\n// break;\n// case 8:\n// if (\n// enc === 'utf-16le' ||\n// enc === 'UTF-16LE' ||\n// `${enc}`.toLowerCase() === 'utf-16le'\n// )\n// return 'utf16le';\n// break;\n// case 9:\n// if (\n// enc === 'base64url' ||\n// enc === 'BASE64URL' ||\n// `${enc}`.toLowerCase() === 'base64url'\n// )\n// return 'base64url';\n// break;\n// default:\n// if (enc === '') return 'utf8';\n// }\n// }\n\n// // Return undefined if there is no match.\n// // Move the \"slow cases\" to a separate function to make sure this function gets\n// // inlined properly. That prioritizes the common case.\n// export function normalizeEncoding(enc?: string) {\n// if (enc == null || enc === 'utf8' || enc === 'utf-8') return 'utf8';\n// return slowCases(enc);\n// }\n\nexport function isBuffer(buf: any): buf is Buffer {\n return buf instanceof Buffer || buf?.constructor?.name === 'Buffer';\n}\n\nexport function toArrayBuffer(buf: Buffer): ArrayBuffer {\n if (buf?.buffer?.slice) {\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n }\n const ab = new ArrayBuffer(buf.length);\n const view = new Uint8Array(ab);\n for (let i = 0; i < buf.length; ++i) {\n view[i] = buf[i];\n }\n return ab;\n}\n\nexport function binaryLikeToArrayBuffer(\n input: BinaryLike,\n encoding: string = 'utf-8'\n): ArrayBuffer {\n if (typeof input === 'string') {\n const buffer = Buffer.from(input, encoding);\n\n return buffer.buffer.slice(\n buffer.byteOffset,\n buffer.byteOffset + buffer.byteLength\n );\n }\n\n if (isBuffer(input)) {\n return toArrayBuffer(input);\n }\n\n // TODO add further binary types to BinaryLike, UInt8Array and so for have this array as property\n if ((input as any).buffer) {\n return (input as any).buffer;\n }\n\n if (!(input instanceof ArrayBuffer)) {\n try {\n const buffer = Buffer.from(input);\n return buffer.buffer.slice(\n buffer.byteOffset,\n buffer.byteOffset + buffer.byteLength\n );\n } catch {\n throw 'error';\n }\n }\n return input;\n}\n\nexport function ab2str(buf: ArrayBuffer, encoding: string = 'hex') {\n return Buffer.from(buf).toString(encoding);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Utils.ts"],"names":["Buffer","defaultEncoding","setDefaultEncoding","encoding","getDefaultEncoding","kEmptyObject","Object","freeze","create","isBuffer","buf","constructor","name","toArrayBuffer","buffer","slice","byteOffset","byteLength","ab","ArrayBuffer","length","view","Uint8Array","i","binaryLikeToArrayBuffer","input","from","ab2str","toString","validateString","str","isString","Error","validateFunction","f","isStringOrBuffer","val","isView","validateObject","value","options","useDefaultOptions","allowArray","allowFunction","nullable","Array","isArray","validateInt32","min","max","Number","isInteger","validateUint32","positive"],"mappings":"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","sourcesContent":["import { Buffer } from '@craftzdog/react-native-buffer';\n\nexport type BinaryLike = string | ArrayBuffer | Buffer;\n\nexport type BinaryToTextEncoding = 'base64' | 'base64url' | 'hex' | 'binary';\nexport type CharacterEncoding = 'utf8' | 'utf-8' | 'utf16le' | 'latin1';\nexport type LegacyCharacterEncoding = 'ascii' | 'binary' | 'ucs2' | 'ucs-2';\nexport type Encoding =\n | BinaryToTextEncoding\n | CharacterEncoding\n | LegacyCharacterEncoding;\n\n// TODO(osp) should buffer be part of the Encoding type?\nexport type CipherEncoding = Encoding | 'buffer';\n\n// Mimics node behavior for default global encoding\nlet defaultEncoding: CipherEncoding = 'buffer';\n\nexport function setDefaultEncoding(encoding: CipherEncoding) {\n defaultEncoding = encoding;\n}\n\nexport function getDefaultEncoding(): CipherEncoding {\n return defaultEncoding;\n}\n\nexport const kEmptyObject = Object.freeze(Object.create(null));\n\n// Should be used by Cipher (or any other module that requires valid encodings)\n// function slowCases(enc: string) {\n// switch (enc.length) {\n// case 4:\n// if (enc === 'UTF8') return 'utf8';\n// if (enc === 'ucs2' || enc === 'UCS2') return 'utf16le';\n// enc = `${enc}`.toLowerCase();\n// if (enc === 'utf8') return 'utf8';\n// if (enc === 'ucs2') return 'utf16le';\n// break;\n// case 3:\n// if (enc === 'hex' || enc === 'HEX' || `${enc}`.toLowerCase() === 'hex')\n// return 'hex';\n// break;\n// case 5:\n// if (enc === 'ascii') return 'ascii';\n// if (enc === 'ucs-2') return 'utf16le';\n// if (enc === 'UTF-8') return 'utf8';\n// if (enc === 'ASCII') return 'ascii';\n// if (enc === 'UCS-2') return 'utf16le';\n// enc = `${enc}`.toLowerCase();\n// if (enc === 'utf-8') return 'utf8';\n// if (enc === 'ascii') return 'ascii';\n// if (enc === 'ucs-2') return 'utf16le';\n// break;\n// case 6:\n// if (enc === 'base64') return 'base64';\n// if (enc === 'latin1' || enc === 'binary') return 'latin1';\n// if (enc === 'BASE64') return 'base64';\n// if (enc === 'LATIN1' || enc === 'BINARY') return 'latin1';\n// enc = `${enc}`.toLowerCase();\n// if (enc === 'base64') return 'base64';\n// if (enc === 'latin1' || enc === 'binary') return 'latin1';\n// break;\n// case 7:\n// if (\n// enc === 'utf16le' ||\n// enc === 'UTF16LE' ||\n// `${enc}`.toLowerCase() === 'utf16le'\n// )\n// return 'utf16le';\n// break;\n// case 8:\n// if (\n// enc === 'utf-16le' ||\n// enc === 'UTF-16LE' ||\n// `${enc}`.toLowerCase() === 'utf-16le'\n// )\n// return 'utf16le';\n// break;\n// case 9:\n// if (\n// enc === 'base64url' ||\n// enc === 'BASE64URL' ||\n// `${enc}`.toLowerCase() === 'base64url'\n// )\n// return 'base64url';\n// break;\n// default:\n// if (enc === '') return 'utf8';\n// }\n// }\n\n// // Return undefined if there is no match.\n// // Move the \"slow cases\" to a separate function to make sure this function gets\n// // inlined properly. That prioritizes the common case.\n// export function normalizeEncoding(enc?: string) {\n// if (enc == null || enc === 'utf8' || enc === 'utf-8') return 'utf8';\n// return slowCases(enc);\n// }\n\nexport function isBuffer(buf: any): buf is Buffer {\n return buf instanceof Buffer || buf?.constructor?.name === 'Buffer';\n}\n\nexport function toArrayBuffer(buf: Buffer): ArrayBuffer {\n if (buf?.buffer?.slice) {\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n }\n const ab = new ArrayBuffer(buf.length);\n const view = new Uint8Array(ab);\n for (let i = 0; i < buf.length; ++i) {\n view[i] = buf[i];\n }\n return ab;\n}\n\nexport function binaryLikeToArrayBuffer(\n input: BinaryLike,\n encoding: string = 'utf-8'\n): ArrayBuffer {\n if (typeof input === 'string') {\n const buffer = Buffer.from(input, encoding);\n\n return buffer.buffer.slice(\n buffer.byteOffset,\n buffer.byteOffset + buffer.byteLength\n );\n }\n\n if (isBuffer(input)) {\n return toArrayBuffer(input);\n }\n\n // TODO add further binary types to BinaryLike, UInt8Array and so for have this array as property\n if ((input as any).buffer) {\n return (input as any).buffer;\n }\n\n if (!(input instanceof ArrayBuffer)) {\n try {\n const buffer = Buffer.from(input);\n return buffer.buffer.slice(\n buffer.byteOffset,\n buffer.byteOffset + buffer.byteLength\n );\n } catch {\n throw 'error';\n }\n }\n return input;\n}\n\nexport function ab2str(buf: ArrayBuffer, encoding: string = 'hex') {\n return Buffer.from(buf).toString(encoding);\n}\n\nexport function validateString(str: any, name?: string): str is string {\n const isString = typeof str === 'string';\n if (isString) {\n throw new Error(`${name} is not a string`);\n }\n return isString;\n}\n\nexport function validateFunction(f: any): f is Function {\n return f != null && typeof f === 'function';\n}\n\nexport function isStringOrBuffer(val: any): val is string | ArrayBuffer {\n return typeof val === 'string' || ArrayBuffer.isView(val);\n}\n\nexport function validateObject<T>(\n value: any,\n name: string,\n options?: {\n allowArray: boolean;\n allowFunction: boolean;\n nullable: boolean;\n } | null\n): value is T {\n const useDefaultOptions = options == null;\n const allowArray = useDefaultOptions ? false : options.allowArray;\n const allowFunction = useDefaultOptions ? false : options.allowFunction;\n const nullable = useDefaultOptions ? false : options.nullable;\n if (\n (!nullable && value === null) ||\n (!allowArray && Array.isArray(value)) ||\n (typeof value !== 'object' &&\n (!allowFunction || typeof value !== 'function'))\n ) {\n throw new Error(`${name} is not a valid object $${value}`);\n }\n return true;\n}\n\nexport function validateInt32(\n value: any,\n name: string,\n min = -2147483648,\n max = 2147483647\n) {\n // The defaults for min and max correspond to the limits of 32-bit integers.\n if (typeof value !== 'number') {\n throw new Error(`Invalid argument - ${name} is not a number: ${value}`);\n }\n if (!Number.isInteger(value)) {\n throw new Error(\n `Argument out of range - ${name} out of integer range: ${value}`\n );\n }\n if (value < min || value > max) {\n throw new Error(\n `Invalid argument - ${name} out of range >= ${min} && <= ${max}: ${value}`\n );\n }\n}\n\nexport function validateUint32(\n value: number,\n name: string,\n positive?: boolean\n) {\n if (typeof value !== 'number') {\n // throw new ERR_INVALID_ARG_TYPE(name, 'number', value);\n throw new Error(`Invalid argument - ${name} is not a number: ${value}`);\n }\n if (!Number.isInteger(value)) {\n // throw new ERR_OUT_OF_RANGE(name, 'an integer', value);\n throw new Error(\n `Argument out of range - ${name} out of integer range: ${value}`\n );\n }\n const min = positive ? 1 : 0;\n // 2 ** 32 === 4294967296\n const max = 4_294_967_295;\n if (value < min || value > max) {\n // throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value);\n throw new Error(\n `Invalid argument - ${name} out of range >= ${min} && <= ${max}: ${value}`\n );\n }\n}\n"]}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// Taken by printing node.crypto.constants
|
|
2
|
+
// Node declares them as enums on v8 directly
|
|
3
|
+
// Whenever the API gets updated (or some dependency like OpenSSL) I guess we will have to revisit these
|
|
4
|
+
export const constants = {
|
|
5
|
+
OPENSSL_VERSION_NUMBER: 269488367,
|
|
6
|
+
SSL_OP_ALL: 2147485780,
|
|
7
|
+
SSL_OP_ALLOW_NO_DHE_KEX: 1024,
|
|
8
|
+
SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: 262144,
|
|
9
|
+
SSL_OP_CIPHER_SERVER_PREFERENCE: 4194304,
|
|
10
|
+
SSL_OP_CISCO_ANYCONNECT: 32768,
|
|
11
|
+
SSL_OP_COOKIE_EXCHANGE: 8192,
|
|
12
|
+
SSL_OP_CRYPTOPRO_TLSEXT_BUG: 2147483648,
|
|
13
|
+
SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: 2048,
|
|
14
|
+
SSL_OP_EPHEMERAL_RSA: 0,
|
|
15
|
+
SSL_OP_LEGACY_SERVER_CONNECT: 4,
|
|
16
|
+
SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER: 0,
|
|
17
|
+
SSL_OP_MICROSOFT_SESS_ID_BUG: 0,
|
|
18
|
+
SSL_OP_MSIE_SSLV2_RSA_PADDING: 0,
|
|
19
|
+
SSL_OP_NETSCAPE_CA_DN_BUG: 0,
|
|
20
|
+
SSL_OP_NETSCAPE_CHALLENGE_BUG: 0,
|
|
21
|
+
SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG: 0,
|
|
22
|
+
SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: 0,
|
|
23
|
+
SSL_OP_NO_COMPRESSION: 131072,
|
|
24
|
+
SSL_OP_NO_ENCRYPT_THEN_MAC: 524288,
|
|
25
|
+
SSL_OP_NO_QUERY_MTU: 4096,
|
|
26
|
+
SSL_OP_NO_RENEGOTIATION: 1073741824,
|
|
27
|
+
SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION: 65536,
|
|
28
|
+
SSL_OP_NO_SSLv2: 0,
|
|
29
|
+
SSL_OP_NO_SSLv3: 33554432,
|
|
30
|
+
SSL_OP_NO_TICKET: 16384,
|
|
31
|
+
SSL_OP_NO_TLSv1: 67108864,
|
|
32
|
+
SSL_OP_NO_TLSv1_1: 268435456,
|
|
33
|
+
SSL_OP_NO_TLSv1_2: 134217728,
|
|
34
|
+
SSL_OP_NO_TLSv1_3: 536870912,
|
|
35
|
+
SSL_OP_PKCS1_CHECK_1: 0,
|
|
36
|
+
SSL_OP_PKCS1_CHECK_2: 0,
|
|
37
|
+
SSL_OP_PRIORITIZE_CHACHA: 2097152,
|
|
38
|
+
SSL_OP_SINGLE_DH_USE: 0,
|
|
39
|
+
SSL_OP_SINGLE_ECDH_USE: 0,
|
|
40
|
+
SSL_OP_SSLEAY_080_CLIENT_DH_BUG: 0,
|
|
41
|
+
SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG: 0,
|
|
42
|
+
SSL_OP_TLS_BLOCK_PADDING_BUG: 0,
|
|
43
|
+
SSL_OP_TLS_D5_BUG: 0,
|
|
44
|
+
SSL_OP_TLS_ROLLBACK_BUG: 8388608,
|
|
45
|
+
ENGINE_METHOD_RSA: 1,
|
|
46
|
+
ENGINE_METHOD_DSA: 2,
|
|
47
|
+
ENGINE_METHOD_DH: 4,
|
|
48
|
+
ENGINE_METHOD_RAND: 8,
|
|
49
|
+
ENGINE_METHOD_EC: 2048,
|
|
50
|
+
ENGINE_METHOD_CIPHERS: 64,
|
|
51
|
+
ENGINE_METHOD_DIGESTS: 128,
|
|
52
|
+
ENGINE_METHOD_PKEY_METHS: 512,
|
|
53
|
+
ENGINE_METHOD_PKEY_ASN1_METHS: 1024,
|
|
54
|
+
ENGINE_METHOD_ALL: 65535,
|
|
55
|
+
ENGINE_METHOD_NONE: 0,
|
|
56
|
+
DH_CHECK_P_NOT_SAFE_PRIME: 2,
|
|
57
|
+
DH_CHECK_P_NOT_PRIME: 1,
|
|
58
|
+
DH_UNABLE_TO_CHECK_GENERATOR: 4,
|
|
59
|
+
DH_NOT_SUITABLE_GENERATOR: 8,
|
|
60
|
+
ALPN_ENABLED: 1,
|
|
61
|
+
RSA_PKCS1_PADDING: 1,
|
|
62
|
+
RSA_SSLV23_PADDING: 2,
|
|
63
|
+
RSA_NO_PADDING: 3,
|
|
64
|
+
RSA_PKCS1_OAEP_PADDING: 4,
|
|
65
|
+
RSA_X931_PADDING: 5,
|
|
66
|
+
RSA_PKCS1_PSS_PADDING: 6,
|
|
67
|
+
RSA_PSS_SALTLEN_DIGEST: -1,
|
|
68
|
+
RSA_PSS_SALTLEN_MAX_SIGN: -2,
|
|
69
|
+
RSA_PSS_SALTLEN_AUTO: -2,
|
|
70
|
+
defaultCoreCipherList: 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!SRP:!CAMELLIA',
|
|
71
|
+
TLS1_VERSION: 769,
|
|
72
|
+
TLS1_1_VERSION: 770,
|
|
73
|
+
TLS1_2_VERSION: 771,
|
|
74
|
+
TLS1_3_VERSION: 772,
|
|
75
|
+
POINT_CONVERSION_COMPRESSED: 2,
|
|
76
|
+
POINT_CONVERSION_UNCOMPRESSED: 4,
|
|
77
|
+
POINT_CONVERSION_HYBRID: 6
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["constants.ts"],"names":["constants","OPENSSL_VERSION_NUMBER","SSL_OP_ALL","SSL_OP_ALLOW_NO_DHE_KEX","SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION","SSL_OP_CIPHER_SERVER_PREFERENCE","SSL_OP_CISCO_ANYCONNECT","SSL_OP_COOKIE_EXCHANGE","SSL_OP_CRYPTOPRO_TLSEXT_BUG","SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS","SSL_OP_EPHEMERAL_RSA","SSL_OP_LEGACY_SERVER_CONNECT","SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER","SSL_OP_MICROSOFT_SESS_ID_BUG","SSL_OP_MSIE_SSLV2_RSA_PADDING","SSL_OP_NETSCAPE_CA_DN_BUG","SSL_OP_NETSCAPE_CHALLENGE_BUG","SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG","SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG","SSL_OP_NO_COMPRESSION","SSL_OP_NO_ENCRYPT_THEN_MAC","SSL_OP_NO_QUERY_MTU","SSL_OP_NO_RENEGOTIATION","SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION","SSL_OP_NO_SSLv2","SSL_OP_NO_SSLv3","SSL_OP_NO_TICKET","SSL_OP_NO_TLSv1","SSL_OP_NO_TLSv1_1","SSL_OP_NO_TLSv1_2","SSL_OP_NO_TLSv1_3","SSL_OP_PKCS1_CHECK_1","SSL_OP_PKCS1_CHECK_2","SSL_OP_PRIORITIZE_CHACHA","SSL_OP_SINGLE_DH_USE","SSL_OP_SINGLE_ECDH_USE","SSL_OP_SSLEAY_080_CLIENT_DH_BUG","SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG","SSL_OP_TLS_BLOCK_PADDING_BUG","SSL_OP_TLS_D5_BUG","SSL_OP_TLS_ROLLBACK_BUG","ENGINE_METHOD_RSA","ENGINE_METHOD_DSA","ENGINE_METHOD_DH","ENGINE_METHOD_RAND","ENGINE_METHOD_EC","ENGINE_METHOD_CIPHERS","ENGINE_METHOD_DIGESTS","ENGINE_METHOD_PKEY_METHS","ENGINE_METHOD_PKEY_ASN1_METHS","ENGINE_METHOD_ALL","ENGINE_METHOD_NONE","DH_CHECK_P_NOT_SAFE_PRIME","DH_CHECK_P_NOT_PRIME","DH_UNABLE_TO_CHECK_GENERATOR","DH_NOT_SUITABLE_GENERATOR","ALPN_ENABLED","RSA_PKCS1_PADDING","RSA_SSLV23_PADDING","RSA_NO_PADDING","RSA_PKCS1_OAEP_PADDING","RSA_X931_PADDING","RSA_PKCS1_PSS_PADDING","RSA_PSS_SALTLEN_DIGEST","RSA_PSS_SALTLEN_MAX_SIGN","RSA_PSS_SALTLEN_AUTO","defaultCoreCipherList","TLS1_VERSION","TLS1_1_VERSION","TLS1_2_VERSION","TLS1_3_VERSION","POINT_CONVERSION_COMPRESSED","POINT_CONVERSION_UNCOMPRESSED","POINT_CONVERSION_HYBRID"],"mappings":"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","sourcesContent":["// Taken by printing node.crypto.constants\n// Node declares them as enums on v8 directly\n// Whenever the API gets updated (or some dependency like OpenSSL) I guess we will have to revisit these\nexport const constants = {\n OPENSSL_VERSION_NUMBER: 269488367,\n SSL_OP_ALL: 2147485780,\n SSL_OP_ALLOW_NO_DHE_KEX: 1024,\n SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: 262144,\n SSL_OP_CIPHER_SERVER_PREFERENCE: 4194304,\n SSL_OP_CISCO_ANYCONNECT: 32768,\n SSL_OP_COOKIE_EXCHANGE: 8192,\n SSL_OP_CRYPTOPRO_TLSEXT_BUG: 2147483648,\n SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: 2048,\n SSL_OP_EPHEMERAL_RSA: 0,\n SSL_OP_LEGACY_SERVER_CONNECT: 4,\n SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER: 0,\n SSL_OP_MICROSOFT_SESS_ID_BUG: 0,\n SSL_OP_MSIE_SSLV2_RSA_PADDING: 0,\n SSL_OP_NETSCAPE_CA_DN_BUG: 0,\n SSL_OP_NETSCAPE_CHALLENGE_BUG: 0,\n SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG: 0,\n SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: 0,\n SSL_OP_NO_COMPRESSION: 131072,\n SSL_OP_NO_ENCRYPT_THEN_MAC: 524288,\n SSL_OP_NO_QUERY_MTU: 4096,\n SSL_OP_NO_RENEGOTIATION: 1073741824,\n SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION: 65536,\n SSL_OP_NO_SSLv2: 0,\n SSL_OP_NO_SSLv3: 33554432,\n SSL_OP_NO_TICKET: 16384,\n SSL_OP_NO_TLSv1: 67108864,\n SSL_OP_NO_TLSv1_1: 268435456,\n SSL_OP_NO_TLSv1_2: 134217728,\n SSL_OP_NO_TLSv1_3: 536870912,\n SSL_OP_PKCS1_CHECK_1: 0,\n SSL_OP_PKCS1_CHECK_2: 0,\n SSL_OP_PRIORITIZE_CHACHA: 2097152,\n SSL_OP_SINGLE_DH_USE: 0,\n SSL_OP_SINGLE_ECDH_USE: 0,\n SSL_OP_SSLEAY_080_CLIENT_DH_BUG: 0,\n SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG: 0,\n SSL_OP_TLS_BLOCK_PADDING_BUG: 0,\n SSL_OP_TLS_D5_BUG: 0,\n SSL_OP_TLS_ROLLBACK_BUG: 8388608,\n ENGINE_METHOD_RSA: 1,\n ENGINE_METHOD_DSA: 2,\n ENGINE_METHOD_DH: 4,\n ENGINE_METHOD_RAND: 8,\n ENGINE_METHOD_EC: 2048,\n ENGINE_METHOD_CIPHERS: 64,\n ENGINE_METHOD_DIGESTS: 128,\n ENGINE_METHOD_PKEY_METHS: 512,\n ENGINE_METHOD_PKEY_ASN1_METHS: 1024,\n ENGINE_METHOD_ALL: 65535,\n ENGINE_METHOD_NONE: 0,\n DH_CHECK_P_NOT_SAFE_PRIME: 2,\n DH_CHECK_P_NOT_PRIME: 1,\n DH_UNABLE_TO_CHECK_GENERATOR: 4,\n DH_NOT_SUITABLE_GENERATOR: 8,\n ALPN_ENABLED: 1,\n RSA_PKCS1_PADDING: 1,\n RSA_SSLV23_PADDING: 2,\n RSA_NO_PADDING: 3,\n RSA_PKCS1_OAEP_PADDING: 4,\n RSA_X931_PADDING: 5,\n RSA_PKCS1_PSS_PADDING: 6,\n RSA_PSS_SALTLEN_DIGEST: -1,\n RSA_PSS_SALTLEN_MAX_SIGN: -2,\n RSA_PSS_SALTLEN_AUTO: -2,\n defaultCoreCipherList:\n 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!SRP:!CAMELLIA',\n TLS1_VERSION: 769,\n TLS1_1_VERSION: 770,\n TLS1_2_VERSION: 771,\n TLS1_3_VERSION: 772,\n POINT_CONVERSION_COMPRESSED: 2,\n POINT_CONVERSION_UNCOMPRESSED: 4,\n POINT_CONVERSION_HYBRID: 6,\n};\n"]}
|
package/lib/module/index.js
CHANGED
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAd","sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["QuickCrypto"],"mappings":"AAAA,SAASA,WAAT,QAA4B,eAA5B;AAEA,cAAc,eAAd;AAEA,eAAeA,WAAf","sourcesContent":["import { QuickCrypto } from './QuickCrypto';\n\nexport * from './QuickCrypto';\n\nexport default QuickCrypto;\n"]}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { binaryLikeToArrayBuffer, isStringOrBuffer } from './Utils'; // On node this value is defined on the native side, for now I'm just creating it here in JS
|
|
2
|
+
// TODO(osp) move this into native side to make sure they always match
|
|
3
|
+
|
|
4
|
+
var KFormatType;
|
|
5
|
+
|
|
6
|
+
(function (KFormatType) {
|
|
7
|
+
KFormatType[KFormatType["kKeyFormatDER"] = 0] = "kKeyFormatDER";
|
|
8
|
+
KFormatType[KFormatType["kKeyFormatPEM"] = 1] = "kKeyFormatPEM";
|
|
9
|
+
KFormatType[KFormatType["kKeyFormatJWK"] = 2] = "kKeyFormatJWK";
|
|
10
|
+
})(KFormatType || (KFormatType = {}));
|
|
11
|
+
|
|
12
|
+
var KeyInputContext;
|
|
13
|
+
|
|
14
|
+
(function (KeyInputContext) {
|
|
15
|
+
KeyInputContext[KeyInputContext["kConsumePublic"] = 0] = "kConsumePublic";
|
|
16
|
+
KeyInputContext[KeyInputContext["kConsumePrivate"] = 1] = "kConsumePrivate";
|
|
17
|
+
KeyInputContext[KeyInputContext["kCreatePublic"] = 2] = "kCreatePublic";
|
|
18
|
+
KeyInputContext[KeyInputContext["kCreatePrivate"] = 3] = "kCreatePrivate";
|
|
19
|
+
})(KeyInputContext || (KeyInputContext = {}));
|
|
20
|
+
|
|
21
|
+
var KeyEncoding;
|
|
22
|
+
|
|
23
|
+
(function (KeyEncoding) {
|
|
24
|
+
KeyEncoding[KeyEncoding["kKeyEncodingPKCS1"] = 0] = "kKeyEncodingPKCS1";
|
|
25
|
+
KeyEncoding[KeyEncoding["kKeyEncodingPKCS8"] = 1] = "kKeyEncodingPKCS8";
|
|
26
|
+
KeyEncoding[KeyEncoding["kKeyEncodingSPKI"] = 2] = "kKeyEncodingSPKI";
|
|
27
|
+
KeyEncoding[KeyEncoding["kKeyEncodingSEC1"] = 3] = "kKeyEncodingSEC1";
|
|
28
|
+
})(KeyEncoding || (KeyEncoding = {}));
|
|
29
|
+
|
|
30
|
+
const encodingNames = {
|
|
31
|
+
[KeyEncoding.kKeyEncodingPKCS1]: 'pkcs1',
|
|
32
|
+
[KeyEncoding.kKeyEncodingPKCS8]: 'pkcs8',
|
|
33
|
+
[KeyEncoding.kKeyEncodingSPKI]: 'spki',
|
|
34
|
+
[KeyEncoding.kKeyEncodingSEC1]: 'sec1'
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
function option(name, objName) {
|
|
38
|
+
return objName === undefined ? `options.${name}` : `options.${objName}.${name}`;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function parseKeyFormat(formatStr, defaultFormat, optionName) {
|
|
42
|
+
if (formatStr === undefined && defaultFormat !== undefined) return defaultFormat;else if (formatStr === 'pem') return KFormatType.kKeyFormatPEM;else if (formatStr === 'der') return KFormatType.kKeyFormatDER;else if (formatStr === 'jwk') return KFormatType.kKeyFormatJWK;
|
|
43
|
+
throw new Error(`Invalid key format str: ${optionName}`); // throw new ERR_INVALID_ARG_VALUE(optionName, formatStr);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function parseKeyType(typeStr, required, keyType, isPublic, optionName) {
|
|
47
|
+
if (typeStr === undefined && !required) {
|
|
48
|
+
return undefined;
|
|
49
|
+
} else if (typeStr === 'pkcs1') {
|
|
50
|
+
if (keyType !== undefined && keyType !== 'rsa') {
|
|
51
|
+
throw new Error(`Crypto incompatible key options: ${typeStr} can only be used for RSA keys`); // throw new ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS(
|
|
52
|
+
// typeStr,
|
|
53
|
+
// 'can only be used for RSA keys'
|
|
54
|
+
// );
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return KeyEncoding.kKeyEncodingPKCS1;
|
|
58
|
+
} else if (typeStr === 'spki' && isPublic !== false) {
|
|
59
|
+
return KeyEncoding.kKeyEncodingSPKI;
|
|
60
|
+
} else if (typeStr === 'pkcs8' && isPublic !== true) {
|
|
61
|
+
return KeyEncoding.kKeyEncodingPKCS8;
|
|
62
|
+
} else if (typeStr === 'sec1' && isPublic !== true) {
|
|
63
|
+
if (keyType !== undefined && keyType !== 'ec') {
|
|
64
|
+
throw new Error(`Incompatible key options ${typeStr} can only be used for EC keys`);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return KeyEncoding.kKeyEncodingSEC1;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
throw new Error(`Invalid option ${optionName} - ${typeStr}`);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function parseKeyFormatAndType(enc, keyType, isPublic, objName) {
|
|
74
|
+
const {
|
|
75
|
+
format: formatStr,
|
|
76
|
+
type: typeStr
|
|
77
|
+
} = enc;
|
|
78
|
+
const isInput = keyType === undefined;
|
|
79
|
+
const format = parseKeyFormat(formatStr, isInput ? KFormatType.kKeyFormatPEM : undefined, option('format', objName));
|
|
80
|
+
const isRequired = (!isInput || format === KFormatType.kKeyFormatDER) && format !== KFormatType.kKeyFormatJWK;
|
|
81
|
+
const type = parseKeyType(typeStr, isRequired, keyType, isPublic, option('type', objName));
|
|
82
|
+
return {
|
|
83
|
+
format,
|
|
84
|
+
type
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function parseKeyEncoding(enc, keyType, isPublic, objName) {
|
|
89
|
+
// validateObject(enc, 'options');
|
|
90
|
+
const isInput = keyType === undefined;
|
|
91
|
+
const {
|
|
92
|
+
format,
|
|
93
|
+
type
|
|
94
|
+
} = parseKeyFormatAndType(enc, keyType, isPublic, objName);
|
|
95
|
+
let cipher, passphrase, encoding;
|
|
96
|
+
|
|
97
|
+
if (isPublic !== true) {
|
|
98
|
+
({
|
|
99
|
+
cipher,
|
|
100
|
+
passphrase,
|
|
101
|
+
encoding
|
|
102
|
+
} = enc);
|
|
103
|
+
|
|
104
|
+
if (!isInput) {
|
|
105
|
+
if (cipher != null) {
|
|
106
|
+
if (typeof cipher !== 'string') throw new Error(`Invalid argument ${option('cipher', objName)}: ${cipher}`);
|
|
107
|
+
|
|
108
|
+
if (format === KFormatType.kKeyFormatDER && (type === KeyEncoding.kKeyEncodingPKCS1 || type === KeyEncoding.kKeyEncodingSEC1)) {
|
|
109
|
+
throw new Error(`Incompatible key options ${encodingNames[type]} does not support encryption`);
|
|
110
|
+
}
|
|
111
|
+
} else if (passphrase !== undefined) {
|
|
112
|
+
throw new Error(`invalid argument ${option('cipher', objName)}: ${cipher}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if (isInput && passphrase !== undefined && !isStringOrBuffer(passphrase) || !isInput && cipher != null && !isStringOrBuffer(passphrase)) {
|
|
117
|
+
throw new Error(`Invalid argument value ${option('passphrase', objName)}: ${passphrase}`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (passphrase !== undefined) passphrase = binaryLikeToArrayBuffer(passphrase, encoding);
|
|
122
|
+
return {
|
|
123
|
+
format,
|
|
124
|
+
type,
|
|
125
|
+
cipher,
|
|
126
|
+
passphrase
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
function prepareAsymmetricKey(key, ctx) {
|
|
131
|
+
// TODO(osp) check, KeyObject some node object
|
|
132
|
+
// if (isKeyObject(key)) {
|
|
133
|
+
// // Best case: A key object, as simple as that.
|
|
134
|
+
// return { data: getKeyObjectHandle(key, ctx) };
|
|
135
|
+
// } else
|
|
136
|
+
// if (isCryptoKey(key)) {
|
|
137
|
+
// return { data: getKeyObjectHandle(key[kKeyObject], ctx) };
|
|
138
|
+
// } else
|
|
139
|
+
if (isStringOrBuffer(key)) {
|
|
140
|
+
// Expect PEM by default, mostly for backward compatibility.
|
|
141
|
+
return {
|
|
142
|
+
format: KFormatType.kKeyFormatPEM,
|
|
143
|
+
data: binaryLikeToArrayBuffer(key)
|
|
144
|
+
};
|
|
145
|
+
} else if (typeof key === 'object') {
|
|
146
|
+
const {
|
|
147
|
+
key: data,
|
|
148
|
+
encoding // format
|
|
149
|
+
|
|
150
|
+
} = key; // // The 'key' property can be a KeyObject as well to allow specifying
|
|
151
|
+
// // additional options such as padding along with the key.
|
|
152
|
+
// if (isKeyObject(data)) return { data: getKeyObjectHandle(data, ctx) };
|
|
153
|
+
// else if (isCryptoKey(data))
|
|
154
|
+
// return { data: getKeyObjectHandle(data[kKeyObject], ctx) };
|
|
155
|
+
// else if (isJwk(data) && format === 'jwk')
|
|
156
|
+
// return { data: getKeyObjectHandleFromJwk(data, ctx), format: 'jwk' };
|
|
157
|
+
// Either PEM or DER using PKCS#1 or SPKI.
|
|
158
|
+
|
|
159
|
+
if (!isStringOrBuffer(data)) {
|
|
160
|
+
throw new Error('prepareAsymmetricKey: key is not a string or ArrayBuffer');
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
const isPublic = ctx === KeyInputContext.kConsumePrivate || ctx === KeyInputContext.kCreatePrivate ? false : undefined;
|
|
164
|
+
return {
|
|
165
|
+
data: binaryLikeToArrayBuffer(data, encoding),
|
|
166
|
+
...parseKeyEncoding(key, undefined, isPublic)
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
throw new Error('[prepareAsymetricKey] Invalid argument key: ${key}');
|
|
171
|
+
} // TODO(osp) any here is a node KeyObject
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
export function preparePrivateKey(key) {
|
|
175
|
+
return prepareAsymmetricKey(key, KeyInputContext.kConsumePrivate);
|
|
176
|
+
} // TODO(osp) any here is a node KeyObject
|
|
177
|
+
|
|
178
|
+
export function preparePublicOrPrivateKey(key) {
|
|
179
|
+
return prepareAsymmetricKey(key, KeyInputContext.kConsumePublic);
|
|
180
|
+
} // Parses the public key encoding based on an object. keyType must be undefined
|
|
181
|
+
// when this is used to parse an input encoding and must be a valid key type if
|
|
182
|
+
// used to parse an output encoding.
|
|
183
|
+
|
|
184
|
+
export function parsePublicKeyEncoding(enc, keyType, objName) {
|
|
185
|
+
return parseKeyEncoding(enc, keyType, keyType ? true : undefined, objName);
|
|
186
|
+
} // Parses the private key encoding based on an object. keyType must be undefined
|
|
187
|
+
// when this is used to parse an input encoding and must be a valid key type if
|
|
188
|
+
// used to parse an output encoding.
|
|
189
|
+
|
|
190
|
+
export function parsePrivateKeyEncoding(enc, keyType, objName) {
|
|
191
|
+
return parseKeyEncoding(enc, keyType, false, objName);
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["keys.ts"],"names":["binaryLikeToArrayBuffer","isStringOrBuffer","KFormatType","KeyInputContext","KeyEncoding","encodingNames","kKeyEncodingPKCS1","kKeyEncodingPKCS8","kKeyEncodingSPKI","kKeyEncodingSEC1","option","name","objName","undefined","parseKeyFormat","formatStr","defaultFormat","optionName","kKeyFormatPEM","kKeyFormatDER","kKeyFormatJWK","Error","parseKeyType","typeStr","required","keyType","isPublic","parseKeyFormatAndType","enc","format","type","isInput","isRequired","parseKeyEncoding","cipher","passphrase","encoding","prepareAsymmetricKey","key","ctx","data","kConsumePrivate","kCreatePrivate","preparePrivateKey","preparePublicOrPrivateKey","kConsumePublic","parsePublicKeyEncoding","parsePrivateKeyEncoding"],"mappings":"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","sourcesContent":["import { BinaryLike, binaryLikeToArrayBuffer, isStringOrBuffer } from './Utils';\n\n// On node this value is defined on the native side, for now I'm just creating it here in JS\n// TODO(osp) move this into native side to make sure they always match\nenum KFormatType {\n kKeyFormatDER,\n kKeyFormatPEM,\n kKeyFormatJWK,\n}\n\nenum KeyInputContext {\n kConsumePublic,\n kConsumePrivate,\n kCreatePublic,\n kCreatePrivate,\n}\n\nenum KeyEncoding {\n kKeyEncodingPKCS1,\n kKeyEncodingPKCS8,\n kKeyEncodingSPKI,\n kKeyEncodingSEC1,\n}\n\nconst encodingNames = {\n [KeyEncoding.kKeyEncodingPKCS1]: 'pkcs1',\n [KeyEncoding.kKeyEncodingPKCS8]: 'pkcs8',\n [KeyEncoding.kKeyEncodingSPKI]: 'spki',\n [KeyEncoding.kKeyEncodingSEC1]: 'sec1',\n};\n\nfunction option(name: string, objName: string | undefined) {\n return objName === undefined\n ? `options.${name}`\n : `options.${objName}.${name}`;\n}\n\nfunction parseKeyFormat(\n formatStr: string,\n defaultFormat: KFormatType | undefined,\n optionName?: string\n) {\n if (formatStr === undefined && defaultFormat !== undefined)\n return defaultFormat;\n else if (formatStr === 'pem') return KFormatType.kKeyFormatPEM;\n else if (formatStr === 'der') return KFormatType.kKeyFormatDER;\n else if (formatStr === 'jwk') return KFormatType.kKeyFormatJWK;\n throw new Error(`Invalid key format str: ${optionName}`);\n // throw new ERR_INVALID_ARG_VALUE(optionName, formatStr);\n}\n\nfunction parseKeyType(\n typeStr: string,\n required: boolean,\n keyType: string,\n isPublic: boolean,\n optionName: string\n) {\n if (typeStr === undefined && !required) {\n return undefined;\n } else if (typeStr === 'pkcs1') {\n if (keyType !== undefined && keyType !== 'rsa') {\n throw new Error(\n `Crypto incompatible key options: ${typeStr} can only be used for RSA keys`\n );\n // throw new ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS(\n // typeStr,\n // 'can only be used for RSA keys'\n // );\n }\n return KeyEncoding.kKeyEncodingPKCS1;\n } else if (typeStr === 'spki' && isPublic !== false) {\n return KeyEncoding.kKeyEncodingSPKI;\n } else if (typeStr === 'pkcs8' && isPublic !== true) {\n return KeyEncoding.kKeyEncodingPKCS8;\n } else if (typeStr === 'sec1' && isPublic !== true) {\n if (keyType !== undefined && keyType !== 'ec') {\n throw new Error(\n `Incompatible key options ${typeStr} can only be used for EC keys`\n );\n }\n return KeyEncoding.kKeyEncodingSEC1;\n }\n\n throw new Error(`Invalid option ${optionName} - ${typeStr}`);\n}\n\nfunction parseKeyFormatAndType(\n enc: any,\n keyType: any,\n isPublic: any,\n objName: any\n) {\n const { format: formatStr, type: typeStr } = enc;\n\n const isInput = keyType === undefined;\n const format = parseKeyFormat(\n formatStr,\n isInput ? KFormatType.kKeyFormatPEM : undefined,\n option('format', objName)\n );\n\n const isRequired =\n (!isInput || format === KFormatType.kKeyFormatDER) &&\n format !== KFormatType.kKeyFormatJWK;\n const type = parseKeyType(\n typeStr,\n isRequired,\n keyType,\n isPublic,\n option('type', objName)\n );\n return { format, type };\n}\n\nfunction parseKeyEncoding(\n enc: {\n key: any;\n encoding?: string;\n format?: string;\n cipher?: string;\n passphrase?: string;\n },\n keyType: string | undefined,\n isPublic: boolean | undefined,\n objName?: string\n) {\n // validateObject(enc, 'options');\n\n const isInput = keyType === undefined;\n\n const { format, type } = parseKeyFormatAndType(\n enc,\n keyType,\n isPublic,\n objName\n );\n\n let cipher, passphrase, encoding;\n if (isPublic !== true) {\n ({ cipher, passphrase, encoding } = enc);\n\n if (!isInput) {\n if (cipher != null) {\n if (typeof cipher !== 'string')\n throw new Error(\n `Invalid argument ${option('cipher', objName)}: ${cipher}`\n );\n if (\n format === KFormatType.kKeyFormatDER &&\n (type === KeyEncoding.kKeyEncodingPKCS1 ||\n type === KeyEncoding.kKeyEncodingSEC1)\n ) {\n throw new Error(\n `Incompatible key options ${encodingNames[type]} does not support encryption`\n );\n }\n } else if (passphrase !== undefined) {\n throw new Error(\n `invalid argument ${option('cipher', objName)}: ${cipher}`\n );\n }\n }\n\n if (\n (isInput && passphrase !== undefined && !isStringOrBuffer(passphrase)) ||\n (!isInput && cipher != null && !isStringOrBuffer(passphrase))\n ) {\n throw new Error(\n `Invalid argument value ${option('passphrase', objName)}: ${passphrase}`\n );\n }\n }\n\n if (passphrase !== undefined)\n passphrase = binaryLikeToArrayBuffer(passphrase, encoding);\n\n return { format, type, cipher, passphrase };\n}\n\nfunction prepareAsymmetricKey(\n key:\n | BinaryLike\n | { key: any; encoding?: string; format?: any; passphrase?: string },\n ctx: KeyInputContext\n): {\n format: KFormatType;\n data: ArrayBuffer;\n type?: any;\n passphrase?: any;\n} {\n // TODO(osp) check, KeyObject some node object\n // if (isKeyObject(key)) {\n // // Best case: A key object, as simple as that.\n // return { data: getKeyObjectHandle(key, ctx) };\n // } else\n // if (isCryptoKey(key)) {\n // return { data: getKeyObjectHandle(key[kKeyObject], ctx) };\n // } else\n if (isStringOrBuffer(key)) {\n // Expect PEM by default, mostly for backward compatibility.\n return {\n format: KFormatType.kKeyFormatPEM,\n data: binaryLikeToArrayBuffer(key),\n };\n } else if (typeof key === 'object') {\n const {\n key: data,\n encoding,\n // format\n } = key;\n // // The 'key' property can be a KeyObject as well to allow specifying\n // // additional options such as padding along with the key.\n // if (isKeyObject(data)) return { data: getKeyObjectHandle(data, ctx) };\n // else if (isCryptoKey(data))\n // return { data: getKeyObjectHandle(data[kKeyObject], ctx) };\n // else if (isJwk(data) && format === 'jwk')\n // return { data: getKeyObjectHandleFromJwk(data, ctx), format: 'jwk' };\n // Either PEM or DER using PKCS#1 or SPKI.\n if (!isStringOrBuffer(data)) {\n throw new Error(\n 'prepareAsymmetricKey: key is not a string or ArrayBuffer'\n );\n }\n\n const isPublic =\n ctx === KeyInputContext.kConsumePrivate ||\n ctx === KeyInputContext.kCreatePrivate\n ? false\n : undefined;\n\n return {\n data: binaryLikeToArrayBuffer(data, encoding),\n ...parseKeyEncoding(key, undefined, isPublic),\n };\n }\n\n throw new Error('[prepareAsymetricKey] Invalid argument key: ${key}');\n}\n\n// TODO(osp) any here is a node KeyObject\nexport function preparePrivateKey(\n key:\n | BinaryLike\n | {\n key: any;\n encoding?: string;\n format?: any;\n padding?: number;\n passphrase?: string;\n }\n) {\n return prepareAsymmetricKey(key, KeyInputContext.kConsumePrivate);\n}\n\n// TODO(osp) any here is a node KeyObject\nexport function preparePublicOrPrivateKey(\n key:\n | BinaryLike\n | { key: any; encoding?: string; format?: any; padding?: number }\n) {\n return prepareAsymmetricKey(key, KeyInputContext.kConsumePublic);\n}\n\n// Parses the public key encoding based on an object. keyType must be undefined\n// when this is used to parse an input encoding and must be a valid key type if\n// used to parse an output encoding.\nexport function parsePublicKeyEncoding(\n enc: {\n key: any;\n encoding?: string;\n format?: string;\n cipher?: string;\n passphrase?: string;\n },\n keyType: string | undefined,\n objName?: string\n) {\n return parseKeyEncoding(enc, keyType, keyType ? true : undefined, objName);\n}\n\n// Parses the private key encoding based on an object. keyType must be undefined\n// when this is used to parse an input encoding and must be a valid key type if\n// used to parse an output encoding.\nexport function parsePrivateKeyEncoding(\n enc: {\n key: any;\n encoding?: string;\n format?: string;\n cipher?: string;\n passphrase?: string;\n },\n keyType: string | undefined,\n objName?: string\n) {\n return parseKeyEncoding(enc, keyType, false, objName);\n}\n"]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
2
3
|
import Stream from 'stream';
|
|
3
4
|
import { BinaryLike, CipherEncoding, Encoding } from './Utils';
|
|
4
|
-
import
|
|
5
|
+
import { Buffer } from '@craftzdog/react-native-buffer';
|
|
5
6
|
declare class CipherCommon extends Stream.Transform {
|
|
6
7
|
private internal;
|
|
7
8
|
private decoder;
|
|
@@ -27,4 +28,60 @@ export declare function createDecipher(algorithm: string, password: BinaryLike,
|
|
|
27
28
|
export declare function createDecipheriv(algorithm: string, key: BinaryLike, iv: BinaryLike | null, options?: Stream.TransformOptions): Decipher;
|
|
28
29
|
export declare function createCipher(algorithm: string, password: BinaryLike, options?: Stream.TransformOptions): Cipher;
|
|
29
30
|
export declare function createCipheriv(algorithm: string, key: BinaryLike, iv: BinaryLike | null, options?: Stream.TransformOptions): Cipher;
|
|
31
|
+
export declare const publicEncrypt: (options: {
|
|
32
|
+
key: any;
|
|
33
|
+
encoding?: string;
|
|
34
|
+
format?: any;
|
|
35
|
+
padding?: any;
|
|
36
|
+
oaepHash?: any;
|
|
37
|
+
oaepLabel?: any;
|
|
38
|
+
passphrase?: string;
|
|
39
|
+
}, buffer: BinaryLike) => Buffer;
|
|
40
|
+
export declare const publicDecrypt: (options: {
|
|
41
|
+
key: any;
|
|
42
|
+
encoding?: string;
|
|
43
|
+
format?: any;
|
|
44
|
+
padding?: any;
|
|
45
|
+
oaepHash?: any;
|
|
46
|
+
oaepLabel?: any;
|
|
47
|
+
passphrase?: string;
|
|
48
|
+
}, buffer: BinaryLike) => Buffer;
|
|
49
|
+
export declare const privateDecrypt: (options: {
|
|
50
|
+
key: any;
|
|
51
|
+
encoding?: string;
|
|
52
|
+
format?: any;
|
|
53
|
+
padding?: any;
|
|
54
|
+
oaepHash?: any;
|
|
55
|
+
oaepLabel?: any;
|
|
56
|
+
passphrase?: string;
|
|
57
|
+
}, buffer: BinaryLike) => Buffer;
|
|
58
|
+
declare type GenerateKeyPairOptions = {
|
|
59
|
+
modulusLength: number;
|
|
60
|
+
publicExponent?: number;
|
|
61
|
+
hashAlgorithm?: string;
|
|
62
|
+
mgf1HashAlgorithm?: string;
|
|
63
|
+
saltLength?: number;
|
|
64
|
+
divisorLength?: number;
|
|
65
|
+
namedCurve?: string;
|
|
66
|
+
prime?: Buffer;
|
|
67
|
+
primeLength?: number;
|
|
68
|
+
generator?: number;
|
|
69
|
+
groupName?: string;
|
|
70
|
+
publicKeyEncoding?: any;
|
|
71
|
+
privateKeyEncoding?: any;
|
|
72
|
+
paramEncoding?: string;
|
|
73
|
+
hash?: any;
|
|
74
|
+
mgf1Hash?: any;
|
|
75
|
+
};
|
|
76
|
+
declare type GenerateKeyPairCallback = (error: unknown | null, publicKey?: Buffer, privateKey?: Buffer) => void;
|
|
77
|
+
export declare function generateKeyPair(type: string, callback: GenerateKeyPairCallback): void;
|
|
78
|
+
export declare function generateKeyPair(type: string, options: GenerateKeyPairOptions, callback: GenerateKeyPairCallback): void;
|
|
79
|
+
export declare function generateKeyPairSync(type: string): {
|
|
80
|
+
publicKey: any;
|
|
81
|
+
privateKey: any;
|
|
82
|
+
};
|
|
83
|
+
export declare function generateKeyPairSync(type: string, options: GenerateKeyPairOptions): {
|
|
84
|
+
publicKey: any;
|
|
85
|
+
privateKey: any;
|
|
86
|
+
};
|
|
30
87
|
export {};
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import type { BinaryLike } from 'src/Utils';
|
|
2
|
+
import type { Buffer } from '@craftzdog/react-native-buffer';
|
|
3
|
+
export declare enum RSAKeyVariant {
|
|
4
|
+
kKeyVariantRSA_SSA_PKCS1_v1_5 = 0,
|
|
5
|
+
kKeyVariantRSA_PSS = 1,
|
|
6
|
+
kKeyVariantRSA_OAEP = 2
|
|
7
|
+
}
|
|
2
8
|
export declare type InternalCipher = {
|
|
3
9
|
update: (data: BinaryLike | ArrayBufferView) => ArrayBuffer;
|
|
4
10
|
final: () => ArrayBuffer;
|
|
@@ -20,3 +26,7 @@ export declare type CreateDecipherMethod = (params: {
|
|
|
20
26
|
cipher_key: ArrayBuffer;
|
|
21
27
|
auth_tag_len: number;
|
|
22
28
|
}) => InternalCipher;
|
|
29
|
+
export declare type PublicEncryptMethod = (data: ArrayBuffer, format: number, type: any, passphrase: any, buffer: ArrayBuffer, padding: number, oaepHash: any, oaepLabel: any) => Buffer;
|
|
30
|
+
export declare type PrivateDecryptMethod = (data: ArrayBuffer, format: number, type: any, passphrase: any, buffer: ArrayBuffer, padding: number, oaepHash: any, oaepLabel: any) => Buffer;
|
|
31
|
+
export declare type GenerateKeyPairMethod = (keyVariant: RSAKeyVariant, modulusLength: number, publicExponent: number, ...rest: any[]) => Promise<[error: unknown, publicBuffer: any, privateBuffer: any]>;
|
|
32
|
+
export declare type GenerateKeyPairSyncMethod = (keyVariant: RSAKeyVariant, modulusLength: number, publicExponent: number, ...rest: any[]) => [error: unknown, publicBuffer: any, privateBuffer: any];
|
|
@@ -2,7 +2,7 @@ import type { CreateHmacMethod } from './hmac';
|
|
|
2
2
|
import type { CreateHashMethod } from './hash';
|
|
3
3
|
import type { Pbkdf2Object } from './pbkdf2';
|
|
4
4
|
import type { RandomObject } from './random';
|
|
5
|
-
import type { CreateCipherMethod, CreateDecipherMethod } from './Cipher';
|
|
5
|
+
import type { CreateCipherMethod, CreateDecipherMethod, PublicEncryptMethod, PrivateDecryptMethod, GenerateKeyPairMethod, GenerateKeyPairSyncMethod } from './Cipher';
|
|
6
6
|
interface NativeQuickCryptoSpec {
|
|
7
7
|
createHmac: CreateHmacMethod;
|
|
8
8
|
pbkdf2: Pbkdf2Object;
|
|
@@ -10,6 +10,11 @@ interface NativeQuickCryptoSpec {
|
|
|
10
10
|
createHash: CreateHashMethod;
|
|
11
11
|
createCipher: CreateCipherMethod;
|
|
12
12
|
createDecipher: CreateDecipherMethod;
|
|
13
|
+
publicEncrypt: PublicEncryptMethod;
|
|
14
|
+
publicDecrypt: PublicEncryptMethod;
|
|
15
|
+
privateDecrypt: PrivateDecryptMethod;
|
|
16
|
+
generateKeyPair: GenerateKeyPairMethod;
|
|
17
|
+
generateKeyPairSync: GenerateKeyPairSyncMethod;
|
|
13
18
|
}
|
|
14
19
|
declare global {
|
|
15
20
|
function nativeCallSyncHook(): unknown;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as random from './random';
|
|
2
|
-
import { createCipher, createCipheriv, createDecipher, createDecipheriv } from './Cipher';
|
|
2
|
+
import { createCipher, createCipheriv, createDecipher, createDecipheriv, generateKeyPair, generateKeyPairSync } from './Cipher';
|
|
3
3
|
import { createHmac } from './Hmac';
|
|
4
4
|
import { createHash } from './Hash';
|
|
5
5
|
export declare const QuickCrypto: {
|
|
@@ -28,4 +28,108 @@ export declare const QuickCrypto: {
|
|
|
28
28
|
createCipheriv: typeof createCipheriv;
|
|
29
29
|
createDecipher: typeof createDecipher;
|
|
30
30
|
createDecipheriv: typeof createDecipheriv;
|
|
31
|
+
publicEncrypt: (options: {
|
|
32
|
+
key: any;
|
|
33
|
+
encoding?: string | undefined;
|
|
34
|
+
format?: any;
|
|
35
|
+
padding?: any;
|
|
36
|
+
oaepHash?: any;
|
|
37
|
+
oaepLabel?: any;
|
|
38
|
+
passphrase?: string | undefined;
|
|
39
|
+
}, buffer: import("./Utils").BinaryLike) => import("@craftzdog/react-native-buffer").Buffer;
|
|
40
|
+
publicDecrypt: (options: {
|
|
41
|
+
key: any;
|
|
42
|
+
encoding?: string | undefined;
|
|
43
|
+
format?: any;
|
|
44
|
+
padding?: any;
|
|
45
|
+
oaepHash?: any;
|
|
46
|
+
oaepLabel?: any;
|
|
47
|
+
passphrase?: string | undefined;
|
|
48
|
+
}, buffer: import("./Utils").BinaryLike) => import("@craftzdog/react-native-buffer").Buffer;
|
|
49
|
+
privateDecrypt: (options: {
|
|
50
|
+
key: any;
|
|
51
|
+
encoding?: string | undefined;
|
|
52
|
+
format?: any;
|
|
53
|
+
padding?: any;
|
|
54
|
+
oaepHash?: any;
|
|
55
|
+
oaepLabel?: any;
|
|
56
|
+
passphrase?: string | undefined;
|
|
57
|
+
}, buffer: import("./Utils").BinaryLike) => import("@craftzdog/react-native-buffer").Buffer;
|
|
58
|
+
generateKeyPair: typeof generateKeyPair;
|
|
59
|
+
generateKeyPairSync: typeof generateKeyPairSync;
|
|
60
|
+
constants: {
|
|
61
|
+
OPENSSL_VERSION_NUMBER: number;
|
|
62
|
+
SSL_OP_ALL: number;
|
|
63
|
+
SSL_OP_ALLOW_NO_DHE_KEX: number;
|
|
64
|
+
SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: number;
|
|
65
|
+
SSL_OP_CIPHER_SERVER_PREFERENCE: number;
|
|
66
|
+
SSL_OP_CISCO_ANYCONNECT: number;
|
|
67
|
+
SSL_OP_COOKIE_EXCHANGE: number;
|
|
68
|
+
SSL_OP_CRYPTOPRO_TLSEXT_BUG: number;
|
|
69
|
+
SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: number;
|
|
70
|
+
SSL_OP_EPHEMERAL_RSA: number;
|
|
71
|
+
SSL_OP_LEGACY_SERVER_CONNECT: number;
|
|
72
|
+
SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER: number;
|
|
73
|
+
SSL_OP_MICROSOFT_SESS_ID_BUG: number;
|
|
74
|
+
SSL_OP_MSIE_SSLV2_RSA_PADDING: number;
|
|
75
|
+
SSL_OP_NETSCAPE_CA_DN_BUG: number;
|
|
76
|
+
SSL_OP_NETSCAPE_CHALLENGE_BUG: number;
|
|
77
|
+
SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG: number;
|
|
78
|
+
SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: number;
|
|
79
|
+
SSL_OP_NO_COMPRESSION: number;
|
|
80
|
+
SSL_OP_NO_ENCRYPT_THEN_MAC: number;
|
|
81
|
+
SSL_OP_NO_QUERY_MTU: number;
|
|
82
|
+
SSL_OP_NO_RENEGOTIATION: number;
|
|
83
|
+
SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION: number;
|
|
84
|
+
SSL_OP_NO_SSLv2: number;
|
|
85
|
+
SSL_OP_NO_SSLv3: number;
|
|
86
|
+
SSL_OP_NO_TICKET: number;
|
|
87
|
+
SSL_OP_NO_TLSv1: number;
|
|
88
|
+
SSL_OP_NO_TLSv1_1: number;
|
|
89
|
+
SSL_OP_NO_TLSv1_2: number;
|
|
90
|
+
SSL_OP_NO_TLSv1_3: number;
|
|
91
|
+
SSL_OP_PKCS1_CHECK_1: number;
|
|
92
|
+
SSL_OP_PKCS1_CHECK_2: number;
|
|
93
|
+
SSL_OP_PRIORITIZE_CHACHA: number;
|
|
94
|
+
SSL_OP_SINGLE_DH_USE: number;
|
|
95
|
+
SSL_OP_SINGLE_ECDH_USE: number;
|
|
96
|
+
SSL_OP_SSLEAY_080_CLIENT_DH_BUG: number;
|
|
97
|
+
SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG: number;
|
|
98
|
+
SSL_OP_TLS_BLOCK_PADDING_BUG: number;
|
|
99
|
+
SSL_OP_TLS_D5_BUG: number;
|
|
100
|
+
SSL_OP_TLS_ROLLBACK_BUG: number;
|
|
101
|
+
ENGINE_METHOD_RSA: number;
|
|
102
|
+
ENGINE_METHOD_DSA: number;
|
|
103
|
+
ENGINE_METHOD_DH: number;
|
|
104
|
+
ENGINE_METHOD_RAND: number;
|
|
105
|
+
ENGINE_METHOD_EC: number;
|
|
106
|
+
ENGINE_METHOD_CIPHERS: number;
|
|
107
|
+
ENGINE_METHOD_DIGESTS: number;
|
|
108
|
+
ENGINE_METHOD_PKEY_METHS: number;
|
|
109
|
+
ENGINE_METHOD_PKEY_ASN1_METHS: number;
|
|
110
|
+
ENGINE_METHOD_ALL: number;
|
|
111
|
+
ENGINE_METHOD_NONE: number;
|
|
112
|
+
DH_CHECK_P_NOT_SAFE_PRIME: number;
|
|
113
|
+
DH_CHECK_P_NOT_PRIME: number;
|
|
114
|
+
DH_UNABLE_TO_CHECK_GENERATOR: number;
|
|
115
|
+
DH_NOT_SUITABLE_GENERATOR: number;
|
|
116
|
+
ALPN_ENABLED: number;
|
|
117
|
+
RSA_PKCS1_PADDING: number;
|
|
118
|
+
RSA_SSLV23_PADDING: number;
|
|
119
|
+
RSA_NO_PADDING: number;
|
|
120
|
+
RSA_PKCS1_OAEP_PADDING: number;
|
|
121
|
+
RSA_X931_PADDING: number;
|
|
122
|
+
RSA_PKCS1_PSS_PADDING: number;
|
|
123
|
+
RSA_PSS_SALTLEN_DIGEST: number;
|
|
124
|
+
RSA_PSS_SALTLEN_MAX_SIGN: number;
|
|
125
|
+
RSA_PSS_SALTLEN_AUTO: number;
|
|
126
|
+
defaultCoreCipherList: string;
|
|
127
|
+
TLS1_VERSION: number;
|
|
128
|
+
TLS1_1_VERSION: number;
|
|
129
|
+
TLS1_2_VERSION: number;
|
|
130
|
+
TLS1_3_VERSION: number;
|
|
131
|
+
POINT_CONVERSION_COMPRESSED: number;
|
|
132
|
+
POINT_CONVERSION_UNCOMPRESSED: number;
|
|
133
|
+
POINT_CONVERSION_HYBRID: number;
|
|
134
|
+
};
|
|
31
135
|
};
|
|
@@ -7,7 +7,18 @@ export declare type Encoding = BinaryToTextEncoding | CharacterEncoding | Legacy
|
|
|
7
7
|
export declare type CipherEncoding = Encoding | 'buffer';
|
|
8
8
|
export declare function setDefaultEncoding(encoding: CipherEncoding): void;
|
|
9
9
|
export declare function getDefaultEncoding(): CipherEncoding;
|
|
10
|
+
export declare const kEmptyObject: any;
|
|
10
11
|
export declare function isBuffer(buf: any): buf is Buffer;
|
|
11
12
|
export declare function toArrayBuffer(buf: Buffer): ArrayBuffer;
|
|
12
13
|
export declare function binaryLikeToArrayBuffer(input: BinaryLike, encoding?: string): ArrayBuffer;
|
|
13
14
|
export declare function ab2str(buf: ArrayBuffer, encoding?: string): string;
|
|
15
|
+
export declare function validateString(str: any, name?: string): str is string;
|
|
16
|
+
export declare function validateFunction(f: any): f is Function;
|
|
17
|
+
export declare function isStringOrBuffer(val: any): val is string | ArrayBuffer;
|
|
18
|
+
export declare function validateObject<T>(value: any, name: string, options?: {
|
|
19
|
+
allowArray: boolean;
|
|
20
|
+
allowFunction: boolean;
|
|
21
|
+
nullable: boolean;
|
|
22
|
+
} | null): value is T;
|
|
23
|
+
export declare function validateInt32(value: any, name: string, min?: number, max?: number): void;
|
|
24
|
+
export declare function validateUint32(value: number, name: string, positive?: boolean): void;
|