@hxa-rn/react-native-quick-crypto 1.1.1 → 1.1.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.
Files changed (58) hide show
  1. package/LICENSE +8 -1
  2. package/README.md +2 -3
  3. package/dist/commonjs/blake3.js +1 -1
  4. package/dist/commonjs/blake3.js.map +1 -1
  5. package/dist/commonjs/cipher.js +1 -1
  6. package/dist/commonjs/cipher.js.map +1 -1
  7. package/dist/commonjs/dhKeyPair.js +1 -1
  8. package/dist/commonjs/dhKeyPair.js.map +1 -1
  9. package/dist/commonjs/diffie-hellman.js +1 -1
  10. package/dist/commonjs/diffie-hellman.js.map +1 -1
  11. package/dist/commonjs/dsa.js +1 -1
  12. package/dist/commonjs/dsa.js.map +1 -1
  13. package/dist/commonjs/ec.js +1 -1
  14. package/dist/commonjs/ec.js.map +1 -1
  15. package/dist/commonjs/ecdh.js +1 -1
  16. package/dist/commonjs/ecdh.js.map +1 -1
  17. package/dist/commonjs/ed.js +1 -1
  18. package/dist/commonjs/ed.js.map +1 -1
  19. package/dist/commonjs/hash.js +1 -1
  20. package/dist/commonjs/hash.js.map +1 -1
  21. package/dist/commonjs/hmac.js +1 -1
  22. package/dist/commonjs/hmac.js.map +1 -1
  23. package/dist/commonjs/index.js +2 -1
  24. package/dist/commonjs/index.js.map +1 -1
  25. package/dist/commonjs/keys/classes.js +1 -1
  26. package/dist/commonjs/keys/classes.js.map +1 -1
  27. package/dist/commonjs/keys/signVerify.js +1 -1
  28. package/dist/commonjs/keys/signVerify.js.map +1 -1
  29. package/dist/commonjs/mldsa.js +1 -1
  30. package/dist/commonjs/mldsa.js.map +1 -1
  31. package/dist/commonjs/mlkem.js +1 -1
  32. package/dist/commonjs/mlkem.js.map +1 -1
  33. package/dist/commonjs/rsa.js +1 -1
  34. package/dist/commonjs/rsa.js.map +1 -1
  35. package/dist/commonjs/x509certificate.js +1 -1
  36. package/dist/commonjs/x509certificate.js.map +1 -1
  37. package/dist/module/blake3.js +1 -1
  38. package/dist/module/cipher.js +1 -1
  39. package/dist/module/dhKeyPair.js +1 -1
  40. package/dist/module/diffie-hellman.js +1 -1
  41. package/dist/module/dsa.js +1 -1
  42. package/dist/module/ec.js +1 -1
  43. package/dist/module/ecdh.js +1 -1
  44. package/dist/module/ed.js +1 -1
  45. package/dist/module/hash.js +1 -1
  46. package/dist/module/hmac.js +1 -1
  47. package/dist/module/keys/classes.js +1 -1
  48. package/dist/module/keys/signVerify.js +1 -1
  49. package/dist/module/mldsa.js +1 -1
  50. package/dist/module/mlkem.js +1 -1
  51. package/dist/module/rsa.js +1 -1
  52. package/dist/module/x509certificate.js +1 -1
  53. package/harmony/quick_crypto/LICENSE +9 -2
  54. package/harmony/quick_crypto/src/main/cpp/cpp/cipher/HybridCipher.cpp +415 -415
  55. package/harmony/quick_crypto/src/main/cpp/cpp/dh/HybridDiffieHellman.cpp +501 -501
  56. package/harmony/quick_crypto/src/main/cpp/cpp/keys/KeyObjectData.cpp +284 -284
  57. package/harmony/quick_crypto.har +0 -0
  58. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeBuffer","require","argon2Module","_interopRequireWildcard","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","blake3","cipher","ed","_hash","_hmac","hkdf","pbkdf2","prime","scrypt","random","ecdh","dh","mlkem","_certificate","_x509certificate","_ec","_constants","utils","subtle","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","set","getOwnPropertyDescriptor","QuickCrypto","hash","hmac","Certificate","X509Certificate","getCurves","constants","Buffer","installBase64GlobalsFallback","g","global","base64FromArrayBuffer","bufferToString","stringToBuffer","buffer","urlSafe","base64ToArrayBuffer","b64","removeLinebreaks","input","replace","install","crypto","process","nextTick","setImmediate","_default","module"],"sources":["index.ts"],"sourcesContent":["// polyfill imports\r\nimport { Buffer } from '@craftzdog/react-native-buffer';\r\n\r\n// API imports\r\nimport * as argon2Module from './argon2';\r\nimport * as keys from './keys';\r\nimport * as blake3 from './blake3';\r\nimport * as cipher from './cipher';\r\nimport * as ed from './ed';\r\nimport { hashExports as hash } from './hash';\r\nimport { hmacExports as hmac } from './hmac';\r\nimport * as hkdf from './hkdf';\r\nimport * as pbkdf2 from './pbkdf2';\r\nimport * as prime from './prime';\r\nimport * as scrypt from './scrypt';\r\nimport * as random from './random';\r\nimport * as ecdh from './ecdh';\r\nimport * as dh from './diffie-hellman';\r\nimport * as mlkem from './mlkem';\r\nimport { Certificate } from './certificate';\r\nimport { X509Certificate } from './x509certificate';\r\nimport { getCurves } from './ec';\r\nimport { constants } from './constants';\r\n\r\n// utils import\r\nimport * as utils from './utils';\r\nimport * as subtle from './subtle';\r\n\r\n/**\r\n * Loosely matches Node.js {crypto} with some unimplemented functionality.\r\n * See `docs/implementation-coverage.md` for status.\r\n */\r\nconst QuickCrypto = {\r\n ...argon2Module,\r\n ...keys,\r\n ...blake3,\r\n ...cipher,\r\n ...ed,\r\n ...hash,\r\n ...hmac,\r\n ...hkdf,\r\n ...pbkdf2,\r\n ...prime,\r\n ...scrypt,\r\n ...random,\r\n ...ecdh,\r\n ...dh,\r\n ...mlkem,\r\n ...utils,\r\n ...subtle,\r\n Certificate,\r\n X509Certificate,\r\n getCurves,\r\n constants,\r\n Buffer,\r\n};\r\n\r\ntype Base64Globals = typeof globalThis & {\r\n base64FromArrayBuffer?: (buffer: ArrayBuffer, urlSafe?: boolean) => string;\r\n base64ToArrayBuffer?: (\r\n b64: string,\r\n removeLinebreaks?: boolean,\r\n ) => ArrayBuffer;\r\n};\r\n\r\n/**\r\n * HarmonyOS has no QuickBase64 native module; Buffer.toString/from('base64')\r\n * still needs these globals. Fall back to Nitro HybridUtils when missing.\r\n */\r\nconst installBase64GlobalsFallback = () => {\r\n const g = global as Base64Globals;\r\n if (typeof g.base64FromArrayBuffer === 'function') {\r\n return;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-require-imports\r\n const { bufferToString, stringToBuffer } = require('./utils/conversion') as {\r\n bufferToString: (buf: ArrayBuffer, encoding?: string) => string;\r\n stringToBuffer: (str: string, encoding?: string) => ArrayBuffer;\r\n };\r\n g.base64FromArrayBuffer = (buffer: ArrayBuffer, urlSafe?: boolean) =>\r\n bufferToString(buffer, urlSafe ? 'base64url' : 'base64');\r\n g.base64ToArrayBuffer = (b64: string, removeLinebreaks?: boolean) => {\r\n const input = removeLinebreaks ? b64.replace(/[\\r\\n]/g, '') : b64;\r\n return stringToBuffer(input, 'base64');\r\n };\r\n};\r\n\r\n/**\r\n * Optional. Patch global.crypto with react-native-quick-crypto and\r\n * global.Buffer with react-native-buffer.\r\n */\r\nexport const install = () => {\r\n // @ts-expect-error copyBytesFrom and poolSizets are missing from react-native-buffer\r\n global.Buffer = Buffer;\r\n\r\n // @ts-expect-error subtle isn't fully implemented and Cryptokey is missing\r\n global.crypto = QuickCrypto;\r\n\r\n // Install base64 globals (base64ToArrayBuffer, base64FromArrayBuffer)\r\n // eslint-disable-next-line @typescript-eslint/no-require-imports\r\n require('react-native-quick-base64');\r\n installBase64GlobalsFallback();\r\n};\r\n\r\n// random, cipher, hash use nextTick\r\nif (global.process == null) {\r\n // @ts-expect-error - process is not defined\r\n global.process = {};\r\n}\r\nif (global.process.nextTick == null) {\r\n global.process.nextTick = setImmediate;\r\n}\r\n\r\n// exports\r\nexport default QuickCrypto;\r\nexport * from './argon2';\r\nexport * from './blake3';\r\nexport { Certificate } from './certificate';\r\nexport { X509Certificate } from './x509certificate';\r\nexport type { CheckOptions, X509LegacyObject } from './x509certificate';\r\nexport * from './cipher';\r\nexport * from './ed';\r\nexport * from './keys';\r\nexport * from './hash';\r\nexport * from './hmac';\r\nexport * from './hkdf';\r\nexport * from './pbkdf2';\r\nexport * from './prime';\r\nexport * from './scrypt';\r\nexport * from './random';\r\nexport * from './ecdh';\r\nexport { getCurves } from './ec';\r\nexport * from './diffie-hellman';\r\nexport * from './mlkem';\r\nexport * from './utils';\r\nexport * from './subtle';\r\nexport { subtle, isCryptoKeyPair } from './subtle';\r\nexport { constants } from './constants';\r\nexport { Buffer } from '@craftzdog/react-native-buffer';\r\n\r\n// Additional exports for CommonJS compatibility\r\nmodule.exports = QuickCrypto;\r\nmodule.exports.default = QuickCrypto;\r\nmodule.exports.install = install;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeBuffer","require","argon2Module","_interopRequireWildcard","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","blake3","cipher","ed","_hash","_hmac","hkdf","pbkdf2","prime","scrypt","random","ecdh","dh","mlkem","_certificate","_x509certificate","_ec","_constants","utils","subtle","cache","e","t","__esModule","r","c","a","n","__proto__","default","WeakMap","has","set","getOwnPropertyDescriptor","QuickCrypto","hash","hmac","Certificate","X509Certificate","getCurves","constants","Buffer","installBase64GlobalsFallback","g","global","base64FromArrayBuffer","bufferToString","stringToBuffer","buffer","urlSafe","base64ToArrayBuffer","b64","removeLinebreaks","input","replace","install","crypto","process","nextTick","setImmediate","_default","module"],"sources":["index.ts"],"sourcesContent":["// polyfill imports\r\nimport { Buffer } from '@craftzdog/react-native-buffer';\r\n\r\n// API imports\r\nimport * as argon2Module from './argon2';\r\nimport * as keys from './keys';\r\nimport * as blake3 from './blake3';\r\nimport * as cipher from './cipher';\r\nimport * as ed from './ed';\r\nimport { hashExports as hash } from './hash';\r\nimport { hmacExports as hmac } from './hmac';\r\nimport * as hkdf from './hkdf';\r\nimport * as pbkdf2 from './pbkdf2';\r\nimport * as prime from './prime';\r\nimport * as scrypt from './scrypt';\r\nimport * as random from './random';\r\nimport * as ecdh from './ecdh';\r\nimport * as dh from './diffie-hellman';\r\nimport * as mlkem from './mlkem';\r\nimport { Certificate } from './certificate';\r\nimport { X509Certificate } from './x509certificate';\r\nimport { getCurves } from './ec';\r\nimport { constants } from './constants';\r\n\r\n// utils import\r\nimport * as utils from './utils';\r\nimport * as subtle from './subtle';\r\n\r\n/**\r\n * Loosely matches Node.js {crypto} with some unimplemented functionality.\r\n * See `docs/implementation-coverage.md` for status.\r\n */\r\nconst QuickCrypto = {\r\n ...argon2Module,\r\n ...keys,\r\n ...blake3,\r\n ...cipher,\r\n ...ed,\r\n ...hash,\r\n ...hmac,\r\n ...hkdf,\r\n ...pbkdf2,\r\n ...prime,\r\n ...scrypt,\r\n ...random,\r\n ...ecdh,\r\n ...dh,\r\n ...mlkem,\r\n ...utils,\r\n ...subtle,\r\n Certificate,\r\n X509Certificate,\r\n getCurves,\r\n constants,\r\n Buffer,\r\n};\r\n\r\ntype Base64Globals = typeof globalThis & {\r\n base64FromArrayBuffer?: (buffer: ArrayBuffer, urlSafe?: boolean) => string;\r\n base64ToArrayBuffer?: (\r\n b64: string,\r\n removeLinebreaks?: boolean,\r\n ) => ArrayBuffer;\r\n};\r\n\r\n/**\r\n * HarmonyOS has no QuickBase64 native module; Buffer.toString/from('base64')\r\n * still needs these globals. Fall back to Nitro HybridUtils when missing.\r\n */\r\nconst installBase64GlobalsFallback = () => {\r\n const g = global as Base64Globals;\r\n if (typeof g.base64FromArrayBuffer === 'function') {\r\n return;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-require-imports\r\n const { bufferToString, stringToBuffer } = require('./utils/conversion') as {\r\n bufferToString: (buf: ArrayBuffer, encoding?: string) => string;\r\n stringToBuffer: (str: string, encoding?: string) => ArrayBuffer;\r\n };\r\n g.base64FromArrayBuffer = (buffer: ArrayBuffer, urlSafe?: boolean) =>\r\n bufferToString(buffer, urlSafe ? 'base64url' : 'base64');\r\n g.base64ToArrayBuffer = (b64: string, removeLinebreaks?: boolean) => {\r\n const input = removeLinebreaks ? b64.replace(/[\\r\\n]/g, '') : b64;\r\n return stringToBuffer(input, 'base64');\r\n };\r\n};\r\n\r\n/**\r\n * Optional. Patch global.crypto with react-native-quick-crypto and\r\n * global.Buffer with react-native-buffer.\r\n */\r\nexport const install = () => {\r\n // @ts-expect-error copyBytesFrom and poolSizets are missing from react-native-buffer\r\n global.Buffer = Buffer;\r\n\r\n // @ts-expect-error subtle isn't fully implemented and Cryptokey is missing\r\n global.crypto = QuickCrypto;\r\n\r\n // Install base64 globals (base64ToArrayBuffer, base64FromArrayBuffer)\r\n // eslint-disable-next-line @typescript-eslint/no-require-imports\r\n require('react-native-quick-base64');\r\n installBase64GlobalsFallback();\r\n};\r\n\r\n// random, cipher, hash use nextTick\r\nif (global.process == null) {\r\n // @ts-expect-error - process is not defined\r\n global.process = {};\r\n}\r\nif (global.process.nextTick == null) {\r\n global.process.nextTick = setImmediate;\r\n}\r\n\r\n// exports\r\nexport default QuickCrypto;\r\nexport * from './argon2';\r\nexport * from './blake3';\r\nexport { Certificate } from './certificate';\r\nexport { X509Certificate } from './x509certificate';\r\nexport type { CheckOptions, X509LegacyObject } from './x509certificate';\r\nexport * from './cipher';\r\nexport * from './ed';\r\nexport * from './keys';\r\nexport * from './hash';\r\nexport * from './hmac';\r\nexport * from './hkdf';\r\nexport * from './pbkdf2';\r\nexport * from './prime';\r\nexport * from './scrypt';\r\nexport * from './random';\r\nexport * from './ecdh';\r\nexport { getCurves } from './ec';\r\nexport * from './diffie-hellman';\r\nexport * from './mlkem';\r\nexport * from './utils';\r\nexport * from './subtle';\r\nexport { subtle, isCryptoKeyPair } from './subtle';\r\nexport { constants } from './constants';\r\nexport { Buffer } from '@craftzdog/react-native-buffer';\r\n\r\n// Additional exports for CommonJS compatibility\r\nmodule.exports = QuickCrypto;\r\nmodule.exports.default = QuickCrypto;\r\nmodule.exports.install = install;\r\n"],"mappings":"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","ignoreList":[]}
@@ -10,7 +10,7 @@ var _utils = require("../utils");
10
10
  var _utils2 = require("./utils");
11
11
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
12
12
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
13
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
13
+ function _toPrimitive(t, e) { if ("object" != typeof t || !t) return t; var r; if ("undefined" != typeof Symbol && void 0 !== (r = t[Symbol.toPrimitive])) { var i = r.call(t, e || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === e ? String : Number)(t); }
14
14
  class CryptoKey {
15
15
  get [Symbol.toStringTag]() {
16
16
  return 'CryptoKey';
@@ -1 +1 @@
1
- {"version":3,"names":["_buffer","require","_reactNativeNitroModules","_utils","_utils2","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","CryptoKey","toStringTag","constructor","keyObject","keyAlgorithm","keyUsages","keyExtractable","inspect","_depth","_options","Error","type","extractable","algorithm","usages","exports","KeyObject","export","equals","otherKeyObject","handle","keyEquals","handleOrKey","ArrayBuffer","NitroModules","createHybridObject","keyType","KeyType","PUBLIC","PRIVATE","SECRET","init","from","key","toCryptoKey","createKeyObject","format","encoding","undefined","getAsymmetricKeyType","PublicKeyObject","PrivateKeyObject","SecretKeyObject","getAsymmetricKeyDetails","symmetricKeySize","getSymmetricKeySize","options","exportKey","Buffer","AsymmetricKeyObject","asymmetricKeyType","_asymmetricKeyType","asymmetricKeyDetails","_asymmetricKeyDetails","keyDetail","namedCurve","_this$asymmetricKeyDe","exportJwk","parsePublicKeyEncoding","buffer","toString","passphrase","cipher","parsePrivateKeyEncoding"],"sources":["classes.ts"],"sourcesContent":["import { Buffer } from 'buffer';\r\nimport { NitroModules } from 'react-native-nitro-modules';\r\nimport type {\r\n AsymmetricKeyType,\r\n EncodingOptions,\r\n JWK,\r\n KeyDetail,\r\n KeyObjectHandle,\r\n KeyUsage,\r\n SubtleAlgorithm,\r\n} from '../utils';\r\nimport { KeyType, KFormatType, KeyEncoding } from '../utils';\r\nimport { parsePrivateKeyEncoding, parsePublicKeyEncoding } from './utils';\r\n\r\nexport class CryptoKey {\r\n keyObject: KeyObject;\r\n keyAlgorithm: SubtleAlgorithm;\r\n keyUsages: KeyUsage[];\r\n keyExtractable: boolean;\r\n\r\n get [Symbol.toStringTag](): string {\r\n return 'CryptoKey';\r\n }\r\n\r\n constructor(\r\n keyObject: KeyObject,\r\n keyAlgorithm: SubtleAlgorithm,\r\n keyUsages: KeyUsage[],\r\n keyExtractable: boolean,\r\n ) {\r\n this.keyObject = keyObject;\r\n this.keyAlgorithm = keyAlgorithm;\r\n this.keyUsages = keyUsages;\r\n this.keyExtractable = keyExtractable;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n inspect(_depth: number, _options: unknown): unknown {\r\n throw new Error('CryptoKey.inspect is not implemented');\r\n // if (depth < 0) return this;\r\n\r\n // const opts = {\r\n // ...options,\r\n // depth: options.depth == null ? null : options.depth - 1,\r\n // };\r\n\r\n // return `CryptoKey ${inspect(\r\n // {\r\n // type: this.type,\r\n // extractable: this.extractable,\r\n // algorithm: this.algorithm,\r\n // usages: this.usages,\r\n // },\r\n // opts\r\n // )}`;\r\n }\r\n\r\n get type() {\r\n // if (!(this instanceof CryptoKey)) throw new Error('Invalid CryptoKey');\r\n return this.keyObject.type;\r\n }\r\n\r\n get extractable() {\r\n return this.keyExtractable;\r\n }\r\n\r\n get algorithm() {\r\n return this.keyAlgorithm;\r\n }\r\n\r\n get usages() {\r\n return this.keyUsages;\r\n }\r\n}\r\n\r\nexport class KeyObject {\r\n handle: KeyObjectHandle;\r\n type: 'public' | 'secret' | 'private';\r\n\r\n get [Symbol.toStringTag](): string {\r\n return 'KeyObject';\r\n }\r\n\r\n export(options: { format: 'pem' } & EncodingOptions): string | Buffer;\r\n export(options?: { format: 'der' } & EncodingOptions): Buffer;\r\n export(options?: { format: 'jwk' } & EncodingOptions): JWK;\r\n export(options?: EncodingOptions): string | Buffer | JWK;\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n export(_options?: EncodingOptions): string | Buffer | JWK {\r\n // This is a placeholder and should be overridden by subclasses.\r\n throw new Error('export() must be implemented by subclasses');\r\n }\r\n\r\n equals(otherKeyObject: KeyObject): boolean {\r\n if (!(otherKeyObject instanceof KeyObject)) {\r\n throw new TypeError('otherKeyObject must be a KeyObject');\r\n }\r\n return this.handle.keyEquals(otherKeyObject.handle);\r\n }\r\n\r\n constructor(type: string, handle: KeyObjectHandle);\r\n constructor(type: string, key: ArrayBuffer);\r\n constructor(type: string, handleOrKey: KeyObjectHandle | ArrayBuffer) {\r\n if (type !== 'secret' && type !== 'public' && type !== 'private')\r\n throw new Error(`invalid KeyObject type: ${type}`);\r\n\r\n if (handleOrKey instanceof ArrayBuffer) {\r\n this.handle = NitroModules.createHybridObject('KeyObjectHandle');\r\n let keyType: KeyType;\r\n switch (type) {\r\n case 'public':\r\n keyType = KeyType.PUBLIC;\r\n break;\r\n case 'private':\r\n keyType = KeyType.PRIVATE;\r\n break;\r\n case 'secret':\r\n keyType = KeyType.SECRET;\r\n break;\r\n default:\r\n // Should not happen\r\n throw new Error('invalid key type');\r\n }\r\n this.handle.init(keyType, handleOrKey);\r\n } else {\r\n this.handle = handleOrKey;\r\n }\r\n this.type = type as 'public' | 'secret' | 'private';\r\n }\r\n\r\n static from(key: CryptoKey): KeyObject {\r\n if (!(key instanceof CryptoKey)) {\r\n throw new TypeError(\r\n `The \"key\" argument must be an instance of CryptoKey. Received ${typeof key}`,\r\n );\r\n }\r\n return key.keyObject;\r\n }\r\n\r\n toCryptoKey(\r\n algorithm: SubtleAlgorithm,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n ): CryptoKey {\r\n return new CryptoKey(this, algorithm, keyUsages, extractable);\r\n }\r\n\r\n static createKeyObject(\r\n type: string,\r\n key: ArrayBuffer,\r\n format?: KFormatType,\r\n encoding?: KeyEncoding,\r\n ): KeyObject {\r\n if (type !== 'secret' && type !== 'public' && type !== 'private')\r\n throw new Error(`invalid KeyObject type: ${type}`);\r\n\r\n const handle = NitroModules.createHybridObject(\r\n 'KeyObjectHandle',\r\n ) as KeyObjectHandle;\r\n let keyType: KeyType;\r\n switch (type) {\r\n case 'public':\r\n keyType = KeyType.PUBLIC;\r\n break;\r\n case 'private':\r\n keyType = KeyType.PRIVATE;\r\n break;\r\n case 'secret':\r\n keyType = KeyType.SECRET;\r\n break;\r\n default:\r\n throw new Error('invalid key type');\r\n }\r\n\r\n // If format is provided, use it (encoding is optional)\r\n if (format !== undefined) {\r\n handle.init(keyType, key, format, encoding);\r\n } else {\r\n handle.init(keyType, key);\r\n }\r\n\r\n // For asymmetric keys, return the appropriate subclass\r\n if (type === 'public' || type === 'private') {\r\n try {\r\n handle.getAsymmetricKeyType();\r\n // If we get here, it's an asymmetric key - return the appropriate subclass\r\n if (type === 'public') {\r\n return new PublicKeyObject(handle);\r\n } else {\r\n return new PrivateKeyObject(handle);\r\n }\r\n } catch {\r\n // Not an asymmetric key, fall through to regular KeyObject\r\n }\r\n }\r\n\r\n // For secret keys, return SecretKeyObject\r\n if (type === 'secret') {\r\n return new SecretKeyObject(handle);\r\n }\r\n\r\n // Return regular KeyObject for symmetric keys or if asymmetric detection failed\r\n return new KeyObject(type, handle);\r\n }\r\n\r\n getAsymmetricKeyType(): undefined {\r\n return undefined;\r\n }\r\n\r\n getAsymmetricKeyDetails(): undefined {\r\n return undefined;\r\n }\r\n}\r\n\r\nexport class SecretKeyObject extends KeyObject {\r\n constructor(handle: KeyObjectHandle) {\r\n super('secret', handle);\r\n }\r\n\r\n get symmetricKeySize(): number {\r\n return this.handle.getSymmetricKeySize();\r\n }\r\n\r\n export(options: { format: 'pem' } & EncodingOptions): never;\r\n export(options: { format: 'der' } & EncodingOptions): Buffer;\r\n export(options: { format: 'jwk' } & EncodingOptions): never;\r\n export(options?: EncodingOptions): Buffer;\r\n export(options?: EncodingOptions): Buffer {\r\n if (options?.format === 'pem' || options?.format === 'jwk') {\r\n throw new Error(\r\n `SecretKey export for ${options.format} is not supported`,\r\n );\r\n }\r\n const key = this.handle.exportKey();\r\n return Buffer.from(key);\r\n }\r\n}\r\n\r\n// const kAsymmetricKeyType = Symbol('kAsymmetricKeyType');\r\n// const kAsymmetricKeyDetails = Symbol('kAsymmetricKeyDetails');\r\n\r\n// function normalizeKeyDetails(details = {}) {\r\n// if (details.publicExponent !== undefined) {\r\n// return {\r\n// ...details,\r\n// publicExponent: bigIntArrayToUnsignedBigInt(\r\n// new Uint8Array(details.publicExponent)\r\n// ),\r\n// };\r\n// }\r\n// return details;\r\n// }\r\n\r\nexport class AsymmetricKeyObject extends KeyObject {\r\n constructor(type: string, handle: KeyObjectHandle) {\r\n super(type, handle);\r\n }\r\n\r\n private _asymmetricKeyType?: AsymmetricKeyType;\r\n\r\n get asymmetricKeyType(): AsymmetricKeyType {\r\n if (!this._asymmetricKeyType) {\r\n this._asymmetricKeyType = this.handle.getAsymmetricKeyType();\r\n }\r\n return this._asymmetricKeyType;\r\n }\r\n\r\n private _asymmetricKeyDetails?: KeyDetail;\r\n\r\n get asymmetricKeyDetails() {\r\n if (!this._asymmetricKeyDetails) {\r\n this._asymmetricKeyDetails = this.handle.keyDetail();\r\n }\r\n return this._asymmetricKeyDetails;\r\n }\r\n\r\n get namedCurve(): string | undefined {\r\n return this.asymmetricKeyDetails?.namedCurve;\r\n }\r\n}\r\n\r\nexport class PublicKeyObject extends AsymmetricKeyObject {\r\n constructor(handle: KeyObjectHandle) {\r\n super('public', handle);\r\n }\r\n\r\n export(options: { format: 'pem' } & EncodingOptions): string;\r\n export(options: { format: 'der' } & EncodingOptions): Buffer;\r\n export(options: { format: 'jwk' } & EncodingOptions): JWK;\r\n export(options: EncodingOptions): string | Buffer | JWK {\r\n if (options?.format === 'jwk') {\r\n return this.handle.exportJwk({}, false);\r\n }\r\n const { format, type } = parsePublicKeyEncoding(\r\n options,\r\n this.asymmetricKeyType,\r\n );\r\n const key = this.handle.exportKey(format, type);\r\n const buffer = Buffer.from(key);\r\n if (options?.format === 'pem') {\r\n return buffer.toString('utf-8');\r\n }\r\n return buffer;\r\n }\r\n}\r\n\r\nexport class PrivateKeyObject extends AsymmetricKeyObject {\r\n constructor(handle: KeyObjectHandle) {\r\n super('private', handle);\r\n }\r\n\r\n export(options: { format: 'pem' } & EncodingOptions): string;\r\n export(options: { format: 'der' } & EncodingOptions): Buffer;\r\n export(options: { format: 'jwk' } & EncodingOptions): JWK;\r\n export(options: EncodingOptions): string | Buffer | JWK {\r\n if (options?.format === 'jwk') {\r\n if (options.passphrase !== undefined) {\r\n throw new Error('jwk does not support encryption');\r\n }\r\n return this.handle.exportJwk({}, false);\r\n }\r\n const { format, type, cipher, passphrase } = parsePrivateKeyEncoding(\r\n options,\r\n this.asymmetricKeyType,\r\n );\r\n const key = this.handle.exportKey(format, type, cipher, passphrase);\r\n const buffer = Buffer.from(key);\r\n if (options?.format === 'pem') {\r\n return buffer.toString('utf-8');\r\n }\r\n return buffer;\r\n }\r\n}\r\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,wBAAA,GAAAD,OAAA;AAUA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AAA0E,SAAAI,gBAAAC,CAAA,EAAAC,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAD,CAAA,GAAAI,MAAA,CAAAC,cAAA,CAAAL,CAAA,EAAAC,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAT,CAAA,CAAAC,CAAA,IAAAC,CAAA,EAAAF,CAAA;AAAA,SAAAG,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAF,CAAA,GAAAE,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAb,CAAA,QAAAU,CAAA,GAAAV,CAAA,CAAAc,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AAEnE,MAAMgB,SAAS,CAAC;EAMrB,KAAKN,MAAM,CAACO,WAAW,IAAY;IACjC,OAAO,WAAW;EACpB;EAEAC,WAAWA,CACTC,SAAoB,EACpBC,YAA6B,EAC7BC,SAAqB,EACrBC,cAAuB,EACvB;IAAAzB,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACA,IAAI,CAACsB,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACC,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACC,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACC,cAAc,GAAGA,cAAc;EACtC;EACA;EACAC,OAAOA,CAACC,MAAc,EAAEC,QAAiB,EAAW;IAClD,MAAM,IAAIC,KAAK,CAAC,sCAAsC,CAAC;IACvD;;IAEA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;EACF;EAEA,IAAIC,IAAIA,CAAA,EAAG;IACT;IACA,OAAO,IAAI,CAACR,SAAS,CAACQ,IAAI;EAC5B;EAEA,IAAIC,WAAWA,CAAA,EAAG;IAChB,OAAO,IAAI,CAACN,cAAc;EAC5B;EAEA,IAAIO,SAASA,CAAA,EAAG;IACd,OAAO,IAAI,CAACT,YAAY;EAC1B;EAEA,IAAIU,MAAMA,CAAA,EAAG;IACX,OAAO,IAAI,CAACT,SAAS;EACvB;AACF;AAACU,OAAA,CAAAf,SAAA,GAAAA,SAAA;AAEM,MAAMgB,SAAS,CAAC;EAIrB,KAAKtB,MAAM,CAACO,WAAW,IAAY;IACjC,OAAO,WAAW;EACpB;EAMA;EACAgB,MAAMA,CAACR,QAA0B,EAAyB;IACxD;IACA,MAAM,IAAIC,KAAK,CAAC,4CAA4C,CAAC;EAC/D;EAEAQ,MAAMA,CAACC,cAAyB,EAAW;IACzC,IAAI,EAAEA,cAAc,YAAYH,SAAS,CAAC,EAAE;MAC1C,MAAM,IAAInB,SAAS,CAAC,oCAAoC,CAAC;IAC3D;IACA,OAAO,IAAI,CAACuB,MAAM,CAACC,SAAS,CAACF,cAAc,CAACC,MAAM,CAAC;EACrD;EAIAlB,WAAWA,CAACS,IAAY,EAAEW,WAA0C,EAAE;IAAAzC,eAAA;IAAAA,eAAA;IACpE,IAAI8B,IAAI,KAAK,QAAQ,IAAIA,IAAI,KAAK,QAAQ,IAAIA,IAAI,KAAK,SAAS,EAC9D,MAAM,IAAID,KAAK,CAAC,2BAA2BC,IAAI,EAAE,CAAC;IAEpD,IAAIW,WAAW,YAAYC,WAAW,EAAE;MACtC,IAAI,CAACH,MAAM,GAAGI,qCAAY,CAACC,kBAAkB,CAAC,iBAAiB,CAAC;MAChE,IAAIC,OAAgB;MACpB,QAAQf,IAAI;QACV,KAAK,QAAQ;UACXe,OAAO,GAAGC,cAAO,CAACC,MAAM;UACxB;QACF,KAAK,SAAS;UACZF,OAAO,GAAGC,cAAO,CAACE,OAAO;UACzB;QACF,KAAK,QAAQ;UACXH,OAAO,GAAGC,cAAO,CAACG,MAAM;UACxB;QACF;UACE;UACA,MAAM,IAAIpB,KAAK,CAAC,kBAAkB,CAAC;MACvC;MACA,IAAI,CAACU,MAAM,CAACW,IAAI,CAACL,OAAO,EAAEJ,WAAW,CAAC;IACxC,CAAC,MAAM;MACL,IAAI,CAACF,MAAM,GAAGE,WAAW;IAC3B;IACA,IAAI,CAACX,IAAI,GAAGA,IAAuC;EACrD;EAEA,OAAOqB,IAAIA,CAACC,GAAc,EAAa;IACrC,IAAI,EAAEA,GAAG,YAAYjC,SAAS,CAAC,EAAE;MAC/B,MAAM,IAAIH,SAAS,CACjB,iEAAiE,OAAOoC,GAAG,EAC7E,CAAC;IACH;IACA,OAAOA,GAAG,CAAC9B,SAAS;EACtB;EAEA+B,WAAWA,CACTrB,SAA0B,EAC1BD,WAAoB,EACpBP,SAAqB,EACV;IACX,OAAO,IAAIL,SAAS,CAAC,IAAI,EAAEa,SAAS,EAAER,SAAS,EAAEO,WAAW,CAAC;EAC/D;EAEA,OAAOuB,eAAeA,CACpBxB,IAAY,EACZsB,GAAgB,EAChBG,MAAoB,EACpBC,QAAsB,EACX;IACX,IAAI1B,IAAI,KAAK,QAAQ,IAAIA,IAAI,KAAK,QAAQ,IAAIA,IAAI,KAAK,SAAS,EAC9D,MAAM,IAAID,KAAK,CAAC,2BAA2BC,IAAI,EAAE,CAAC;IAEpD,MAAMS,MAAM,GAAGI,qCAAY,CAACC,kBAAkB,CAC5C,iBACF,CAAoB;IACpB,IAAIC,OAAgB;IACpB,QAAQf,IAAI;MACV,KAAK,QAAQ;QACXe,OAAO,GAAGC,cAAO,CAACC,MAAM;QACxB;MACF,KAAK,SAAS;QACZF,OAAO,GAAGC,cAAO,CAACE,OAAO;QACzB;MACF,KAAK,QAAQ;QACXH,OAAO,GAAGC,cAAO,CAACG,MAAM;QACxB;MACF;QACE,MAAM,IAAIpB,KAAK,CAAC,kBAAkB,CAAC;IACvC;;IAEA;IACA,IAAI0B,MAAM,KAAKE,SAAS,EAAE;MACxBlB,MAAM,CAACW,IAAI,CAACL,OAAO,EAAEO,GAAG,EAAEG,MAAM,EAAEC,QAAQ,CAAC;IAC7C,CAAC,MAAM;MACLjB,MAAM,CAACW,IAAI,CAACL,OAAO,EAAEO,GAAG,CAAC;IAC3B;;IAEA;IACA,IAAItB,IAAI,KAAK,QAAQ,IAAIA,IAAI,KAAK,SAAS,EAAE;MAC3C,IAAI;QACFS,MAAM,CAACmB,oBAAoB,CAAC,CAAC;QAC7B;QACA,IAAI5B,IAAI,KAAK,QAAQ,EAAE;UACrB,OAAO,IAAI6B,eAAe,CAACpB,MAAM,CAAC;QACpC,CAAC,MAAM;UACL,OAAO,IAAIqB,gBAAgB,CAACrB,MAAM,CAAC;QACrC;MACF,CAAC,CAAC,MAAM;QACN;MAAA;IAEJ;;IAEA;IACA,IAAIT,IAAI,KAAK,QAAQ,EAAE;MACrB,OAAO,IAAI+B,eAAe,CAACtB,MAAM,CAAC;IACpC;;IAEA;IACA,OAAO,IAAIJ,SAAS,CAACL,IAAI,EAAES,MAAM,CAAC;EACpC;EAEAmB,oBAAoBA,CAAA,EAAc;IAChC,OAAOD,SAAS;EAClB;EAEAK,uBAAuBA,CAAA,EAAc;IACnC,OAAOL,SAAS;EAClB;AACF;AAACvB,OAAA,CAAAC,SAAA,GAAAA,SAAA;AAEM,MAAM0B,eAAe,SAAS1B,SAAS,CAAC;EAC7Cd,WAAWA,CAACkB,MAAuB,EAAE;IACnC,KAAK,CAAC,QAAQ,EAAEA,MAAM,CAAC;EACzB;EAEA,IAAIwB,gBAAgBA,CAAA,EAAW;IAC7B,OAAO,IAAI,CAACxB,MAAM,CAACyB,mBAAmB,CAAC,CAAC;EAC1C;EAMA5B,MAAMA,CAAC6B,OAAyB,EAAU;IACxC,IAAI,CAAAA,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEV,MAAM,MAAK,KAAK,IAAI,CAAAU,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEV,MAAM,MAAK,KAAK,EAAE;MAC1D,MAAM,IAAI1B,KAAK,CACb,wBAAwBoC,OAAO,CAACV,MAAM,mBACxC,CAAC;IACH;IACA,MAAMH,GAAG,GAAG,IAAI,CAACb,MAAM,CAAC2B,SAAS,CAAC,CAAC;IACnC,OAAOC,cAAM,CAAChB,IAAI,CAACC,GAAG,CAAC;EACzB;AACF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAAlB,OAAA,CAAA2B,eAAA,GAAAA,eAAA;AAEO,MAAMO,mBAAmB,SAASjC,SAAS,CAAC;EACjDd,WAAWA,CAACS,IAAY,EAAES,MAAuB,EAAE;IACjD,KAAK,CAACT,IAAI,EAAES,MAAM,CAAC;IAACvC,eAAA;IAAAA,eAAA;EACtB;EAIA,IAAIqE,iBAAiBA,CAAA,EAAsB;IACzC,IAAI,CAAC,IAAI,CAACC,kBAAkB,EAAE;MAC5B,IAAI,CAACA,kBAAkB,GAAG,IAAI,CAAC/B,MAAM,CAACmB,oBAAoB,CAAC,CAAC;IAC9D;IACA,OAAO,IAAI,CAACY,kBAAkB;EAChC;EAIA,IAAIC,oBAAoBA,CAAA,EAAG;IACzB,IAAI,CAAC,IAAI,CAACC,qBAAqB,EAAE;MAC/B,IAAI,CAACA,qBAAqB,GAAG,IAAI,CAACjC,MAAM,CAACkC,SAAS,CAAC,CAAC;IACtD;IACA,OAAO,IAAI,CAACD,qBAAqB;EACnC;EAEA,IAAIE,UAAUA,CAAA,EAAuB;IAAA,IAAAC,qBAAA;IACnC,QAAAA,qBAAA,GAAO,IAAI,CAACJ,oBAAoB,cAAAI,qBAAA,uBAAzBA,qBAAA,CAA2BD,UAAU;EAC9C;AACF;AAACxC,OAAA,CAAAkC,mBAAA,GAAAA,mBAAA;AAEM,MAAMT,eAAe,SAASS,mBAAmB,CAAC;EACvD/C,WAAWA,CAACkB,MAAuB,EAAE;IACnC,KAAK,CAAC,QAAQ,EAAEA,MAAM,CAAC;EACzB;EAKAH,MAAMA,CAAC6B,OAAwB,EAAyB;IACtD,IAAI,CAAAA,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEV,MAAM,MAAK,KAAK,EAAE;MAC7B,OAAO,IAAI,CAAChB,MAAM,CAACqC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IACzC;IACA,MAAM;MAAErB,MAAM;MAAEzB;IAAK,CAAC,GAAG,IAAA+C,8BAAsB,EAC7CZ,OAAO,EACP,IAAI,CAACI,iBACP,CAAC;IACD,MAAMjB,GAAG,GAAG,IAAI,CAACb,MAAM,CAAC2B,SAAS,CAACX,MAAM,EAAEzB,IAAI,CAAC;IAC/C,MAAMgD,MAAM,GAAGX,cAAM,CAAChB,IAAI,CAACC,GAAG,CAAC;IAC/B,IAAI,CAAAa,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEV,MAAM,MAAK,KAAK,EAAE;MAC7B,OAAOuB,MAAM,CAACC,QAAQ,CAAC,OAAO,CAAC;IACjC;IACA,OAAOD,MAAM;EACf;AACF;AAAC5C,OAAA,CAAAyB,eAAA,GAAAA,eAAA;AAEM,MAAMC,gBAAgB,SAASQ,mBAAmB,CAAC;EACxD/C,WAAWA,CAACkB,MAAuB,EAAE;IACnC,KAAK,CAAC,SAAS,EAAEA,MAAM,CAAC;EAC1B;EAKAH,MAAMA,CAAC6B,OAAwB,EAAyB;IACtD,IAAI,CAAAA,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEV,MAAM,MAAK,KAAK,EAAE;MAC7B,IAAIU,OAAO,CAACe,UAAU,KAAKvB,SAAS,EAAE;QACpC,MAAM,IAAI5B,KAAK,CAAC,iCAAiC,CAAC;MACpD;MACA,OAAO,IAAI,CAACU,MAAM,CAACqC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IACzC;IACA,MAAM;MAAErB,MAAM;MAAEzB,IAAI;MAAEmD,MAAM;MAAED;IAAW,CAAC,GAAG,IAAAE,+BAAuB,EAClEjB,OAAO,EACP,IAAI,CAACI,iBACP,CAAC;IACD,MAAMjB,GAAG,GAAG,IAAI,CAACb,MAAM,CAAC2B,SAAS,CAACX,MAAM,EAAEzB,IAAI,EAAEmD,MAAM,EAAED,UAAU,CAAC;IACnE,MAAMF,MAAM,GAAGX,cAAM,CAAChB,IAAI,CAACC,GAAG,CAAC;IAC/B,IAAI,CAAAa,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEV,MAAM,MAAK,KAAK,EAAE;MAC7B,OAAOuB,MAAM,CAACC,QAAQ,CAAC,OAAO,CAAC;IACjC;IACA,OAAOD,MAAM;EACf;AACF;AAAC5C,OAAA,CAAA0B,gBAAA,GAAAA,gBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_buffer","require","_reactNativeNitroModules","_utils","_utils2","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","CryptoKey","toStringTag","constructor","keyObject","keyAlgorithm","keyUsages","keyExtractable","inspect","_depth","_options","Error","type","extractable","algorithm","usages","exports","KeyObject","export","equals","otherKeyObject","handle","keyEquals","handleOrKey","ArrayBuffer","NitroModules","createHybridObject","keyType","KeyType","PUBLIC","PRIVATE","SECRET","init","from","key","toCryptoKey","createKeyObject","format","encoding","undefined","getAsymmetricKeyType","PublicKeyObject","PrivateKeyObject","SecretKeyObject","getAsymmetricKeyDetails","symmetricKeySize","getSymmetricKeySize","options","exportKey","Buffer","AsymmetricKeyObject","asymmetricKeyType","_asymmetricKeyType","asymmetricKeyDetails","_asymmetricKeyDetails","keyDetail","namedCurve","_this$asymmetricKeyDe","exportJwk","parsePublicKeyEncoding","buffer","toString","passphrase","cipher","parsePrivateKeyEncoding"],"sources":["classes.ts"],"sourcesContent":["import { Buffer } from 'buffer';\r\nimport { NitroModules } from 'react-native-nitro-modules';\r\nimport type {\r\n AsymmetricKeyType,\r\n EncodingOptions,\r\n JWK,\r\n KeyDetail,\r\n KeyObjectHandle,\r\n KeyUsage,\r\n SubtleAlgorithm,\r\n} from '../utils';\r\nimport { KeyType, KFormatType, KeyEncoding } from '../utils';\r\nimport { parsePrivateKeyEncoding, parsePublicKeyEncoding } from './utils';\r\n\r\nexport class CryptoKey {\r\n keyObject: KeyObject;\r\n keyAlgorithm: SubtleAlgorithm;\r\n keyUsages: KeyUsage[];\r\n keyExtractable: boolean;\r\n\r\n get [Symbol.toStringTag](): string {\r\n return 'CryptoKey';\r\n }\r\n\r\n constructor(\r\n keyObject: KeyObject,\r\n keyAlgorithm: SubtleAlgorithm,\r\n keyUsages: KeyUsage[],\r\n keyExtractable: boolean,\r\n ) {\r\n this.keyObject = keyObject;\r\n this.keyAlgorithm = keyAlgorithm;\r\n this.keyUsages = keyUsages;\r\n this.keyExtractable = keyExtractable;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n inspect(_depth: number, _options: unknown): unknown {\r\n throw new Error('CryptoKey.inspect is not implemented');\r\n // if (depth < 0) return this;\r\n\r\n // const opts = {\r\n // ...options,\r\n // depth: options.depth == null ? null : options.depth - 1,\r\n // };\r\n\r\n // return `CryptoKey ${inspect(\r\n // {\r\n // type: this.type,\r\n // extractable: this.extractable,\r\n // algorithm: this.algorithm,\r\n // usages: this.usages,\r\n // },\r\n // opts\r\n // )}`;\r\n }\r\n\r\n get type() {\r\n // if (!(this instanceof CryptoKey)) throw new Error('Invalid CryptoKey');\r\n return this.keyObject.type;\r\n }\r\n\r\n get extractable() {\r\n return this.keyExtractable;\r\n }\r\n\r\n get algorithm() {\r\n return this.keyAlgorithm;\r\n }\r\n\r\n get usages() {\r\n return this.keyUsages;\r\n }\r\n}\r\n\r\nexport class KeyObject {\r\n handle: KeyObjectHandle;\r\n type: 'public' | 'secret' | 'private';\r\n\r\n get [Symbol.toStringTag](): string {\r\n return 'KeyObject';\r\n }\r\n\r\n export(options: { format: 'pem' } & EncodingOptions): string | Buffer;\r\n export(options?: { format: 'der' } & EncodingOptions): Buffer;\r\n export(options?: { format: 'jwk' } & EncodingOptions): JWK;\r\n export(options?: EncodingOptions): string | Buffer | JWK;\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n export(_options?: EncodingOptions): string | Buffer | JWK {\r\n // This is a placeholder and should be overridden by subclasses.\r\n throw new Error('export() must be implemented by subclasses');\r\n }\r\n\r\n equals(otherKeyObject: KeyObject): boolean {\r\n if (!(otherKeyObject instanceof KeyObject)) {\r\n throw new TypeError('otherKeyObject must be a KeyObject');\r\n }\r\n return this.handle.keyEquals(otherKeyObject.handle);\r\n }\r\n\r\n constructor(type: string, handle: KeyObjectHandle);\r\n constructor(type: string, key: ArrayBuffer);\r\n constructor(type: string, handleOrKey: KeyObjectHandle | ArrayBuffer) {\r\n if (type !== 'secret' && type !== 'public' && type !== 'private')\r\n throw new Error(`invalid KeyObject type: ${type}`);\r\n\r\n if (handleOrKey instanceof ArrayBuffer) {\r\n this.handle = NitroModules.createHybridObject('KeyObjectHandle');\r\n let keyType: KeyType;\r\n switch (type) {\r\n case 'public':\r\n keyType = KeyType.PUBLIC;\r\n break;\r\n case 'private':\r\n keyType = KeyType.PRIVATE;\r\n break;\r\n case 'secret':\r\n keyType = KeyType.SECRET;\r\n break;\r\n default:\r\n // Should not happen\r\n throw new Error('invalid key type');\r\n }\r\n this.handle.init(keyType, handleOrKey);\r\n } else {\r\n this.handle = handleOrKey;\r\n }\r\n this.type = type as 'public' | 'secret' | 'private';\r\n }\r\n\r\n static from(key: CryptoKey): KeyObject {\r\n if (!(key instanceof CryptoKey)) {\r\n throw new TypeError(\r\n `The \"key\" argument must be an instance of CryptoKey. Received ${typeof key}`,\r\n );\r\n }\r\n return key.keyObject;\r\n }\r\n\r\n toCryptoKey(\r\n algorithm: SubtleAlgorithm,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n ): CryptoKey {\r\n return new CryptoKey(this, algorithm, keyUsages, extractable);\r\n }\r\n\r\n static createKeyObject(\r\n type: string,\r\n key: ArrayBuffer,\r\n format?: KFormatType,\r\n encoding?: KeyEncoding,\r\n ): KeyObject {\r\n if (type !== 'secret' && type !== 'public' && type !== 'private')\r\n throw new Error(`invalid KeyObject type: ${type}`);\r\n\r\n const handle = NitroModules.createHybridObject(\r\n 'KeyObjectHandle',\r\n ) as KeyObjectHandle;\r\n let keyType: KeyType;\r\n switch (type) {\r\n case 'public':\r\n keyType = KeyType.PUBLIC;\r\n break;\r\n case 'private':\r\n keyType = KeyType.PRIVATE;\r\n break;\r\n case 'secret':\r\n keyType = KeyType.SECRET;\r\n break;\r\n default:\r\n throw new Error('invalid key type');\r\n }\r\n\r\n // If format is provided, use it (encoding is optional)\r\n if (format !== undefined) {\r\n handle.init(keyType, key, format, encoding);\r\n } else {\r\n handle.init(keyType, key);\r\n }\r\n\r\n // For asymmetric keys, return the appropriate subclass\r\n if (type === 'public' || type === 'private') {\r\n try {\r\n handle.getAsymmetricKeyType();\r\n // If we get here, it's an asymmetric key - return the appropriate subclass\r\n if (type === 'public') {\r\n return new PublicKeyObject(handle);\r\n } else {\r\n return new PrivateKeyObject(handle);\r\n }\r\n } catch {\r\n // Not an asymmetric key, fall through to regular KeyObject\r\n }\r\n }\r\n\r\n // For secret keys, return SecretKeyObject\r\n if (type === 'secret') {\r\n return new SecretKeyObject(handle);\r\n }\r\n\r\n // Return regular KeyObject for symmetric keys or if asymmetric detection failed\r\n return new KeyObject(type, handle);\r\n }\r\n\r\n getAsymmetricKeyType(): undefined {\r\n return undefined;\r\n }\r\n\r\n getAsymmetricKeyDetails(): undefined {\r\n return undefined;\r\n }\r\n}\r\n\r\nexport class SecretKeyObject extends KeyObject {\r\n constructor(handle: KeyObjectHandle) {\r\n super('secret', handle);\r\n }\r\n\r\n get symmetricKeySize(): number {\r\n return this.handle.getSymmetricKeySize();\r\n }\r\n\r\n export(options: { format: 'pem' } & EncodingOptions): never;\r\n export(options: { format: 'der' } & EncodingOptions): Buffer;\r\n export(options: { format: 'jwk' } & EncodingOptions): never;\r\n export(options?: EncodingOptions): Buffer;\r\n export(options?: EncodingOptions): Buffer {\r\n if (options?.format === 'pem' || options?.format === 'jwk') {\r\n throw new Error(\r\n `SecretKey export for ${options.format} is not supported`,\r\n );\r\n }\r\n const key = this.handle.exportKey();\r\n return Buffer.from(key);\r\n }\r\n}\r\n\r\n// const kAsymmetricKeyType = Symbol('kAsymmetricKeyType');\r\n// const kAsymmetricKeyDetails = Symbol('kAsymmetricKeyDetails');\r\n\r\n// function normalizeKeyDetails(details = {}) {\r\n// if (details.publicExponent !== undefined) {\r\n// return {\r\n// ...details,\r\n// publicExponent: bigIntArrayToUnsignedBigInt(\r\n// new Uint8Array(details.publicExponent)\r\n// ),\r\n// };\r\n// }\r\n// return details;\r\n// }\r\n\r\nexport class AsymmetricKeyObject extends KeyObject {\r\n constructor(type: string, handle: KeyObjectHandle) {\r\n super(type, handle);\r\n }\r\n\r\n private _asymmetricKeyType?: AsymmetricKeyType;\r\n\r\n get asymmetricKeyType(): AsymmetricKeyType {\r\n if (!this._asymmetricKeyType) {\r\n this._asymmetricKeyType = this.handle.getAsymmetricKeyType();\r\n }\r\n return this._asymmetricKeyType;\r\n }\r\n\r\n private _asymmetricKeyDetails?: KeyDetail;\r\n\r\n get asymmetricKeyDetails() {\r\n if (!this._asymmetricKeyDetails) {\r\n this._asymmetricKeyDetails = this.handle.keyDetail();\r\n }\r\n return this._asymmetricKeyDetails;\r\n }\r\n\r\n get namedCurve(): string | undefined {\r\n return this.asymmetricKeyDetails?.namedCurve;\r\n }\r\n}\r\n\r\nexport class PublicKeyObject extends AsymmetricKeyObject {\r\n constructor(handle: KeyObjectHandle) {\r\n super('public', handle);\r\n }\r\n\r\n export(options: { format: 'pem' } & EncodingOptions): string;\r\n export(options: { format: 'der' } & EncodingOptions): Buffer;\r\n export(options: { format: 'jwk' } & EncodingOptions): JWK;\r\n export(options: EncodingOptions): string | Buffer | JWK {\r\n if (options?.format === 'jwk') {\r\n return this.handle.exportJwk({}, false);\r\n }\r\n const { format, type } = parsePublicKeyEncoding(\r\n options,\r\n this.asymmetricKeyType,\r\n );\r\n const key = this.handle.exportKey(format, type);\r\n const buffer = Buffer.from(key);\r\n if (options?.format === 'pem') {\r\n return buffer.toString('utf-8');\r\n }\r\n return buffer;\r\n }\r\n}\r\n\r\nexport class PrivateKeyObject extends AsymmetricKeyObject {\r\n constructor(handle: KeyObjectHandle) {\r\n super('private', handle);\r\n }\r\n\r\n export(options: { format: 'pem' } & EncodingOptions): string;\r\n export(options: { format: 'der' } & EncodingOptions): Buffer;\r\n export(options: { format: 'jwk' } & EncodingOptions): JWK;\r\n export(options: EncodingOptions): string | Buffer | JWK {\r\n if (options?.format === 'jwk') {\r\n if (options.passphrase !== undefined) {\r\n throw new Error('jwk does not support encryption');\r\n }\r\n return this.handle.exportJwk({}, false);\r\n }\r\n const { format, type, cipher, passphrase } = parsePrivateKeyEncoding(\r\n options,\r\n this.asymmetricKeyType,\r\n );\r\n const key = this.handle.exportKey(format, type, cipher, passphrase);\r\n const buffer = Buffer.from(key);\r\n if (options?.format === 'pem') {\r\n return buffer.toString('utf-8');\r\n }\r\n return buffer;\r\n }\r\n}\r\n"],"mappings":"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","ignoreList":[]}
@@ -15,7 +15,7 @@ var _utils = require("./utils");
15
15
  var _utils2 = require("../utils");
16
16
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
17
17
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
18
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
18
+ function _toPrimitive(t, e) { if ("object" != typeof t || !t) return t; var r; if ("undefined" != typeof Symbol && void 0 !== (r = t[Symbol.toPrimitive])) { var i = r.call(t, e || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === e ? String : Number)(t); }
19
19
  function prepareKey(key, isPublic) {
20
20
  // Already a KeyObject
21
21
  if (key instanceof _classes.KeyObject) {
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeBuffer","require","_reactNativeNitroModules","_classes","_utils","_utils2","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","prepareKey","key","isPublic","KeyObject","type","Error","keyObject","isCryptoKey","cryptoKey","isStringOrBuffer","isPem","includes","format","KFormatType","PEM","undefined","keyData","toAB","createKeyObject","keyObj","data","padding","saltLength","dsaEncoding","options","kFormat","DER","kType","KeyEncoding","PKCS8","PKCS1","SEC1","SPKI","keyType","dsaEncodingToNumber","Sign","constructor","algorithm","handle","NitroModules","createHybridObject","init","update","dataBuffer","sign","privateKey","outputEncoding","signature","buf","Buffer","from","toString","exports","Verify","verify","publicKey","signatureEncoding","sigBuffer","createSign","createVerify","callback","doSign","signer","process","nextTick","err","doVerify","verifier","result"],"sources":["signVerify.ts"],"sourcesContent":["import { Buffer } from '@craftzdog/react-native-buffer';\r\nimport { NitroModules } from 'react-native-nitro-modules';\r\nimport type {\r\n SignHandle as SignHandleSpec,\r\n VerifyHandle as VerifyHandleSpec,\r\n} from '../specs/v1/sign.nitro';\r\nimport { KeyObject, CryptoKey } from './classes';\r\nimport { isCryptoKey } from './utils';\r\nimport type { BinaryLike } from '../utils';\r\nimport {\r\n binaryLikeToArrayBuffer as toAB,\r\n isStringOrBuffer,\r\n KFormatType,\r\n KeyEncoding,\r\n} from '../utils';\r\n\r\ntype KeyInput = BinaryLike | KeyObject | CryptoKey | KeyInputObject;\r\n\r\ninterface KeyInputObject {\r\n key: BinaryLike | KeyObject | CryptoKey;\r\n format?: 'pem' | 'der';\r\n type?: 'pkcs1' | 'pkcs8' | 'spki' | 'sec1';\r\n passphrase?: BinaryLike;\r\n padding?: number;\r\n saltLength?: number;\r\n dsaEncoding?: 'der' | 'ieee-p1363';\r\n}\r\n\r\ninterface SignOptions {\r\n padding?: number;\r\n saltLength?: number;\r\n dsaEncoding?: 'der' | 'ieee-p1363';\r\n}\r\n\r\ninterface PreparedKey {\r\n keyObject: KeyObject;\r\n options?: SignOptions;\r\n}\r\n\r\nfunction prepareKey(key: KeyInput, isPublic: boolean): PreparedKey {\r\n // Already a KeyObject\r\n if (key instanceof KeyObject) {\r\n if (isPublic) {\r\n if (key.type === 'secret') {\r\n throw new Error('Cannot use secret key for signature verification');\r\n }\r\n } else {\r\n if (key.type !== 'private') {\r\n throw new Error('Key must be a private key for signing');\r\n }\r\n }\r\n return { keyObject: key };\r\n }\r\n\r\n // CryptoKey - extract KeyObject\r\n if (isCryptoKey(key)) {\r\n const cryptoKey = key as CryptoKey;\r\n return prepareKey(cryptoKey.keyObject, isPublic);\r\n }\r\n\r\n // Raw string or buffer - create KeyObject\r\n if (isStringOrBuffer(key)) {\r\n const isPem = typeof key === 'string' && key.includes('-----BEGIN');\r\n const format = isPem ? KFormatType.PEM : undefined;\r\n const type = isPublic ? 'public' : 'private';\r\n const keyData = toAB(key);\r\n const keyObject = KeyObject.createKeyObject(type, keyData, format);\r\n return { keyObject };\r\n }\r\n\r\n // KeyInputObject with options\r\n if (typeof key === 'object' && 'key' in key) {\r\n const keyObj = key as KeyInputObject;\r\n const {\r\n key: data,\r\n format,\r\n type,\r\n padding,\r\n saltLength,\r\n dsaEncoding,\r\n } = keyObj;\r\n\r\n // Nested KeyObject\r\n if (data instanceof KeyObject) {\r\n return {\r\n keyObject: data,\r\n options: { padding, saltLength, dsaEncoding },\r\n };\r\n }\r\n\r\n // Nested CryptoKey\r\n if (isCryptoKey(data)) {\r\n return {\r\n keyObject: (data as CryptoKey).keyObject,\r\n options: { padding, saltLength, dsaEncoding },\r\n };\r\n }\r\n\r\n if (!isStringOrBuffer(data)) {\r\n throw new Error('Invalid key data type');\r\n }\r\n\r\n // Determine format\r\n const isPem =\r\n format === 'pem' ||\r\n (typeof data === 'string' && data.includes('-----BEGIN'));\r\n const kFormat = isPem\r\n ? KFormatType.PEM\r\n : format === 'der'\r\n ? KFormatType.DER\r\n : undefined;\r\n\r\n // Determine encoding type\r\n let kType: KeyEncoding | undefined;\r\n if (type === 'pkcs8') kType = KeyEncoding.PKCS8;\r\n else if (type === 'pkcs1') kType = KeyEncoding.PKCS1;\r\n else if (type === 'sec1') kType = KeyEncoding.SEC1;\r\n else if (type === 'spki') kType = KeyEncoding.SPKI;\r\n\r\n const keyType = isPublic ? 'public' : 'private';\r\n // Always convert to ArrayBuffer to avoid Nitro bridge string truncation bug\r\n const keyData = toAB(data);\r\n const keyObject = KeyObject.createKeyObject(\r\n keyType,\r\n keyData,\r\n kFormat,\r\n kType,\r\n );\r\n\r\n return {\r\n keyObject,\r\n options: { padding, saltLength, dsaEncoding },\r\n };\r\n }\r\n\r\n throw new Error('Invalid key input');\r\n}\r\n\r\nfunction dsaEncodingToNumber(\r\n dsaEncoding?: 'der' | 'ieee-p1363',\r\n): number | undefined {\r\n if (dsaEncoding === 'der') return 0;\r\n if (dsaEncoding === 'ieee-p1363') return 1;\r\n return undefined;\r\n}\r\n\r\nexport class Sign {\r\n private handle: SignHandleSpec;\r\n\r\n constructor(algorithm: string) {\r\n this.handle = NitroModules.createHybridObject<SignHandleSpec>('SignHandle');\r\n this.handle.init(algorithm);\r\n }\r\n\r\n update(data: BinaryLike): this {\r\n const dataBuffer = toAB(data);\r\n this.handle.update(dataBuffer);\r\n return this;\r\n }\r\n\r\n sign(privateKey: KeyInput, outputEncoding?: BufferEncoding): Buffer;\r\n sign(privateKey: KeyInput, outputEncoding?: BufferEncoding): Buffer | string {\r\n if (privateKey === null || privateKey === undefined) {\r\n throw new Error('Private key is required');\r\n }\r\n\r\n const { keyObject, options } = prepareKey(privateKey, false);\r\n\r\n const signature = this.handle.sign(\r\n keyObject.handle,\r\n options?.padding,\r\n options?.saltLength,\r\n dsaEncodingToNumber(options?.dsaEncoding),\r\n );\r\n\r\n const buf = Buffer.from(signature);\r\n if (outputEncoding) {\r\n return buf.toString(outputEncoding);\r\n }\r\n return buf;\r\n }\r\n}\r\n\r\nexport class Verify {\r\n private handle: VerifyHandleSpec;\r\n\r\n constructor(algorithm: string) {\r\n this.handle =\r\n NitroModules.createHybridObject<VerifyHandleSpec>('VerifyHandle');\r\n this.handle.init(algorithm);\r\n }\r\n\r\n update(data: BinaryLike): this {\r\n const dataBuffer = toAB(data);\r\n this.handle.update(dataBuffer);\r\n return this;\r\n }\r\n\r\n verify(\r\n publicKey: KeyInput,\r\n signature: BinaryLike,\r\n signatureEncoding?: BufferEncoding,\r\n ): boolean {\r\n if (publicKey === null || publicKey === undefined) {\r\n throw new Error('Public key is required');\r\n }\r\n\r\n const { keyObject, options } = prepareKey(publicKey, true);\r\n\r\n // Convert signature to ArrayBuffer\r\n let sigBuffer: ArrayBuffer;\r\n if (signatureEncoding && typeof signature === 'string') {\r\n sigBuffer = toAB(Buffer.from(signature, signatureEncoding));\r\n } else {\r\n sigBuffer = toAB(signature);\r\n }\r\n\r\n return this.handle.verify(\r\n keyObject.handle,\r\n sigBuffer,\r\n options?.padding,\r\n options?.saltLength,\r\n dsaEncodingToNumber(options?.dsaEncoding),\r\n );\r\n }\r\n}\r\n\r\nexport function createSign(algorithm: string): Sign {\r\n return new Sign(algorithm);\r\n}\r\n\r\nexport function createVerify(algorithm: string): Verify {\r\n return new Verify(algorithm);\r\n}\r\n\r\ntype SignCallback = (err: Error | null, signature?: Buffer) => void;\r\ntype VerifyCallback = (err: Error | null, result?: boolean) => void;\r\n\r\nexport function sign(\r\n algorithm: string | null | undefined,\r\n data: BinaryLike,\r\n key: KeyInput,\r\n): Buffer;\r\nexport function sign(\r\n algorithm: string | null | undefined,\r\n data: BinaryLike,\r\n key: KeyInput,\r\n callback: SignCallback,\r\n): void;\r\nexport function sign(\r\n algorithm: string | null | undefined,\r\n data: BinaryLike,\r\n key: KeyInput,\r\n callback?: SignCallback,\r\n): Buffer | void {\r\n const doSign = (): Buffer => {\r\n if (key === null || key === undefined) {\r\n throw new Error('Private key is required');\r\n }\r\n const signer = new Sign(algorithm ?? '');\r\n signer.update(data);\r\n return signer.sign(key);\r\n };\r\n\r\n if (callback) {\r\n try {\r\n const signature = doSign();\r\n process.nextTick(callback, null, signature);\r\n } catch (err) {\r\n process.nextTick(callback, err as Error);\r\n }\r\n return;\r\n }\r\n\r\n return doSign();\r\n}\r\n\r\nexport function verify(\r\n algorithm: string | null | undefined,\r\n data: BinaryLike,\r\n key: KeyInput,\r\n signature: BinaryLike,\r\n): boolean;\r\nexport function verify(\r\n algorithm: string | null | undefined,\r\n data: BinaryLike,\r\n key: KeyInput,\r\n signature: BinaryLike,\r\n callback: VerifyCallback,\r\n): void;\r\nexport function verify(\r\n algorithm: string | null | undefined,\r\n data: BinaryLike,\r\n key: KeyInput,\r\n signature: BinaryLike,\r\n callback?: VerifyCallback,\r\n): boolean | void {\r\n const doVerify = (): boolean => {\r\n if (key === null || key === undefined) {\r\n throw new Error('Key is required');\r\n }\r\n const verifier = new Verify(algorithm ?? '');\r\n verifier.update(data);\r\n return verifier.verify(key, signature);\r\n };\r\n\r\n if (callback) {\r\n try {\r\n const result = doVerify();\r\n process.nextTick(callback, null, result);\r\n } catch (err) {\r\n process.nextTick(callback, err as Error);\r\n }\r\n return;\r\n }\r\n\r\n return doVerify();\r\n}\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeBuffer","require","_reactNativeNitroModules","_classes","_utils","_utils2","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","prepareKey","key","isPublic","KeyObject","type","Error","keyObject","isCryptoKey","cryptoKey","isStringOrBuffer","isPem","includes","format","KFormatType","PEM","undefined","keyData","toAB","createKeyObject","keyObj","data","padding","saltLength","dsaEncoding","options","kFormat","DER","kType","KeyEncoding","PKCS8","PKCS1","SEC1","SPKI","keyType","dsaEncodingToNumber","Sign","constructor","algorithm","handle","NitroModules","createHybridObject","init","update","dataBuffer","sign","privateKey","outputEncoding","signature","buf","Buffer","from","toString","exports","Verify","verify","publicKey","signatureEncoding","sigBuffer","createSign","createVerify","callback","doSign","signer","process","nextTick","err","doVerify","verifier","result"],"sources":["signVerify.ts"],"sourcesContent":["import { Buffer } from '@craftzdog/react-native-buffer';\r\nimport { NitroModules } from 'react-native-nitro-modules';\r\nimport type {\r\n SignHandle as SignHandleSpec,\r\n VerifyHandle as VerifyHandleSpec,\r\n} from '../specs/v1/sign.nitro';\r\nimport { KeyObject, CryptoKey } from './classes';\r\nimport { isCryptoKey } from './utils';\r\nimport type { BinaryLike } from '../utils';\r\nimport {\r\n binaryLikeToArrayBuffer as toAB,\r\n isStringOrBuffer,\r\n KFormatType,\r\n KeyEncoding,\r\n} from '../utils';\r\n\r\ntype KeyInput = BinaryLike | KeyObject | CryptoKey | KeyInputObject;\r\n\r\ninterface KeyInputObject {\r\n key: BinaryLike | KeyObject | CryptoKey;\r\n format?: 'pem' | 'der';\r\n type?: 'pkcs1' | 'pkcs8' | 'spki' | 'sec1';\r\n passphrase?: BinaryLike;\r\n padding?: number;\r\n saltLength?: number;\r\n dsaEncoding?: 'der' | 'ieee-p1363';\r\n}\r\n\r\ninterface SignOptions {\r\n padding?: number;\r\n saltLength?: number;\r\n dsaEncoding?: 'der' | 'ieee-p1363';\r\n}\r\n\r\ninterface PreparedKey {\r\n keyObject: KeyObject;\r\n options?: SignOptions;\r\n}\r\n\r\nfunction prepareKey(key: KeyInput, isPublic: boolean): PreparedKey {\r\n // Already a KeyObject\r\n if (key instanceof KeyObject) {\r\n if (isPublic) {\r\n if (key.type === 'secret') {\r\n throw new Error('Cannot use secret key for signature verification');\r\n }\r\n } else {\r\n if (key.type !== 'private') {\r\n throw new Error('Key must be a private key for signing');\r\n }\r\n }\r\n return { keyObject: key };\r\n }\r\n\r\n // CryptoKey - extract KeyObject\r\n if (isCryptoKey(key)) {\r\n const cryptoKey = key as CryptoKey;\r\n return prepareKey(cryptoKey.keyObject, isPublic);\r\n }\r\n\r\n // Raw string or buffer - create KeyObject\r\n if (isStringOrBuffer(key)) {\r\n const isPem = typeof key === 'string' && key.includes('-----BEGIN');\r\n const format = isPem ? KFormatType.PEM : undefined;\r\n const type = isPublic ? 'public' : 'private';\r\n const keyData = toAB(key);\r\n const keyObject = KeyObject.createKeyObject(type, keyData, format);\r\n return { keyObject };\r\n }\r\n\r\n // KeyInputObject with options\r\n if (typeof key === 'object' && 'key' in key) {\r\n const keyObj = key as KeyInputObject;\r\n const {\r\n key: data,\r\n format,\r\n type,\r\n padding,\r\n saltLength,\r\n dsaEncoding,\r\n } = keyObj;\r\n\r\n // Nested KeyObject\r\n if (data instanceof KeyObject) {\r\n return {\r\n keyObject: data,\r\n options: { padding, saltLength, dsaEncoding },\r\n };\r\n }\r\n\r\n // Nested CryptoKey\r\n if (isCryptoKey(data)) {\r\n return {\r\n keyObject: (data as CryptoKey).keyObject,\r\n options: { padding, saltLength, dsaEncoding },\r\n };\r\n }\r\n\r\n if (!isStringOrBuffer(data)) {\r\n throw new Error('Invalid key data type');\r\n }\r\n\r\n // Determine format\r\n const isPem =\r\n format === 'pem' ||\r\n (typeof data === 'string' && data.includes('-----BEGIN'));\r\n const kFormat = isPem\r\n ? KFormatType.PEM\r\n : format === 'der'\r\n ? KFormatType.DER\r\n : undefined;\r\n\r\n // Determine encoding type\r\n let kType: KeyEncoding | undefined;\r\n if (type === 'pkcs8') kType = KeyEncoding.PKCS8;\r\n else if (type === 'pkcs1') kType = KeyEncoding.PKCS1;\r\n else if (type === 'sec1') kType = KeyEncoding.SEC1;\r\n else if (type === 'spki') kType = KeyEncoding.SPKI;\r\n\r\n const keyType = isPublic ? 'public' : 'private';\r\n // Always convert to ArrayBuffer to avoid Nitro bridge string truncation bug\r\n const keyData = toAB(data);\r\n const keyObject = KeyObject.createKeyObject(\r\n keyType,\r\n keyData,\r\n kFormat,\r\n kType,\r\n );\r\n\r\n return {\r\n keyObject,\r\n options: { padding, saltLength, dsaEncoding },\r\n };\r\n }\r\n\r\n throw new Error('Invalid key input');\r\n}\r\n\r\nfunction dsaEncodingToNumber(\r\n dsaEncoding?: 'der' | 'ieee-p1363',\r\n): number | undefined {\r\n if (dsaEncoding === 'der') return 0;\r\n if (dsaEncoding === 'ieee-p1363') return 1;\r\n return undefined;\r\n}\r\n\r\nexport class Sign {\r\n private handle: SignHandleSpec;\r\n\r\n constructor(algorithm: string) {\r\n this.handle = NitroModules.createHybridObject<SignHandleSpec>('SignHandle');\r\n this.handle.init(algorithm);\r\n }\r\n\r\n update(data: BinaryLike): this {\r\n const dataBuffer = toAB(data);\r\n this.handle.update(dataBuffer);\r\n return this;\r\n }\r\n\r\n sign(privateKey: KeyInput, outputEncoding?: BufferEncoding): Buffer;\r\n sign(privateKey: KeyInput, outputEncoding?: BufferEncoding): Buffer | string {\r\n if (privateKey === null || privateKey === undefined) {\r\n throw new Error('Private key is required');\r\n }\r\n\r\n const { keyObject, options } = prepareKey(privateKey, false);\r\n\r\n const signature = this.handle.sign(\r\n keyObject.handle,\r\n options?.padding,\r\n options?.saltLength,\r\n dsaEncodingToNumber(options?.dsaEncoding),\r\n );\r\n\r\n const buf = Buffer.from(signature);\r\n if (outputEncoding) {\r\n return buf.toString(outputEncoding);\r\n }\r\n return buf;\r\n }\r\n}\r\n\r\nexport class Verify {\r\n private handle: VerifyHandleSpec;\r\n\r\n constructor(algorithm: string) {\r\n this.handle =\r\n NitroModules.createHybridObject<VerifyHandleSpec>('VerifyHandle');\r\n this.handle.init(algorithm);\r\n }\r\n\r\n update(data: BinaryLike): this {\r\n const dataBuffer = toAB(data);\r\n this.handle.update(dataBuffer);\r\n return this;\r\n }\r\n\r\n verify(\r\n publicKey: KeyInput,\r\n signature: BinaryLike,\r\n signatureEncoding?: BufferEncoding,\r\n ): boolean {\r\n if (publicKey === null || publicKey === undefined) {\r\n throw new Error('Public key is required');\r\n }\r\n\r\n const { keyObject, options } = prepareKey(publicKey, true);\r\n\r\n // Convert signature to ArrayBuffer\r\n let sigBuffer: ArrayBuffer;\r\n if (signatureEncoding && typeof signature === 'string') {\r\n sigBuffer = toAB(Buffer.from(signature, signatureEncoding));\r\n } else {\r\n sigBuffer = toAB(signature);\r\n }\r\n\r\n return this.handle.verify(\r\n keyObject.handle,\r\n sigBuffer,\r\n options?.padding,\r\n options?.saltLength,\r\n dsaEncodingToNumber(options?.dsaEncoding),\r\n );\r\n }\r\n}\r\n\r\nexport function createSign(algorithm: string): Sign {\r\n return new Sign(algorithm);\r\n}\r\n\r\nexport function createVerify(algorithm: string): Verify {\r\n return new Verify(algorithm);\r\n}\r\n\r\ntype SignCallback = (err: Error | null, signature?: Buffer) => void;\r\ntype VerifyCallback = (err: Error | null, result?: boolean) => void;\r\n\r\nexport function sign(\r\n algorithm: string | null | undefined,\r\n data: BinaryLike,\r\n key: KeyInput,\r\n): Buffer;\r\nexport function sign(\r\n algorithm: string | null | undefined,\r\n data: BinaryLike,\r\n key: KeyInput,\r\n callback: SignCallback,\r\n): void;\r\nexport function sign(\r\n algorithm: string | null | undefined,\r\n data: BinaryLike,\r\n key: KeyInput,\r\n callback?: SignCallback,\r\n): Buffer | void {\r\n const doSign = (): Buffer => {\r\n if (key === null || key === undefined) {\r\n throw new Error('Private key is required');\r\n }\r\n const signer = new Sign(algorithm ?? '');\r\n signer.update(data);\r\n return signer.sign(key);\r\n };\r\n\r\n if (callback) {\r\n try {\r\n const signature = doSign();\r\n process.nextTick(callback, null, signature);\r\n } catch (err) {\r\n process.nextTick(callback, err as Error);\r\n }\r\n return;\r\n }\r\n\r\n return doSign();\r\n}\r\n\r\nexport function verify(\r\n algorithm: string | null | undefined,\r\n data: BinaryLike,\r\n key: KeyInput,\r\n signature: BinaryLike,\r\n): boolean;\r\nexport function verify(\r\n algorithm: string | null | undefined,\r\n data: BinaryLike,\r\n key: KeyInput,\r\n signature: BinaryLike,\r\n callback: VerifyCallback,\r\n): void;\r\nexport function verify(\r\n algorithm: string | null | undefined,\r\n data: BinaryLike,\r\n key: KeyInput,\r\n signature: BinaryLike,\r\n callback?: VerifyCallback,\r\n): boolean | void {\r\n const doVerify = (): boolean => {\r\n if (key === null || key === undefined) {\r\n throw new Error('Key is required');\r\n }\r\n const verifier = new Verify(algorithm ?? '');\r\n verifier.update(data);\r\n return verifier.verify(key, signature);\r\n };\r\n\r\n if (callback) {\r\n try {\r\n const result = doVerify();\r\n process.nextTick(callback, null, result);\r\n } catch (err) {\r\n process.nextTick(callback, err as Error);\r\n }\r\n return;\r\n }\r\n\r\n return doVerify();\r\n}\r\n"],"mappings":"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","ignoreList":[]}
@@ -10,7 +10,7 @@ var _keys = require("./keys");
10
10
  var _utils = require("./utils");
11
11
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
12
12
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
13
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
13
+ function _toPrimitive(t, e) { if ("object" != typeof t || !t) return t; var r; if ("undefined" != typeof Symbol && void 0 !== (r = t[Symbol.toPrimitive])) { var i = r.call(t, e || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === e ? String : Number)(t); }
14
14
  class MlDsa {
15
15
  constructor(variant) {
16
16
  _defineProperty(this, "variant", void 0);
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeNitroModules","require","_keys","_utils","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","MlDsa","constructor","variant","native","NitroModules","createHybridObject","setVariant","generateKeyPair","KFormatType","DER","KeyEncoding","SPKI","PKCS8","generateKeyPairSync","getPublicKey","getPrivateKey","sign","message","signSync","verify","signature","verifySync","exports","mldsa_generateKeyPairWebCrypto","extractable","keyUsages","hasAnyNotIn","lazyDOMException","publicUsages","getUsagesUnion","privateUsages","length","mldsa","publicKeyData","privateKeyData","pub","KeyObject","createKeyObject","publicKey","CryptoKey","name","priv","privateKey"],"sources":["mldsa.ts"],"sourcesContent":["import { NitroModules } from 'react-native-nitro-modules';\r\nimport type { MlDsaKeyPair } from './specs/v1/mlDsaKeyPair.nitro';\r\nimport {\r\n CryptoKey,\r\n KeyObject,\r\n PublicKeyObject,\r\n PrivateKeyObject as PrivateKeyObjectClass,\r\n} from './keys';\r\nimport type { CryptoKeyPair, KeyUsage, SubtleAlgorithm } from './utils';\r\nimport {\r\n hasAnyNotIn,\r\n lazyDOMException,\r\n getUsagesUnion,\r\n KFormatType,\r\n KeyEncoding,\r\n} from './utils';\r\n\r\nexport type MlDsaVariant = 'ML-DSA-44' | 'ML-DSA-65' | 'ML-DSA-87';\r\n\r\nexport class MlDsa {\r\n variant: MlDsaVariant;\r\n native: MlDsaKeyPair;\r\n\r\n constructor(variant: MlDsaVariant) {\r\n this.variant = variant;\r\n this.native = NitroModules.createHybridObject<MlDsaKeyPair>('MlDsaKeyPair');\r\n this.native.setVariant(variant);\r\n }\r\n\r\n async generateKeyPair(): Promise<void> {\r\n await this.native.generateKeyPair(\r\n KFormatType.DER,\r\n KeyEncoding.SPKI,\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n );\r\n }\r\n\r\n generateKeyPairSync(): void {\r\n this.native.generateKeyPairSync(\r\n KFormatType.DER,\r\n KeyEncoding.SPKI,\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n );\r\n }\r\n\r\n getPublicKey(): ArrayBuffer {\r\n return this.native.getPublicKey();\r\n }\r\n\r\n getPrivateKey(): ArrayBuffer {\r\n return this.native.getPrivateKey();\r\n }\r\n\r\n async sign(message: ArrayBuffer): Promise<ArrayBuffer> {\r\n return this.native.sign(message);\r\n }\r\n\r\n signSync(message: ArrayBuffer): ArrayBuffer {\r\n return this.native.signSync(message);\r\n }\r\n\r\n async verify(signature: ArrayBuffer, message: ArrayBuffer): Promise<boolean> {\r\n return this.native.verify(signature, message);\r\n }\r\n\r\n verifySync(signature: ArrayBuffer, message: ArrayBuffer): boolean {\r\n return this.native.verifySync(signature, message);\r\n }\r\n}\r\n\r\nexport async function mldsa_generateKeyPairWebCrypto(\r\n variant: MlDsaVariant,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n): Promise<CryptoKeyPair> {\r\n if (hasAnyNotIn(keyUsages, ['sign', 'verify'])) {\r\n throw lazyDOMException(\r\n `Unsupported key usage for ${variant}`,\r\n 'SyntaxError',\r\n );\r\n }\r\n\r\n const publicUsages = getUsagesUnion(keyUsages, 'verify');\r\n const privateUsages = getUsagesUnion(keyUsages, 'sign');\r\n\r\n if (privateUsages.length === 0) {\r\n throw lazyDOMException('Usages cannot be empty', 'SyntaxError');\r\n }\r\n\r\n const mldsa = new MlDsa(variant);\r\n await mldsa.generateKeyPair();\r\n\r\n const publicKeyData = mldsa.getPublicKey();\r\n const privateKeyData = mldsa.getPrivateKey();\r\n\r\n const pub = KeyObject.createKeyObject(\r\n 'public',\r\n publicKeyData,\r\n KFormatType.DER,\r\n KeyEncoding.SPKI,\r\n ) as PublicKeyObject;\r\n const publicKey = new CryptoKey(\r\n pub,\r\n { name: variant } as SubtleAlgorithm,\r\n publicUsages,\r\n true,\r\n );\r\n\r\n const priv = KeyObject.createKeyObject(\r\n 'private',\r\n privateKeyData,\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n ) as PrivateKeyObjectClass;\r\n const privateKey = new CryptoKey(\r\n priv,\r\n { name: variant } as SubtleAlgorithm,\r\n privateUsages,\r\n extractable,\r\n );\r\n\r\n return { publicKey, privateKey };\r\n}\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeNitroModules","require","_keys","_utils","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","MlDsa","constructor","variant","native","NitroModules","createHybridObject","setVariant","generateKeyPair","KFormatType","DER","KeyEncoding","SPKI","PKCS8","generateKeyPairSync","getPublicKey","getPrivateKey","sign","message","signSync","verify","signature","verifySync","exports","mldsa_generateKeyPairWebCrypto","extractable","keyUsages","hasAnyNotIn","lazyDOMException","publicUsages","getUsagesUnion","privateUsages","length","mldsa","publicKeyData","privateKeyData","pub","KeyObject","createKeyObject","publicKey","CryptoKey","name","priv","privateKey"],"sources":["mldsa.ts"],"sourcesContent":["import { NitroModules } from 'react-native-nitro-modules';\r\nimport type { MlDsaKeyPair } from './specs/v1/mlDsaKeyPair.nitro';\r\nimport {\r\n CryptoKey,\r\n KeyObject,\r\n PublicKeyObject,\r\n PrivateKeyObject as PrivateKeyObjectClass,\r\n} from './keys';\r\nimport type { CryptoKeyPair, KeyUsage, SubtleAlgorithm } from './utils';\r\nimport {\r\n hasAnyNotIn,\r\n lazyDOMException,\r\n getUsagesUnion,\r\n KFormatType,\r\n KeyEncoding,\r\n} from './utils';\r\n\r\nexport type MlDsaVariant = 'ML-DSA-44' | 'ML-DSA-65' | 'ML-DSA-87';\r\n\r\nexport class MlDsa {\r\n variant: MlDsaVariant;\r\n native: MlDsaKeyPair;\r\n\r\n constructor(variant: MlDsaVariant) {\r\n this.variant = variant;\r\n this.native = NitroModules.createHybridObject<MlDsaKeyPair>('MlDsaKeyPair');\r\n this.native.setVariant(variant);\r\n }\r\n\r\n async generateKeyPair(): Promise<void> {\r\n await this.native.generateKeyPair(\r\n KFormatType.DER,\r\n KeyEncoding.SPKI,\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n );\r\n }\r\n\r\n generateKeyPairSync(): void {\r\n this.native.generateKeyPairSync(\r\n KFormatType.DER,\r\n KeyEncoding.SPKI,\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n );\r\n }\r\n\r\n getPublicKey(): ArrayBuffer {\r\n return this.native.getPublicKey();\r\n }\r\n\r\n getPrivateKey(): ArrayBuffer {\r\n return this.native.getPrivateKey();\r\n }\r\n\r\n async sign(message: ArrayBuffer): Promise<ArrayBuffer> {\r\n return this.native.sign(message);\r\n }\r\n\r\n signSync(message: ArrayBuffer): ArrayBuffer {\r\n return this.native.signSync(message);\r\n }\r\n\r\n async verify(signature: ArrayBuffer, message: ArrayBuffer): Promise<boolean> {\r\n return this.native.verify(signature, message);\r\n }\r\n\r\n verifySync(signature: ArrayBuffer, message: ArrayBuffer): boolean {\r\n return this.native.verifySync(signature, message);\r\n }\r\n}\r\n\r\nexport async function mldsa_generateKeyPairWebCrypto(\r\n variant: MlDsaVariant,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n): Promise<CryptoKeyPair> {\r\n if (hasAnyNotIn(keyUsages, ['sign', 'verify'])) {\r\n throw lazyDOMException(\r\n `Unsupported key usage for ${variant}`,\r\n 'SyntaxError',\r\n );\r\n }\r\n\r\n const publicUsages = getUsagesUnion(keyUsages, 'verify');\r\n const privateUsages = getUsagesUnion(keyUsages, 'sign');\r\n\r\n if (privateUsages.length === 0) {\r\n throw lazyDOMException('Usages cannot be empty', 'SyntaxError');\r\n }\r\n\r\n const mldsa = new MlDsa(variant);\r\n await mldsa.generateKeyPair();\r\n\r\n const publicKeyData = mldsa.getPublicKey();\r\n const privateKeyData = mldsa.getPrivateKey();\r\n\r\n const pub = KeyObject.createKeyObject(\r\n 'public',\r\n publicKeyData,\r\n KFormatType.DER,\r\n KeyEncoding.SPKI,\r\n ) as PublicKeyObject;\r\n const publicKey = new CryptoKey(\r\n pub,\r\n { name: variant } as SubtleAlgorithm,\r\n publicUsages,\r\n true,\r\n );\r\n\r\n const priv = KeyObject.createKeyObject(\r\n 'private',\r\n privateKeyData,\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n ) as PrivateKeyObjectClass;\r\n const privateKey = new CryptoKey(\r\n priv,\r\n { name: variant } as SubtleAlgorithm,\r\n privateUsages,\r\n extractable,\r\n );\r\n\r\n return { publicKey, privateKey };\r\n}\r\n"],"mappings":"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","ignoreList":[]}
@@ -12,7 +12,7 @@ var _keys = require("./keys");
12
12
  var _utils = require("./utils");
13
13
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
14
14
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
15
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
15
+ function _toPrimitive(t, e) { if ("object" != typeof t || !t) return t; var r; if ("undefined" != typeof Symbol && void 0 !== (r = t[Symbol.toPrimitive])) { var i = r.call(t, e || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === e ? String : Number)(t); }
16
16
  const ML_KEM_VARIANTS = {
17
17
  'ml-kem-512': 'ML-KEM-512',
18
18
  'ml-kem-768': 'ML-KEM-768',
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeNitroModules","require","_keys","_utils","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","ML_KEM_VARIANTS","isMlKemKeyType","type","unpackEncapsulateResult","packed","view","DataView","ciphertextLen","getUint32","sharedKeyLen","headerSize","ciphertext","slice","sharedKey","MlKem","constructor","variant","native","NitroModules","createHybridObject","setVariant","generateKeyPair","KFormatType","DER","KeyEncoding","SPKI","PKCS8","generateKeyPairSync","getPublicKey","getPrivateKey","setPublicKey","keyData","format","setPrivateKey","encapsulate","encapsulateSync","decapsulate","decapsulateSync","exports","prepareKey","key","isPublic","KeyObject","Error","keyObject","isCryptoKey","cryptoKey","isStringOrBuffer","isPem","includes","PEM","undefined","keyType","toAB","createKeyObject","keyObj","data","kFormat","kType","PKCS1","SEC1","getVariantFromKey","handle","getAsymmetricKeyType","callback","doEncapsulate","mlkem","exportKey","result","process","nextTick","err","doDecapsulate","ciphertextBuffer","mlkem_generateKeyPairWebCrypto","extractable","keyUsages","hasAnyNotIn","lazyDOMException","publicUsages","getUsagesUnion","privateUsages","length","publicKeyData","privateKeyData","pub","publicKey","CryptoKey","name","priv","privateKey"],"sources":["mlkem.ts"],"sourcesContent":["import { NitroModules } from 'react-native-nitro-modules';\r\nimport type { MlKemKeyPair } from './specs/v1/mlKemKeyPair.nitro';\r\nimport {\r\n CryptoKey,\r\n KeyObject,\r\n PublicKeyObject,\r\n PrivateKeyObject,\r\n isCryptoKey,\r\n} from './keys';\r\nimport type {\r\n CryptoKeyPair,\r\n KeyUsage,\r\n SubtleAlgorithm,\r\n EncapsulateResult,\r\n BinaryLike,\r\n} from './utils';\r\nimport {\r\n hasAnyNotIn,\r\n lazyDOMException,\r\n getUsagesUnion,\r\n KFormatType,\r\n KeyEncoding,\r\n isStringOrBuffer,\r\n binaryLikeToArrayBuffer as toAB,\r\n} from './utils';\r\n\r\nexport type MlKemVariant = 'ML-KEM-512' | 'ML-KEM-768' | 'ML-KEM-1024';\r\n\r\ntype MlKemKeyType = 'ml-kem-512' | 'ml-kem-768' | 'ml-kem-1024';\r\n\r\ntype KeyInput = BinaryLike | KeyObject | CryptoKey | KeyInputObject;\r\n\r\nexport interface KeyInputObject {\r\n key: BinaryLike | KeyObject | CryptoKey;\r\n format?: 'pem' | 'der';\r\n type?: 'pkcs1' | 'pkcs8' | 'spki' | 'sec1';\r\n}\r\n\r\nconst ML_KEM_VARIANTS: Record<MlKemKeyType, MlKemVariant> = {\r\n 'ml-kem-512': 'ML-KEM-512',\r\n 'ml-kem-768': 'ML-KEM-768',\r\n 'ml-kem-1024': 'ML-KEM-1024',\r\n};\r\n\r\nfunction isMlKemKeyType(type: string): type is MlKemKeyType {\r\n return type in ML_KEM_VARIANTS;\r\n}\r\n\r\nfunction unpackEncapsulateResult(packed: ArrayBuffer): EncapsulateResult {\r\n const view = new DataView(packed);\r\n const ciphertextLen = view.getUint32(0, true);\r\n const sharedKeyLen = view.getUint32(4, true);\r\n const headerSize = 8;\r\n const ciphertext = packed.slice(headerSize, headerSize + ciphertextLen);\r\n const sharedKey = packed.slice(\r\n headerSize + ciphertextLen,\r\n headerSize + ciphertextLen + sharedKeyLen,\r\n );\r\n return { ciphertext, sharedKey };\r\n}\r\n\r\nexport class MlKem {\r\n variant: MlKemVariant;\r\n native: MlKemKeyPair;\r\n\r\n constructor(variant: MlKemVariant) {\r\n this.variant = variant;\r\n this.native = NitroModules.createHybridObject<MlKemKeyPair>('MlKemKeyPair');\r\n this.native.setVariant(variant);\r\n }\r\n\r\n async generateKeyPair(): Promise<void> {\r\n await this.native.generateKeyPair(\r\n KFormatType.DER,\r\n KeyEncoding.SPKI,\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n );\r\n }\r\n\r\n generateKeyPairSync(): void {\r\n this.native.generateKeyPairSync(\r\n KFormatType.DER,\r\n KeyEncoding.SPKI,\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n );\r\n }\r\n\r\n getPublicKey(): ArrayBuffer {\r\n return this.native.getPublicKey();\r\n }\r\n\r\n getPrivateKey(): ArrayBuffer {\r\n return this.native.getPrivateKey();\r\n }\r\n\r\n setPublicKey(keyData: ArrayBuffer, format: number, type: number): void {\r\n this.native.setPublicKey(keyData, format, type);\r\n }\r\n\r\n setPrivateKey(keyData: ArrayBuffer, format: number, type: number): void {\r\n this.native.setPrivateKey(keyData, format, type);\r\n }\r\n\r\n async encapsulate(): Promise<EncapsulateResult> {\r\n const packed = await this.native.encapsulate();\r\n return unpackEncapsulateResult(packed);\r\n }\r\n\r\n encapsulateSync(): EncapsulateResult {\r\n const packed = this.native.encapsulateSync();\r\n return unpackEncapsulateResult(packed);\r\n }\r\n\r\n async decapsulate(ciphertext: ArrayBuffer): Promise<ArrayBuffer> {\r\n return this.native.decapsulate(ciphertext);\r\n }\r\n\r\n decapsulateSync(ciphertext: ArrayBuffer): ArrayBuffer {\r\n return this.native.decapsulateSync(ciphertext);\r\n }\r\n}\r\n\r\nfunction prepareKey(\r\n key: KeyInput,\r\n isPublic: boolean,\r\n): { keyObject: KeyObject } {\r\n if (key instanceof KeyObject) {\r\n if (isPublic) {\r\n if (key.type === 'secret') {\r\n throw new Error('Cannot use secret key for encapsulation');\r\n }\r\n } else {\r\n if (key.type !== 'private') {\r\n throw new Error('Key must be a private key for decapsulation');\r\n }\r\n }\r\n return { keyObject: key };\r\n }\r\n\r\n if (isCryptoKey(key)) {\r\n const cryptoKey = key as CryptoKey;\r\n return prepareKey(cryptoKey.keyObject, isPublic);\r\n }\r\n\r\n if (isStringOrBuffer(key)) {\r\n const isPem = typeof key === 'string' && key.includes('-----BEGIN');\r\n const format = isPem ? KFormatType.PEM : undefined;\r\n const keyType = isPublic ? 'public' : 'private';\r\n const keyData = toAB(key);\r\n const keyObject = KeyObject.createKeyObject(keyType, keyData, format);\r\n return { keyObject };\r\n }\r\n\r\n if (typeof key === 'object' && 'key' in key) {\r\n const keyObj = key as KeyInputObject;\r\n const { key: data, format, type } = keyObj;\r\n\r\n if (data instanceof KeyObject) {\r\n return { keyObject: data };\r\n }\r\n\r\n if (isCryptoKey(data)) {\r\n return { keyObject: (data as CryptoKey).keyObject };\r\n }\r\n\r\n if (!isStringOrBuffer(data)) {\r\n throw new Error('Invalid key data type');\r\n }\r\n\r\n const isPem =\r\n format === 'pem' ||\r\n (typeof data === 'string' && data.includes('-----BEGIN'));\r\n const kFormat = isPem\r\n ? KFormatType.PEM\r\n : format === 'der'\r\n ? KFormatType.DER\r\n : undefined;\r\n\r\n let kType: KeyEncoding | undefined;\r\n if (type === 'pkcs8') kType = KeyEncoding.PKCS8;\r\n else if (type === 'pkcs1') kType = KeyEncoding.PKCS1;\r\n else if (type === 'sec1') kType = KeyEncoding.SEC1;\r\n else if (type === 'spki') kType = KeyEncoding.SPKI;\r\n\r\n const keyType = isPublic ? 'public' : 'private';\r\n const keyData = toAB(data);\r\n const keyObject = KeyObject.createKeyObject(\r\n keyType,\r\n keyData,\r\n kFormat,\r\n kType,\r\n );\r\n return { keyObject };\r\n }\r\n\r\n throw new Error('Invalid key input');\r\n}\r\n\r\nfunction getVariantFromKey(keyObject: KeyObject): MlKemVariant {\r\n const keyType = keyObject.handle.getAsymmetricKeyType();\r\n if (!isMlKemKeyType(keyType)) {\r\n throw new Error(\r\n `Key is not an ML-KEM key. Got asymmetricKeyType: ${keyType}`,\r\n );\r\n }\r\n return ML_KEM_VARIANTS[keyType];\r\n}\r\n\r\nexport function encapsulate(\r\n key: KeyInput,\r\n callback?: (err: Error | null, result?: EncapsulateResult) => void,\r\n): EncapsulateResult | void {\r\n const doEncapsulate = (): EncapsulateResult => {\r\n if (key === null || key === undefined) {\r\n throw new Error('Public key is required for encapsulation');\r\n }\r\n\r\n const { keyObject } = prepareKey(key, true);\r\n const variant = getVariantFromKey(keyObject);\r\n const mlkem = new MlKem(variant);\r\n\r\n const keyData = keyObject.handle.exportKey(\r\n KFormatType.DER,\r\n KeyEncoding.SPKI,\r\n );\r\n mlkem.setPublicKey(keyData, KFormatType.DER, KeyEncoding.SPKI);\r\n\r\n return mlkem.encapsulateSync();\r\n };\r\n\r\n if (callback) {\r\n try {\r\n const result = doEncapsulate();\r\n process.nextTick(callback, null, result);\r\n } catch (err) {\r\n process.nextTick(callback, err as Error);\r\n }\r\n return;\r\n }\r\n\r\n return doEncapsulate();\r\n}\r\n\r\nexport function decapsulate(\r\n key: KeyInput,\r\n ciphertext: BinaryLike,\r\n callback?: (err: Error | null, result?: ArrayBuffer) => void,\r\n): ArrayBuffer | void {\r\n const doDecapsulate = (): ArrayBuffer => {\r\n if (key === null || key === undefined) {\r\n throw new Error('Private key is required for decapsulation');\r\n }\r\n\r\n const { keyObject } = prepareKey(key, false);\r\n const variant = getVariantFromKey(keyObject);\r\n const mlkem = new MlKem(variant);\r\n\r\n const keyData = keyObject.handle.exportKey(\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n );\r\n mlkem.setPrivateKey(keyData, KFormatType.DER, KeyEncoding.PKCS8);\r\n\r\n const ciphertextBuffer = toAB(ciphertext) as ArrayBuffer;\r\n return mlkem.decapsulateSync(ciphertextBuffer);\r\n };\r\n\r\n if (callback) {\r\n try {\r\n const result = doDecapsulate();\r\n process.nextTick(callback, null, result);\r\n } catch (err) {\r\n process.nextTick(callback, err as Error);\r\n }\r\n return;\r\n }\r\n\r\n return doDecapsulate();\r\n}\r\n\r\nexport async function mlkem_generateKeyPairWebCrypto(\r\n variant: MlKemVariant,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n): Promise<CryptoKeyPair> {\r\n if (\r\n hasAnyNotIn(keyUsages, [\r\n 'encapsulateBits',\r\n 'encapsulateKey',\r\n 'decapsulateBits',\r\n 'decapsulateKey',\r\n ])\r\n ) {\r\n throw lazyDOMException(\r\n `Unsupported key usage for ${variant}`,\r\n 'SyntaxError',\r\n );\r\n }\r\n\r\n const publicUsages = getUsagesUnion(\r\n keyUsages,\r\n 'encapsulateBits',\r\n 'encapsulateKey',\r\n );\r\n const privateUsages = getUsagesUnion(\r\n keyUsages,\r\n 'decapsulateBits',\r\n 'decapsulateKey',\r\n );\r\n\r\n if (privateUsages.length === 0) {\r\n throw lazyDOMException('Usages cannot be empty', 'SyntaxError');\r\n }\r\n\r\n const mlkem = new MlKem(variant);\r\n await mlkem.generateKeyPair();\r\n\r\n const publicKeyData = mlkem.getPublicKey();\r\n const privateKeyData = mlkem.getPrivateKey();\r\n\r\n const pub = KeyObject.createKeyObject(\r\n 'public',\r\n publicKeyData,\r\n KFormatType.DER,\r\n KeyEncoding.SPKI,\r\n ) as PublicKeyObject;\r\n const publicKey = new CryptoKey(\r\n pub,\r\n { name: variant } as SubtleAlgorithm,\r\n publicUsages,\r\n true,\r\n );\r\n\r\n const priv = KeyObject.createKeyObject(\r\n 'private',\r\n privateKeyData,\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n ) as PrivateKeyObject;\r\n const privateKey = new CryptoKey(\r\n priv,\r\n { name: variant } as SubtleAlgorithm,\r\n privateUsages,\r\n extractable,\r\n );\r\n\r\n return { publicKey, privateKey };\r\n}\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeNitroModules","require","_keys","_utils","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","ML_KEM_VARIANTS","isMlKemKeyType","type","unpackEncapsulateResult","packed","view","DataView","ciphertextLen","getUint32","sharedKeyLen","headerSize","ciphertext","slice","sharedKey","MlKem","constructor","variant","native","NitroModules","createHybridObject","setVariant","generateKeyPair","KFormatType","DER","KeyEncoding","SPKI","PKCS8","generateKeyPairSync","getPublicKey","getPrivateKey","setPublicKey","keyData","format","setPrivateKey","encapsulate","encapsulateSync","decapsulate","decapsulateSync","exports","prepareKey","key","isPublic","KeyObject","Error","keyObject","isCryptoKey","cryptoKey","isStringOrBuffer","isPem","includes","PEM","undefined","keyType","toAB","createKeyObject","keyObj","data","kFormat","kType","PKCS1","SEC1","getVariantFromKey","handle","getAsymmetricKeyType","callback","doEncapsulate","mlkem","exportKey","result","process","nextTick","err","doDecapsulate","ciphertextBuffer","mlkem_generateKeyPairWebCrypto","extractable","keyUsages","hasAnyNotIn","lazyDOMException","publicUsages","getUsagesUnion","privateUsages","length","publicKeyData","privateKeyData","pub","publicKey","CryptoKey","name","priv","privateKey"],"sources":["mlkem.ts"],"sourcesContent":["import { NitroModules } from 'react-native-nitro-modules';\r\nimport type { MlKemKeyPair } from './specs/v1/mlKemKeyPair.nitro';\r\nimport {\r\n CryptoKey,\r\n KeyObject,\r\n PublicKeyObject,\r\n PrivateKeyObject,\r\n isCryptoKey,\r\n} from './keys';\r\nimport type {\r\n CryptoKeyPair,\r\n KeyUsage,\r\n SubtleAlgorithm,\r\n EncapsulateResult,\r\n BinaryLike,\r\n} from './utils';\r\nimport {\r\n hasAnyNotIn,\r\n lazyDOMException,\r\n getUsagesUnion,\r\n KFormatType,\r\n KeyEncoding,\r\n isStringOrBuffer,\r\n binaryLikeToArrayBuffer as toAB,\r\n} from './utils';\r\n\r\nexport type MlKemVariant = 'ML-KEM-512' | 'ML-KEM-768' | 'ML-KEM-1024';\r\n\r\ntype MlKemKeyType = 'ml-kem-512' | 'ml-kem-768' | 'ml-kem-1024';\r\n\r\ntype KeyInput = BinaryLike | KeyObject | CryptoKey | KeyInputObject;\r\n\r\nexport interface KeyInputObject {\r\n key: BinaryLike | KeyObject | CryptoKey;\r\n format?: 'pem' | 'der';\r\n type?: 'pkcs1' | 'pkcs8' | 'spki' | 'sec1';\r\n}\r\n\r\nconst ML_KEM_VARIANTS: Record<MlKemKeyType, MlKemVariant> = {\r\n 'ml-kem-512': 'ML-KEM-512',\r\n 'ml-kem-768': 'ML-KEM-768',\r\n 'ml-kem-1024': 'ML-KEM-1024',\r\n};\r\n\r\nfunction isMlKemKeyType(type: string): type is MlKemKeyType {\r\n return type in ML_KEM_VARIANTS;\r\n}\r\n\r\nfunction unpackEncapsulateResult(packed: ArrayBuffer): EncapsulateResult {\r\n const view = new DataView(packed);\r\n const ciphertextLen = view.getUint32(0, true);\r\n const sharedKeyLen = view.getUint32(4, true);\r\n const headerSize = 8;\r\n const ciphertext = packed.slice(headerSize, headerSize + ciphertextLen);\r\n const sharedKey = packed.slice(\r\n headerSize + ciphertextLen,\r\n headerSize + ciphertextLen + sharedKeyLen,\r\n );\r\n return { ciphertext, sharedKey };\r\n}\r\n\r\nexport class MlKem {\r\n variant: MlKemVariant;\r\n native: MlKemKeyPair;\r\n\r\n constructor(variant: MlKemVariant) {\r\n this.variant = variant;\r\n this.native = NitroModules.createHybridObject<MlKemKeyPair>('MlKemKeyPair');\r\n this.native.setVariant(variant);\r\n }\r\n\r\n async generateKeyPair(): Promise<void> {\r\n await this.native.generateKeyPair(\r\n KFormatType.DER,\r\n KeyEncoding.SPKI,\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n );\r\n }\r\n\r\n generateKeyPairSync(): void {\r\n this.native.generateKeyPairSync(\r\n KFormatType.DER,\r\n KeyEncoding.SPKI,\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n );\r\n }\r\n\r\n getPublicKey(): ArrayBuffer {\r\n return this.native.getPublicKey();\r\n }\r\n\r\n getPrivateKey(): ArrayBuffer {\r\n return this.native.getPrivateKey();\r\n }\r\n\r\n setPublicKey(keyData: ArrayBuffer, format: number, type: number): void {\r\n this.native.setPublicKey(keyData, format, type);\r\n }\r\n\r\n setPrivateKey(keyData: ArrayBuffer, format: number, type: number): void {\r\n this.native.setPrivateKey(keyData, format, type);\r\n }\r\n\r\n async encapsulate(): Promise<EncapsulateResult> {\r\n const packed = await this.native.encapsulate();\r\n return unpackEncapsulateResult(packed);\r\n }\r\n\r\n encapsulateSync(): EncapsulateResult {\r\n const packed = this.native.encapsulateSync();\r\n return unpackEncapsulateResult(packed);\r\n }\r\n\r\n async decapsulate(ciphertext: ArrayBuffer): Promise<ArrayBuffer> {\r\n return this.native.decapsulate(ciphertext);\r\n }\r\n\r\n decapsulateSync(ciphertext: ArrayBuffer): ArrayBuffer {\r\n return this.native.decapsulateSync(ciphertext);\r\n }\r\n}\r\n\r\nfunction prepareKey(\r\n key: KeyInput,\r\n isPublic: boolean,\r\n): { keyObject: KeyObject } {\r\n if (key instanceof KeyObject) {\r\n if (isPublic) {\r\n if (key.type === 'secret') {\r\n throw new Error('Cannot use secret key for encapsulation');\r\n }\r\n } else {\r\n if (key.type !== 'private') {\r\n throw new Error('Key must be a private key for decapsulation');\r\n }\r\n }\r\n return { keyObject: key };\r\n }\r\n\r\n if (isCryptoKey(key)) {\r\n const cryptoKey = key as CryptoKey;\r\n return prepareKey(cryptoKey.keyObject, isPublic);\r\n }\r\n\r\n if (isStringOrBuffer(key)) {\r\n const isPem = typeof key === 'string' && key.includes('-----BEGIN');\r\n const format = isPem ? KFormatType.PEM : undefined;\r\n const keyType = isPublic ? 'public' : 'private';\r\n const keyData = toAB(key);\r\n const keyObject = KeyObject.createKeyObject(keyType, keyData, format);\r\n return { keyObject };\r\n }\r\n\r\n if (typeof key === 'object' && 'key' in key) {\r\n const keyObj = key as KeyInputObject;\r\n const { key: data, format, type } = keyObj;\r\n\r\n if (data instanceof KeyObject) {\r\n return { keyObject: data };\r\n }\r\n\r\n if (isCryptoKey(data)) {\r\n return { keyObject: (data as CryptoKey).keyObject };\r\n }\r\n\r\n if (!isStringOrBuffer(data)) {\r\n throw new Error('Invalid key data type');\r\n }\r\n\r\n const isPem =\r\n format === 'pem' ||\r\n (typeof data === 'string' && data.includes('-----BEGIN'));\r\n const kFormat = isPem\r\n ? KFormatType.PEM\r\n : format === 'der'\r\n ? KFormatType.DER\r\n : undefined;\r\n\r\n let kType: KeyEncoding | undefined;\r\n if (type === 'pkcs8') kType = KeyEncoding.PKCS8;\r\n else if (type === 'pkcs1') kType = KeyEncoding.PKCS1;\r\n else if (type === 'sec1') kType = KeyEncoding.SEC1;\r\n else if (type === 'spki') kType = KeyEncoding.SPKI;\r\n\r\n const keyType = isPublic ? 'public' : 'private';\r\n const keyData = toAB(data);\r\n const keyObject = KeyObject.createKeyObject(\r\n keyType,\r\n keyData,\r\n kFormat,\r\n kType,\r\n );\r\n return { keyObject };\r\n }\r\n\r\n throw new Error('Invalid key input');\r\n}\r\n\r\nfunction getVariantFromKey(keyObject: KeyObject): MlKemVariant {\r\n const keyType = keyObject.handle.getAsymmetricKeyType();\r\n if (!isMlKemKeyType(keyType)) {\r\n throw new Error(\r\n `Key is not an ML-KEM key. Got asymmetricKeyType: ${keyType}`,\r\n );\r\n }\r\n return ML_KEM_VARIANTS[keyType];\r\n}\r\n\r\nexport function encapsulate(\r\n key: KeyInput,\r\n callback?: (err: Error | null, result?: EncapsulateResult) => void,\r\n): EncapsulateResult | void {\r\n const doEncapsulate = (): EncapsulateResult => {\r\n if (key === null || key === undefined) {\r\n throw new Error('Public key is required for encapsulation');\r\n }\r\n\r\n const { keyObject } = prepareKey(key, true);\r\n const variant = getVariantFromKey(keyObject);\r\n const mlkem = new MlKem(variant);\r\n\r\n const keyData = keyObject.handle.exportKey(\r\n KFormatType.DER,\r\n KeyEncoding.SPKI,\r\n );\r\n mlkem.setPublicKey(keyData, KFormatType.DER, KeyEncoding.SPKI);\r\n\r\n return mlkem.encapsulateSync();\r\n };\r\n\r\n if (callback) {\r\n try {\r\n const result = doEncapsulate();\r\n process.nextTick(callback, null, result);\r\n } catch (err) {\r\n process.nextTick(callback, err as Error);\r\n }\r\n return;\r\n }\r\n\r\n return doEncapsulate();\r\n}\r\n\r\nexport function decapsulate(\r\n key: KeyInput,\r\n ciphertext: BinaryLike,\r\n callback?: (err: Error | null, result?: ArrayBuffer) => void,\r\n): ArrayBuffer | void {\r\n const doDecapsulate = (): ArrayBuffer => {\r\n if (key === null || key === undefined) {\r\n throw new Error('Private key is required for decapsulation');\r\n }\r\n\r\n const { keyObject } = prepareKey(key, false);\r\n const variant = getVariantFromKey(keyObject);\r\n const mlkem = new MlKem(variant);\r\n\r\n const keyData = keyObject.handle.exportKey(\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n );\r\n mlkem.setPrivateKey(keyData, KFormatType.DER, KeyEncoding.PKCS8);\r\n\r\n const ciphertextBuffer = toAB(ciphertext) as ArrayBuffer;\r\n return mlkem.decapsulateSync(ciphertextBuffer);\r\n };\r\n\r\n if (callback) {\r\n try {\r\n const result = doDecapsulate();\r\n process.nextTick(callback, null, result);\r\n } catch (err) {\r\n process.nextTick(callback, err as Error);\r\n }\r\n return;\r\n }\r\n\r\n return doDecapsulate();\r\n}\r\n\r\nexport async function mlkem_generateKeyPairWebCrypto(\r\n variant: MlKemVariant,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n): Promise<CryptoKeyPair> {\r\n if (\r\n hasAnyNotIn(keyUsages, [\r\n 'encapsulateBits',\r\n 'encapsulateKey',\r\n 'decapsulateBits',\r\n 'decapsulateKey',\r\n ])\r\n ) {\r\n throw lazyDOMException(\r\n `Unsupported key usage for ${variant}`,\r\n 'SyntaxError',\r\n );\r\n }\r\n\r\n const publicUsages = getUsagesUnion(\r\n keyUsages,\r\n 'encapsulateBits',\r\n 'encapsulateKey',\r\n );\r\n const privateUsages = getUsagesUnion(\r\n keyUsages,\r\n 'decapsulateBits',\r\n 'decapsulateKey',\r\n );\r\n\r\n if (privateUsages.length === 0) {\r\n throw lazyDOMException('Usages cannot be empty', 'SyntaxError');\r\n }\r\n\r\n const mlkem = new MlKem(variant);\r\n await mlkem.generateKeyPair();\r\n\r\n const publicKeyData = mlkem.getPublicKey();\r\n const privateKeyData = mlkem.getPrivateKey();\r\n\r\n const pub = KeyObject.createKeyObject(\r\n 'public',\r\n publicKeyData,\r\n KFormatType.DER,\r\n KeyEncoding.SPKI,\r\n ) as PublicKeyObject;\r\n const publicKey = new CryptoKey(\r\n pub,\r\n { name: variant } as SubtleAlgorithm,\r\n publicUsages,\r\n true,\r\n );\r\n\r\n const priv = KeyObject.createKeyObject(\r\n 'private',\r\n privateKeyData,\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n ) as PrivateKeyObject;\r\n const privateKey = new CryptoKey(\r\n priv,\r\n { name: variant } as SubtleAlgorithm,\r\n privateUsages,\r\n extractable,\r\n );\r\n\r\n return { publicKey, privateKey };\r\n}\r\n"],"mappings":"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","ignoreList":[]}
@@ -13,7 +13,7 @@ var _classes = require("./keys/classes");
13
13
  var _utils = require("./utils");
14
14
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
15
15
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
16
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
16
+ function _toPrimitive(t, e) { if ("object" != typeof t || !t) return t; var r; if ("undefined" != typeof Symbol && void 0 !== (r = t[Symbol.toPrimitive])) { var i = r.call(t, e || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === e ? String : Number)(t); }
17
17
  class Rsa {
18
18
  constructor(modulusLength, publicExponent, hashAlgorithm) {
19
19
  _defineProperty(this, "native", void 0);
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeNitroModules","require","_reactNativeBuffer","_classes","_utils","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","Rsa","constructor","modulusLength","publicExponent","hashAlgorithm","native","NitroModules","createHybridObject","setModulusLength","setPublicExponent","buffer","slice","byteOffset","byteLength","setHashAlgorithm","generateKeyPair","publicKey","getPublicKey","privateKey","getPrivateKey","generateKeyPairSync","exports","rsa_generateKeyPair","algorithm","extractable","keyUsages","name","hash","lazyDOMException","length","hashName","normalizedHash","normalizeHashName","hasAnyNotIn","publicUsages","privateUsages","getUsagesUnion","rsa","keyAlgorithm","publicKeyData","pub","KeyObject","createKeyObject","CryptoKey","privateKeyData","priv","rsa_prepareKeyGenParams","_type","options","Error","pubExp","pubExpBytes","Uint8Array","rsa_formatKeyPairOutput","encoding","publicFormat","publicType","privateFormat","privateType","cipher","passphrase","format","KFormatType","PEM","DER","keyEncoding","KeyEncoding","SPKI","PKCS1","exported","handle","exportKey","Buffer","from","toString","PKCS8","rsa_generateKeyPairNode","type","rsa_generateKeyPairNodeSync"],"sources":["rsa.ts"],"sourcesContent":["import { NitroModules } from 'react-native-nitro-modules';\r\nimport { Buffer } from '@craftzdog/react-native-buffer';\r\nimport {\r\n CryptoKey,\r\n KeyObject,\r\n PrivateKeyObject,\r\n PublicKeyObject,\r\n} from './keys/classes';\r\nimport {\r\n getUsagesUnion,\r\n hasAnyNotIn,\r\n lazyDOMException,\r\n normalizeHashName,\r\n KFormatType,\r\n KeyEncoding,\r\n} from './utils';\r\nimport type {\r\n CryptoKeyPair,\r\n KeyUsage,\r\n RsaHashedKeyGenParams,\r\n SubtleAlgorithm,\r\n GenerateKeyPairOptions,\r\n KeyPairGenConfig,\r\n} from './utils';\r\nimport type { RsaKeyPair } from './specs/v1/rsaKeyPair.nitro';\r\n\r\nexport class Rsa {\r\n native: RsaKeyPair;\r\n\r\n constructor(\r\n modulusLength: number,\r\n publicExponent: Uint8Array,\r\n hashAlgorithm: string,\r\n ) {\r\n this.native = NitroModules.createHybridObject<RsaKeyPair>('RsaKeyPair');\r\n this.native.setModulusLength(modulusLength);\r\n this.native.setPublicExponent(\r\n publicExponent.buffer.slice(\r\n publicExponent.byteOffset,\r\n publicExponent.byteOffset + publicExponent.byteLength,\r\n ) as ArrayBuffer,\r\n );\r\n this.native.setHashAlgorithm(hashAlgorithm);\r\n }\r\n\r\n async generateKeyPair(): Promise<CryptoKeyPair> {\r\n await this.native.generateKeyPair();\r\n return {\r\n publicKey: this.native.getPublicKey(),\r\n privateKey: this.native.getPrivateKey(),\r\n };\r\n }\r\n\r\n generateKeyPairSync(): CryptoKeyPair {\r\n this.native.generateKeyPairSync();\r\n return {\r\n publicKey: this.native.getPublicKey(),\r\n privateKey: this.native.getPrivateKey(),\r\n };\r\n }\r\n}\r\n\r\n// Node API\r\nexport async function rsa_generateKeyPair(\r\n algorithm: SubtleAlgorithm,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n): Promise<CryptoKeyPair> {\r\n const { name, modulusLength, publicExponent, hash } =\r\n algorithm as RsaHashedKeyGenParams;\r\n\r\n // Validate parameters first\r\n if (!modulusLength || modulusLength < 256) {\r\n throw lazyDOMException('Invalid key length', 'OperationError');\r\n }\r\n\r\n if (!publicExponent || publicExponent.length === 0) {\r\n throw lazyDOMException('Invalid public exponent', 'OperationError');\r\n }\r\n\r\n // Validate hash algorithm using existing validation function\r\n let hashName: string;\r\n try {\r\n const normalizedHash = normalizeHashName(hash);\r\n hashName = typeof hash === 'string' ? hash : hash?.name || normalizedHash;\r\n } catch {\r\n throw lazyDOMException('Invalid Hash Algorithm', 'NotSupportedError');\r\n }\r\n\r\n // Validate usages are not empty\r\n if (keyUsages.length === 0) {\r\n throw lazyDOMException('Usages cannot be empty', 'SyntaxError');\r\n }\r\n\r\n // Usage validation based on algorithm type\r\n switch (name) {\r\n case 'RSASSA-PKCS1-v1_5':\r\n if (hasAnyNotIn(keyUsages, ['sign', 'verify'])) {\r\n throw lazyDOMException(\r\n `Unsupported key usage for a ${name} key`,\r\n 'SyntaxError',\r\n );\r\n }\r\n break;\r\n case 'RSA-PSS':\r\n if (hasAnyNotIn(keyUsages, ['sign', 'verify'])) {\r\n throw lazyDOMException(\r\n `Unsupported key usage for a ${name} key`,\r\n 'SyntaxError',\r\n );\r\n }\r\n break;\r\n case 'RSA-OAEP':\r\n if (\r\n hasAnyNotIn(keyUsages, ['encrypt', 'decrypt', 'wrapKey', 'unwrapKey'])\r\n ) {\r\n throw lazyDOMException(\r\n `Unsupported key usage for a ${name} key`,\r\n 'SyntaxError',\r\n );\r\n }\r\n break;\r\n default:\r\n throw lazyDOMException(\r\n 'The algorithm is not supported',\r\n 'NotSupportedError',\r\n );\r\n }\r\n\r\n // Split usages between public and private keys\r\n let publicUsages: KeyUsage[] = [];\r\n let privateUsages: KeyUsage[] = [];\r\n switch (name) {\r\n case 'RSASSA-PKCS1-v1_5':\r\n case 'RSA-PSS':\r\n publicUsages = getUsagesUnion(keyUsages, 'verify');\r\n privateUsages = getUsagesUnion(keyUsages, 'sign');\r\n break;\r\n case 'RSA-OAEP':\r\n publicUsages = getUsagesUnion(keyUsages, 'encrypt', 'wrapKey');\r\n privateUsages = getUsagesUnion(keyUsages, 'decrypt', 'unwrapKey');\r\n break;\r\n }\r\n\r\n // Validate that private key has usages for CryptoKeyPair\r\n if (privateUsages.length === 0) {\r\n throw lazyDOMException('Usages cannot be empty', 'SyntaxError');\r\n }\r\n\r\n const rsa = new Rsa(modulusLength, publicExponent, hashName);\r\n await rsa.generateKeyPair();\r\n\r\n const keyAlgorithm = {\r\n name,\r\n modulusLength,\r\n publicExponent,\r\n hash: { name: hashName },\r\n };\r\n\r\n // Create KeyObject instances using the standard createKeyObject method\r\n const publicKeyData = rsa.native.getPublicKey();\r\n const pub = KeyObject.createKeyObject(\r\n 'public',\r\n publicKeyData,\r\n ) as PublicKeyObject;\r\n const publicKey = new CryptoKey(pub, keyAlgorithm, publicUsages, true);\r\n\r\n const privateKeyData = rsa.native.getPrivateKey();\r\n const priv = KeyObject.createKeyObject(\r\n 'private',\r\n privateKeyData,\r\n ) as PrivateKeyObject;\r\n const privateKey = new CryptoKey(\r\n priv,\r\n keyAlgorithm,\r\n privateUsages,\r\n extractable,\r\n );\r\n\r\n return { publicKey, privateKey };\r\n}\r\n\r\nfunction rsa_prepareKeyGenParams(\r\n _type: 'rsa' | 'rsa-pss',\r\n options: GenerateKeyPairOptions | undefined,\r\n): Rsa {\r\n if (!options) {\r\n throw new Error('Options are required for RSA key generation');\r\n }\r\n\r\n const {\r\n modulusLength,\r\n publicExponent,\r\n hash = 'sha256',\r\n } = options as {\r\n modulusLength?: number;\r\n publicExponent?: number;\r\n hash?: string;\r\n };\r\n\r\n if (!modulusLength || modulusLength < 256) {\r\n throw new Error('Invalid modulus length');\r\n }\r\n\r\n const pubExp = publicExponent || 65537;\r\n const pubExpBytes = new Uint8Array([\r\n (pubExp >> 16) & 0xff,\r\n (pubExp >> 8) & 0xff,\r\n pubExp & 0xff,\r\n ]);\r\n\r\n const hashName = typeof hash === 'string' ? hash : hash;\r\n\r\n return new Rsa(modulusLength, pubExpBytes, hashName);\r\n}\r\n\r\nfunction rsa_formatKeyPairOutput(\r\n rsa: Rsa,\r\n encoding: KeyPairGenConfig,\r\n): {\r\n publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n} {\r\n const {\r\n publicFormat,\r\n publicType,\r\n privateFormat,\r\n privateType,\r\n cipher,\r\n passphrase,\r\n } = encoding;\r\n\r\n const publicKeyData = rsa.native.getPublicKey();\r\n const privateKeyData = rsa.native.getPrivateKey();\r\n\r\n const pub = KeyObject.createKeyObject(\r\n 'public',\r\n publicKeyData,\r\n ) as PublicKeyObject;\r\n\r\n const priv = KeyObject.createKeyObject(\r\n 'private',\r\n privateKeyData,\r\n ) as PrivateKeyObject;\r\n\r\n let publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n let privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n\r\n if (publicFormat === -1) {\r\n publicKey = pub;\r\n } else {\r\n const format =\r\n publicFormat === KFormatType.PEM ? KFormatType.PEM : KFormatType.DER;\r\n const keyEncoding =\r\n publicType === KeyEncoding.SPKI ? KeyEncoding.SPKI : KeyEncoding.PKCS1;\r\n const exported = pub.handle.exportKey(format, keyEncoding);\r\n if (format === KFormatType.PEM) {\r\n publicKey = Buffer.from(new Uint8Array(exported)).toString('utf-8');\r\n } else {\r\n publicKey = exported;\r\n }\r\n }\r\n\r\n if (privateFormat === -1) {\r\n privateKey = priv;\r\n } else {\r\n const format =\r\n privateFormat === KFormatType.PEM ? KFormatType.PEM : KFormatType.DER;\r\n const keyEncoding =\r\n privateType === KeyEncoding.PKCS8 ? KeyEncoding.PKCS8 : KeyEncoding.PKCS1;\r\n const exported = priv.handle.exportKey(\r\n format,\r\n keyEncoding,\r\n cipher,\r\n passphrase,\r\n );\r\n if (format === KFormatType.PEM) {\r\n privateKey = Buffer.from(new Uint8Array(exported)).toString('utf-8');\r\n } else {\r\n privateKey = exported;\r\n }\r\n }\r\n\r\n return { publicKey, privateKey };\r\n}\r\n\r\nexport async function rsa_generateKeyPairNode(\r\n type: 'rsa' | 'rsa-pss',\r\n options: GenerateKeyPairOptions | undefined,\r\n encoding: KeyPairGenConfig,\r\n): Promise<{\r\n publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n}> {\r\n const rsa = rsa_prepareKeyGenParams(type, options);\r\n await rsa.generateKeyPair();\r\n return rsa_formatKeyPairOutput(rsa, encoding);\r\n}\r\n\r\nexport function rsa_generateKeyPairNodeSync(\r\n type: 'rsa' | 'rsa-pss',\r\n options: GenerateKeyPairOptions | undefined,\r\n encoding: KeyPairGenConfig,\r\n): {\r\n publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n} {\r\n const rsa = rsa_prepareKeyGenParams(type, options);\r\n rsa.generateKeyPairSync();\r\n return rsa_formatKeyPairOutput(rsa, encoding);\r\n}\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeNitroModules","require","_reactNativeBuffer","_classes","_utils","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","Rsa","constructor","modulusLength","publicExponent","hashAlgorithm","native","NitroModules","createHybridObject","setModulusLength","setPublicExponent","buffer","slice","byteOffset","byteLength","setHashAlgorithm","generateKeyPair","publicKey","getPublicKey","privateKey","getPrivateKey","generateKeyPairSync","exports","rsa_generateKeyPair","algorithm","extractable","keyUsages","name","hash","lazyDOMException","length","hashName","normalizedHash","normalizeHashName","hasAnyNotIn","publicUsages","privateUsages","getUsagesUnion","rsa","keyAlgorithm","publicKeyData","pub","KeyObject","createKeyObject","CryptoKey","privateKeyData","priv","rsa_prepareKeyGenParams","_type","options","Error","pubExp","pubExpBytes","Uint8Array","rsa_formatKeyPairOutput","encoding","publicFormat","publicType","privateFormat","privateType","cipher","passphrase","format","KFormatType","PEM","DER","keyEncoding","KeyEncoding","SPKI","PKCS1","exported","handle","exportKey","Buffer","from","toString","PKCS8","rsa_generateKeyPairNode","type","rsa_generateKeyPairNodeSync"],"sources":["rsa.ts"],"sourcesContent":["import { NitroModules } from 'react-native-nitro-modules';\r\nimport { Buffer } from '@craftzdog/react-native-buffer';\r\nimport {\r\n CryptoKey,\r\n KeyObject,\r\n PrivateKeyObject,\r\n PublicKeyObject,\r\n} from './keys/classes';\r\nimport {\r\n getUsagesUnion,\r\n hasAnyNotIn,\r\n lazyDOMException,\r\n normalizeHashName,\r\n KFormatType,\r\n KeyEncoding,\r\n} from './utils';\r\nimport type {\r\n CryptoKeyPair,\r\n KeyUsage,\r\n RsaHashedKeyGenParams,\r\n SubtleAlgorithm,\r\n GenerateKeyPairOptions,\r\n KeyPairGenConfig,\r\n} from './utils';\r\nimport type { RsaKeyPair } from './specs/v1/rsaKeyPair.nitro';\r\n\r\nexport class Rsa {\r\n native: RsaKeyPair;\r\n\r\n constructor(\r\n modulusLength: number,\r\n publicExponent: Uint8Array,\r\n hashAlgorithm: string,\r\n ) {\r\n this.native = NitroModules.createHybridObject<RsaKeyPair>('RsaKeyPair');\r\n this.native.setModulusLength(modulusLength);\r\n this.native.setPublicExponent(\r\n publicExponent.buffer.slice(\r\n publicExponent.byteOffset,\r\n publicExponent.byteOffset + publicExponent.byteLength,\r\n ) as ArrayBuffer,\r\n );\r\n this.native.setHashAlgorithm(hashAlgorithm);\r\n }\r\n\r\n async generateKeyPair(): Promise<CryptoKeyPair> {\r\n await this.native.generateKeyPair();\r\n return {\r\n publicKey: this.native.getPublicKey(),\r\n privateKey: this.native.getPrivateKey(),\r\n };\r\n }\r\n\r\n generateKeyPairSync(): CryptoKeyPair {\r\n this.native.generateKeyPairSync();\r\n return {\r\n publicKey: this.native.getPublicKey(),\r\n privateKey: this.native.getPrivateKey(),\r\n };\r\n }\r\n}\r\n\r\n// Node API\r\nexport async function rsa_generateKeyPair(\r\n algorithm: SubtleAlgorithm,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n): Promise<CryptoKeyPair> {\r\n const { name, modulusLength, publicExponent, hash } =\r\n algorithm as RsaHashedKeyGenParams;\r\n\r\n // Validate parameters first\r\n if (!modulusLength || modulusLength < 256) {\r\n throw lazyDOMException('Invalid key length', 'OperationError');\r\n }\r\n\r\n if (!publicExponent || publicExponent.length === 0) {\r\n throw lazyDOMException('Invalid public exponent', 'OperationError');\r\n }\r\n\r\n // Validate hash algorithm using existing validation function\r\n let hashName: string;\r\n try {\r\n const normalizedHash = normalizeHashName(hash);\r\n hashName = typeof hash === 'string' ? hash : hash?.name || normalizedHash;\r\n } catch {\r\n throw lazyDOMException('Invalid Hash Algorithm', 'NotSupportedError');\r\n }\r\n\r\n // Validate usages are not empty\r\n if (keyUsages.length === 0) {\r\n throw lazyDOMException('Usages cannot be empty', 'SyntaxError');\r\n }\r\n\r\n // Usage validation based on algorithm type\r\n switch (name) {\r\n case 'RSASSA-PKCS1-v1_5':\r\n if (hasAnyNotIn(keyUsages, ['sign', 'verify'])) {\r\n throw lazyDOMException(\r\n `Unsupported key usage for a ${name} key`,\r\n 'SyntaxError',\r\n );\r\n }\r\n break;\r\n case 'RSA-PSS':\r\n if (hasAnyNotIn(keyUsages, ['sign', 'verify'])) {\r\n throw lazyDOMException(\r\n `Unsupported key usage for a ${name} key`,\r\n 'SyntaxError',\r\n );\r\n }\r\n break;\r\n case 'RSA-OAEP':\r\n if (\r\n hasAnyNotIn(keyUsages, ['encrypt', 'decrypt', 'wrapKey', 'unwrapKey'])\r\n ) {\r\n throw lazyDOMException(\r\n `Unsupported key usage for a ${name} key`,\r\n 'SyntaxError',\r\n );\r\n }\r\n break;\r\n default:\r\n throw lazyDOMException(\r\n 'The algorithm is not supported',\r\n 'NotSupportedError',\r\n );\r\n }\r\n\r\n // Split usages between public and private keys\r\n let publicUsages: KeyUsage[] = [];\r\n let privateUsages: KeyUsage[] = [];\r\n switch (name) {\r\n case 'RSASSA-PKCS1-v1_5':\r\n case 'RSA-PSS':\r\n publicUsages = getUsagesUnion(keyUsages, 'verify');\r\n privateUsages = getUsagesUnion(keyUsages, 'sign');\r\n break;\r\n case 'RSA-OAEP':\r\n publicUsages = getUsagesUnion(keyUsages, 'encrypt', 'wrapKey');\r\n privateUsages = getUsagesUnion(keyUsages, 'decrypt', 'unwrapKey');\r\n break;\r\n }\r\n\r\n // Validate that private key has usages for CryptoKeyPair\r\n if (privateUsages.length === 0) {\r\n throw lazyDOMException('Usages cannot be empty', 'SyntaxError');\r\n }\r\n\r\n const rsa = new Rsa(modulusLength, publicExponent, hashName);\r\n await rsa.generateKeyPair();\r\n\r\n const keyAlgorithm = {\r\n name,\r\n modulusLength,\r\n publicExponent,\r\n hash: { name: hashName },\r\n };\r\n\r\n // Create KeyObject instances using the standard createKeyObject method\r\n const publicKeyData = rsa.native.getPublicKey();\r\n const pub = KeyObject.createKeyObject(\r\n 'public',\r\n publicKeyData,\r\n ) as PublicKeyObject;\r\n const publicKey = new CryptoKey(pub, keyAlgorithm, publicUsages, true);\r\n\r\n const privateKeyData = rsa.native.getPrivateKey();\r\n const priv = KeyObject.createKeyObject(\r\n 'private',\r\n privateKeyData,\r\n ) as PrivateKeyObject;\r\n const privateKey = new CryptoKey(\r\n priv,\r\n keyAlgorithm,\r\n privateUsages,\r\n extractable,\r\n );\r\n\r\n return { publicKey, privateKey };\r\n}\r\n\r\nfunction rsa_prepareKeyGenParams(\r\n _type: 'rsa' | 'rsa-pss',\r\n options: GenerateKeyPairOptions | undefined,\r\n): Rsa {\r\n if (!options) {\r\n throw new Error('Options are required for RSA key generation');\r\n }\r\n\r\n const {\r\n modulusLength,\r\n publicExponent,\r\n hash = 'sha256',\r\n } = options as {\r\n modulusLength?: number;\r\n publicExponent?: number;\r\n hash?: string;\r\n };\r\n\r\n if (!modulusLength || modulusLength < 256) {\r\n throw new Error('Invalid modulus length');\r\n }\r\n\r\n const pubExp = publicExponent || 65537;\r\n const pubExpBytes = new Uint8Array([\r\n (pubExp >> 16) & 0xff,\r\n (pubExp >> 8) & 0xff,\r\n pubExp & 0xff,\r\n ]);\r\n\r\n const hashName = typeof hash === 'string' ? hash : hash;\r\n\r\n return new Rsa(modulusLength, pubExpBytes, hashName);\r\n}\r\n\r\nfunction rsa_formatKeyPairOutput(\r\n rsa: Rsa,\r\n encoding: KeyPairGenConfig,\r\n): {\r\n publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n} {\r\n const {\r\n publicFormat,\r\n publicType,\r\n privateFormat,\r\n privateType,\r\n cipher,\r\n passphrase,\r\n } = encoding;\r\n\r\n const publicKeyData = rsa.native.getPublicKey();\r\n const privateKeyData = rsa.native.getPrivateKey();\r\n\r\n const pub = KeyObject.createKeyObject(\r\n 'public',\r\n publicKeyData,\r\n ) as PublicKeyObject;\r\n\r\n const priv = KeyObject.createKeyObject(\r\n 'private',\r\n privateKeyData,\r\n ) as PrivateKeyObject;\r\n\r\n let publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n let privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n\r\n if (publicFormat === -1) {\r\n publicKey = pub;\r\n } else {\r\n const format =\r\n publicFormat === KFormatType.PEM ? KFormatType.PEM : KFormatType.DER;\r\n const keyEncoding =\r\n publicType === KeyEncoding.SPKI ? KeyEncoding.SPKI : KeyEncoding.PKCS1;\r\n const exported = pub.handle.exportKey(format, keyEncoding);\r\n if (format === KFormatType.PEM) {\r\n publicKey = Buffer.from(new Uint8Array(exported)).toString('utf-8');\r\n } else {\r\n publicKey = exported;\r\n }\r\n }\r\n\r\n if (privateFormat === -1) {\r\n privateKey = priv;\r\n } else {\r\n const format =\r\n privateFormat === KFormatType.PEM ? KFormatType.PEM : KFormatType.DER;\r\n const keyEncoding =\r\n privateType === KeyEncoding.PKCS8 ? KeyEncoding.PKCS8 : KeyEncoding.PKCS1;\r\n const exported = priv.handle.exportKey(\r\n format,\r\n keyEncoding,\r\n cipher,\r\n passphrase,\r\n );\r\n if (format === KFormatType.PEM) {\r\n privateKey = Buffer.from(new Uint8Array(exported)).toString('utf-8');\r\n } else {\r\n privateKey = exported;\r\n }\r\n }\r\n\r\n return { publicKey, privateKey };\r\n}\r\n\r\nexport async function rsa_generateKeyPairNode(\r\n type: 'rsa' | 'rsa-pss',\r\n options: GenerateKeyPairOptions | undefined,\r\n encoding: KeyPairGenConfig,\r\n): Promise<{\r\n publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n}> {\r\n const rsa = rsa_prepareKeyGenParams(type, options);\r\n await rsa.generateKeyPair();\r\n return rsa_formatKeyPairOutput(rsa, encoding);\r\n}\r\n\r\nexport function rsa_generateKeyPairNodeSync(\r\n type: 'rsa' | 'rsa-pss',\r\n options: GenerateKeyPairOptions | undefined,\r\n encoding: KeyPairGenConfig,\r\n): {\r\n publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n} {\r\n const rsa = rsa_prepareKeyGenParams(type, options);\r\n rsa.generateKeyPairSync();\r\n return rsa_formatKeyPairOutput(rsa, encoding);\r\n}\r\n"],"mappings":"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","ignoreList":[]}
@@ -10,7 +10,7 @@ var _keys = require("./keys");
10
10
  var _utils = require("./utils");
11
11
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
12
12
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
13
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
13
+ function _toPrimitive(t, e) { if ("object" != typeof t || !t) return t; var r; if ("undefined" != typeof Symbol && void 0 !== (r = t[Symbol.toPrimitive])) { var i = r.call(t, e || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === e ? String : Number)(t); }
14
14
  const X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT = 0x1;
15
15
  const X509_CHECK_FLAG_NO_WILDCARDS = 0x2;
16
16
  const X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS = 0x4;