@hxa-rn/react-native-quick-crypto 1.1.0-beta.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 (55) hide show
  1. package/LICENSE +8 -1
  2. package/README.md +172 -171
  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.har +0 -0
  55. package/package.json +87 -87
@@ -1 +1 @@
1
- {"version":3,"names":["_readableStream","require","_reactNativeNitroModules","_reactNativeBuffer","_utils","_validation","_errors","_hashnames","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","HashUtils","getSupportedHashAlgorithms","native","NitroModules","createHybridObject","getHashes","Hash","Stream","Transform","validate","args","_args$options","_args$options2","algorithm","length","Error","options","outputLength","undefined","constructor","createHash","update","data","inputEncoding","defaultEncoding","binaryLikeToArrayBuffer","digest","encoding","nativeDigest","ab2str","Buffer","from","copy","newOptions","newNativeHash","hash","getOpenSSLVersion","_transform","chunk","callback","_flush","push","asyncDigest","validateMaxBufferLength","name","internalDigest","lazyDOMException","exports","normalizedHashName","normalizeHashName","bufferLikeToArrayBuffer","result","arrayBuffer","ArrayBuffer","view","Uint8Array","set","outputEncoding","h","hashExports"],"sources":["hash.ts"],"sourcesContent":["import { Stream } from 'readable-stream';\r\nimport { NitroModules } from 'react-native-nitro-modules';\r\nimport type { TransformOptions } from 'readable-stream';\r\nimport { Buffer } from '@craftzdog/react-native-buffer';\r\nimport type { Hash as NativeHash } from './specs/v1/hash.nitro';\r\nimport type {\r\n BinaryLike,\r\n Encoding,\r\n BufferLike,\r\n SubtleAlgorithm,\r\n} from './utils';\r\nimport {\r\n ab2str,\r\n binaryLikeToArrayBuffer,\r\n bufferLikeToArrayBuffer,\r\n} from './utils';\r\nimport { validateMaxBufferLength } from './utils/validation';\r\nimport { lazyDOMException } from './utils/errors';\r\nimport { normalizeHashName } from './utils/hashnames';\r\n\r\nclass HashUtils {\r\n private static native = NitroModules.createHybridObject<NativeHash>('Hash');\r\n public static getSupportedHashAlgorithms(): string[] {\r\n return this.native.getSupportedHashAlgorithms();\r\n }\r\n}\r\n\r\nexport function getHashes() {\r\n return HashUtils.getSupportedHashAlgorithms();\r\n}\r\n\r\ninterface HashOptions extends TransformOptions {\r\n /**\r\n * For XOF hash functions such as `shake256`, the\r\n * outputLength option can be used to specify the desired output length in bytes.\r\n */\r\n outputLength?: number | undefined;\r\n}\r\n\r\ninterface HashArgs {\r\n algorithm: string;\r\n options?: HashOptions;\r\n native?: NativeHash;\r\n}\r\n\r\nclass Hash extends Stream.Transform {\r\n private algorithm: string;\r\n private options: HashOptions;\r\n private native: NativeHash;\r\n\r\n private validate(args: HashArgs) {\r\n if (typeof args.algorithm !== 'string' || args.algorithm.length === 0)\r\n throw new Error('Algorithm must be a non-empty string');\r\n if (\r\n args.options?.outputLength !== undefined &&\r\n args.options.outputLength < 0\r\n )\r\n throw new Error('Output length must be a non-negative number');\r\n if (\r\n args.options?.outputLength !== undefined &&\r\n typeof args.options.outputLength !== 'number'\r\n )\r\n throw new Error('Output length must be a number');\r\n }\r\n\r\n /**\r\n * @internal use `createHash()` instead\r\n */\r\n private constructor(args: HashArgs) {\r\n super(args.options);\r\n\r\n this.validate(args);\r\n\r\n this.algorithm = args.algorithm;\r\n this.options = args.options ?? {};\r\n\r\n if (args.native) {\r\n this.native = args.native;\r\n return;\r\n }\r\n\r\n this.native = NitroModules.createHybridObject<NativeHash>('Hash');\r\n this.native.createHash(this.algorithm, this.options.outputLength);\r\n }\r\n\r\n /**\r\n * Updates the hash content with the given `data`, the encoding of which\r\n * is given in `inputEncoding`.\r\n * If `encoding` is not provided, and the `data` is a string, an\r\n * encoding of `'utf8'` is enforced. If `data` is a `Buffer`, `TypedArray`, or`DataView`, then `inputEncoding` is ignored.\r\n *\r\n * This can be called many times with new data as it is streamed.\r\n * @since v1.0.0\r\n * @param inputEncoding The `encoding` of the `data` string.\r\n */\r\n update(data: BinaryLike): Hash;\r\n update(data: BinaryLike, inputEncoding: Encoding): Buffer;\r\n update(data: BinaryLike, inputEncoding?: Encoding): Hash | Buffer {\r\n const defaultEncoding: Encoding = 'utf8';\r\n inputEncoding = inputEncoding ?? defaultEncoding;\r\n\r\n // OPTIMIZED PATH: Pass UTF-8 strings directly to native without conversion\r\n if (typeof data === 'string' && inputEncoding === 'utf8') {\r\n this.native.update(data);\r\n } else {\r\n this.native.update(binaryLikeToArrayBuffer(data, inputEncoding));\r\n }\r\n\r\n return this; // to support chaining syntax createHash().update().digest()\r\n }\r\n\r\n /**\r\n * Calculates the digest of all of the data passed to be hashed (using the `hash.update()` method).\r\n * If `encoding` is provided a string will be returned; otherwise\r\n * a `Buffer` is returned.\r\n *\r\n * The `Hash` object can not be used again after `hash.digest()` method has been\r\n * called. Multiple calls will cause an error to be thrown.\r\n * @since v1.0.0\r\n * @param encoding The `encoding` of the return value.\r\n */\r\n digest(): Buffer;\r\n digest(encoding: Encoding): string;\r\n digest(encoding?: Encoding): Buffer | string {\r\n const nativeDigest = this.native.digest(encoding);\r\n\r\n if (encoding && encoding !== 'buffer') {\r\n return ab2str(nativeDigest, encoding);\r\n }\r\n\r\n return Buffer.from(nativeDigest);\r\n }\r\n\r\n /**\r\n * Creates a new `Hash` object that contains a deep copy of the internal state\r\n * of the current `Hash` object.\r\n *\r\n * The optional `options` argument controls stream behavior. For XOF hash\r\n * functions such as `'shake256'`, the `outputLength` option can be used to\r\n * specify the desired output length in bytes.\r\n *\r\n * An error is thrown when an attempt is made to copy the `Hash` object after\r\n * its `hash.digest()` method has been called.\r\n *\r\n * ```js\r\n * // Calculate a rolling hash.\r\n * import { createHash } from 'react-native-quick-crypto';\r\n *\r\n * const hash = createHash('sha256');\r\n *\r\n * hash.update('one');\r\n * console.log(hash.copy().digest('hex'));\r\n *\r\n * hash.update('two');\r\n * console.log(hash.copy().digest('hex'));\r\n *\r\n * hash.update('three');\r\n * console.log(hash.copy().digest('hex'));\r\n *\r\n * // Etc.\r\n * ```\r\n * @since v1.0.0\r\n * @param options `stream.transform` options\r\n */\r\n copy(): Hash;\r\n copy(options: HashOptions): Hash;\r\n copy(options?: HashOptions): Hash {\r\n const newOptions = options ?? this.options;\r\n const newNativeHash = this.native.copy(newOptions.outputLength);\r\n const hash = new Hash({\r\n algorithm: this.algorithm,\r\n options: newOptions,\r\n native: newNativeHash,\r\n });\r\n return hash;\r\n }\r\n\r\n /**\r\n * Returns the OpenSSL version string\r\n * @since v1.0.0\r\n */\r\n getOpenSSLVersion(): string {\r\n return this.native.getOpenSSLVersion();\r\n }\r\n\r\n // stream interface\r\n _transform(\r\n chunk: BinaryLike,\r\n encoding: BufferEncoding,\r\n callback: () => void,\r\n ) {\r\n this.update(chunk, encoding as Encoding);\r\n callback();\r\n }\r\n _flush(callback: () => void) {\r\n this.push(this.digest());\r\n callback();\r\n }\r\n}\r\n\r\n/**\r\n * Creates and returns a `Hash` object that can be used to generate hash digests\r\n * using the given `algorithm`. Optional `options` argument controls stream\r\n * behavior. For XOF hash functions such as `'shake256'`, the `outputLength` option\r\n * can be used to specify the desired output length in bytes.\r\n *\r\n * The `algorithm` is dependent on the available algorithms supported by the\r\n * version of OpenSSL on the platform. Examples are `'sha256'`, `'sha512'`, etc.\r\n * On recent releases of OpenSSL, `openssl list -digest-algorithms` will\r\n * display the available digest algorithms.\r\n *\r\n * Example: generating the sha256 sum of a file\r\n *\r\n * ```js\r\n * import crypto from 'react-native-quick-crypto';\r\n *\r\n * const hash = crypto.createHash('sha256').update('Test123').digest('hex');\r\n * console.log('SHA-256 of \"Test123\":', hash);\r\n * ```\r\n * @since v1.0.0\r\n * @param options `stream.transform` options\r\n */\r\nexport function createHash(algorithm: string, options?: HashOptions): Hash {\r\n // @ts-expect-error private constructor\r\n return new Hash({\r\n algorithm,\r\n options,\r\n });\r\n}\r\n\r\n// Implementation for WebCrypto subtle.digest()\r\n\r\n/**\r\n * Asynchronous digest function for WebCrypto SubtleCrypto API\r\n * @param algorithm The hash algorithm to use\r\n * @param data The data to hash\r\n * @returns Promise resolving to the hash digest as ArrayBuffer\r\n */\r\nexport const asyncDigest = async (\r\n algorithm: SubtleAlgorithm,\r\n data: BufferLike,\r\n): Promise<ArrayBuffer> => {\r\n validateMaxBufferLength(data, 'data');\r\n\r\n const name = algorithm.name;\r\n\r\n if (\r\n name === 'SHA-1' ||\r\n name === 'SHA-256' ||\r\n name === 'SHA-384' ||\r\n name === 'SHA-512' ||\r\n name === 'SHA3-256' ||\r\n name === 'SHA3-384' ||\r\n name === 'SHA3-512'\r\n ) {\r\n return internalDigest(algorithm, data);\r\n }\r\n\r\n if (name === 'cSHAKE128' || name === 'cSHAKE256') {\r\n if (typeof algorithm.length !== 'number' || algorithm.length <= 0) {\r\n throw lazyDOMException(\r\n 'cSHAKE requires a length parameter',\r\n 'OperationError',\r\n );\r\n }\r\n if (algorithm.length % 8) {\r\n throw lazyDOMException(\r\n 'Unsupported CShakeParams length',\r\n 'NotSupportedError',\r\n );\r\n }\r\n return internalDigest(algorithm, data, algorithm.length);\r\n }\r\n\r\n throw lazyDOMException(\r\n `Unrecognized algorithm name: ${name}`,\r\n 'NotSupportedError',\r\n );\r\n};\r\n\r\nconst internalDigest = (\r\n algorithm: SubtleAlgorithm,\r\n data: BufferLike,\r\n outputLength?: number,\r\n): ArrayBuffer => {\r\n const normalizedHashName = normalizeHashName(algorithm.name);\r\n const hash = createHash(\r\n normalizedHashName,\r\n outputLength ? { outputLength } : undefined,\r\n );\r\n hash.update(bufferLikeToArrayBuffer(data));\r\n const result = hash.digest();\r\n const arrayBuffer = new ArrayBuffer(result.length);\r\n const view = new Uint8Array(arrayBuffer);\r\n view.set(result);\r\n return arrayBuffer;\r\n};\r\n\r\nexport function hash(\r\n algorithm: string,\r\n data: BinaryLike,\r\n outputEncoding: Encoding,\r\n): string;\r\nexport function hash(algorithm: string, data: BinaryLike): Buffer;\r\nexport function hash(\r\n algorithm: string,\r\n data: BinaryLike,\r\n outputEncoding?: Encoding,\r\n): string | Buffer {\r\n const h = createHash(algorithm);\r\n h.update(data);\r\n return outputEncoding ? h.digest(outputEncoding) : h.digest();\r\n}\r\n\r\nexport const hashExports = {\r\n createHash,\r\n getHashes,\r\n hash,\r\n asyncDigest,\r\n};\r\n"],"mappings":";;;;;;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,wBAAA,GAAAD,OAAA;AAEA,IAAAE,kBAAA,GAAAF,OAAA;AAQA,IAAAG,MAAA,GAAAH,OAAA;AAKA,IAAAI,WAAA,GAAAJ,OAAA;AACA,IAAAK,OAAA,GAAAL,OAAA;AACA,IAAAM,UAAA,GAAAN,OAAA;AAAsD,SAAAO,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;AAEtD,MAAMgB,SAAS,CAAC;EAEd,OAAcC,0BAA0BA,CAAA,EAAa;IACnD,OAAO,IAAI,CAACC,MAAM,CAACD,0BAA0B,CAAC,CAAC;EACjD;AACF;AAACpB,eAAA,CALKmB,SAAS,YACWG,qCAAY,CAACC,kBAAkB,CAAa,MAAM,CAAC;AAMtE,SAASC,SAASA,CAAA,EAAG;EAC1B,OAAOL,SAAS,CAACC,0BAA0B,CAAC,CAAC;AAC/C;AAgBA,MAAMK,IAAI,SAASC,sBAAM,CAACC,SAAS,CAAC;EAK1BC,QAAQA,CAACC,IAAc,EAAE;IAAA,IAAAC,aAAA,EAAAC,cAAA;IAC/B,IAAI,OAAOF,IAAI,CAACG,SAAS,KAAK,QAAQ,IAAIH,IAAI,CAACG,SAAS,CAACC,MAAM,KAAK,CAAC,EACnE,MAAM,IAAIC,KAAK,CAAC,sCAAsC,CAAC;IACzD,IACE,EAAAJ,aAAA,GAAAD,IAAI,CAACM,OAAO,cAAAL,aAAA,uBAAZA,aAAA,CAAcM,YAAY,MAAKC,SAAS,IACxCR,IAAI,CAACM,OAAO,CAACC,YAAY,GAAG,CAAC,EAE7B,MAAM,IAAIF,KAAK,CAAC,6CAA6C,CAAC;IAChE,IACE,EAAAH,cAAA,GAAAF,IAAI,CAACM,OAAO,cAAAJ,cAAA,uBAAZA,cAAA,CAAcK,YAAY,MAAKC,SAAS,IACxC,OAAOR,IAAI,CAACM,OAAO,CAACC,YAAY,KAAK,QAAQ,EAE7C,MAAM,IAAIF,KAAK,CAAC,gCAAgC,CAAC;EACrD;;EAEA;AACF;AACA;EACUI,WAAWA,CAACT,IAAc,EAAE;IAClC,KAAK,CAACA,IAAI,CAACM,OAAO,CAAC;IAACnC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAEpB,IAAI,CAAC4B,QAAQ,CAACC,IAAI,CAAC;IAEnB,IAAI,CAACG,SAAS,GAAGH,IAAI,CAACG,SAAS;IAC/B,IAAI,CAACG,OAAO,GAAGN,IAAI,CAACM,OAAO,IAAI,CAAC,CAAC;IAEjC,IAAIN,IAAI,CAACR,MAAM,EAAE;MACf,IAAI,CAACA,MAAM,GAAGQ,IAAI,CAACR,MAAM;MACzB;IACF;IAEA,IAAI,CAACA,MAAM,GAAGC,qCAAY,CAACC,kBAAkB,CAAa,MAAM,CAAC;IACjE,IAAI,CAACF,MAAM,CAACkB,UAAU,CAAC,IAAI,CAACP,SAAS,EAAE,IAAI,CAACG,OAAO,CAACC,YAAY,CAAC;EACnE;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;EAGEI,MAAMA,CAACC,IAAgB,EAAEC,aAAwB,EAAiB;IAChE,MAAMC,eAAyB,GAAG,MAAM;IACxCD,aAAa,GAAGA,aAAa,IAAIC,eAAe;;IAEhD;IACA,IAAI,OAAOF,IAAI,KAAK,QAAQ,IAAIC,aAAa,KAAK,MAAM,EAAE;MACxD,IAAI,CAACrB,MAAM,CAACmB,MAAM,CAACC,IAAI,CAAC;IAC1B,CAAC,MAAM;MACL,IAAI,CAACpB,MAAM,CAACmB,MAAM,CAAC,IAAAI,8BAAuB,EAACH,IAAI,EAAEC,aAAa,CAAC,CAAC;IAClE;IAEA,OAAO,IAAI,CAAC,CAAC;EACf;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;EAGEG,MAAMA,CAACC,QAAmB,EAAmB;IAC3C,MAAMC,YAAY,GAAG,IAAI,CAAC1B,MAAM,CAACwB,MAAM,CAACC,QAAQ,CAAC;IAEjD,IAAIA,QAAQ,IAAIA,QAAQ,KAAK,QAAQ,EAAE;MACrC,OAAO,IAAAE,aAAM,EAACD,YAAY,EAAED,QAAQ,CAAC;IACvC;IAEA,OAAOG,yBAAM,CAACC,IAAI,CAACH,YAAY,CAAC;EAClC;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;EAGEI,IAAIA,CAAChB,OAAqB,EAAQ;IAChC,MAAMiB,UAAU,GAAGjB,OAAO,IAAI,IAAI,CAACA,OAAO;IAC1C,MAAMkB,aAAa,GAAG,IAAI,CAAChC,MAAM,CAAC8B,IAAI,CAACC,UAAU,CAAChB,YAAY,CAAC;IAC/D,MAAMkB,IAAI,GAAG,IAAI7B,IAAI,CAAC;MACpBO,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBG,OAAO,EAAEiB,UAAU;MACnB/B,MAAM,EAAEgC;IACV,CAAC,CAAC;IACF,OAAOC,IAAI;EACb;;EAEA;AACF;AACA;AACA;EACEC,iBAAiBA,CAAA,EAAW;IAC1B,OAAO,IAAI,CAAClC,MAAM,CAACkC,iBAAiB,CAAC,CAAC;EACxC;;EAEA;EACAC,UAAUA,CACRC,KAAiB,EACjBX,QAAwB,EACxBY,QAAoB,EACpB;IACA,IAAI,CAAClB,MAAM,CAACiB,KAAK,EAAEX,QAAoB,CAAC;IACxCY,QAAQ,CAAC,CAAC;EACZ;EACAC,MAAMA,CAACD,QAAoB,EAAE;IAC3B,IAAI,CAACE,IAAI,CAAC,IAAI,CAACf,MAAM,CAAC,CAAC,CAAC;IACxBa,QAAQ,CAAC,CAAC;EACZ;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASnB,UAAUA,CAACP,SAAiB,EAAEG,OAAqB,EAAQ;EACzE;EACA,OAAO,IAAIV,IAAI,CAAC;IACdO,SAAS;IACTG;EACF,CAAC,CAAC;AACJ;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM0B,WAAW,GAAG,MAAAA,CACzB7B,SAA0B,EAC1BS,IAAgB,KACS;EACzB,IAAAqB,mCAAuB,EAACrB,IAAI,EAAE,MAAM,CAAC;EAErC,MAAMsB,IAAI,GAAG/B,SAAS,CAAC+B,IAAI;EAE3B,IACEA,IAAI,KAAK,OAAO,IAChBA,IAAI,KAAK,SAAS,IAClBA,IAAI,KAAK,SAAS,IAClBA,IAAI,KAAK,SAAS,IAClBA,IAAI,KAAK,UAAU,IACnBA,IAAI,KAAK,UAAU,IACnBA,IAAI,KAAK,UAAU,EACnB;IACA,OAAOC,cAAc,CAAChC,SAAS,EAAES,IAAI,CAAC;EACxC;EAEA,IAAIsB,IAAI,KAAK,WAAW,IAAIA,IAAI,KAAK,WAAW,EAAE;IAChD,IAAI,OAAO/B,SAAS,CAACC,MAAM,KAAK,QAAQ,IAAID,SAAS,CAACC,MAAM,IAAI,CAAC,EAAE;MACjE,MAAM,IAAAgC,wBAAgB,EACpB,oCAAoC,EACpC,gBACF,CAAC;IACH;IACA,IAAIjC,SAAS,CAACC,MAAM,GAAG,CAAC,EAAE;MACxB,MAAM,IAAAgC,wBAAgB,EACpB,iCAAiC,EACjC,mBACF,CAAC;IACH;IACA,OAAOD,cAAc,CAAChC,SAAS,EAAES,IAAI,EAAET,SAAS,CAACC,MAAM,CAAC;EAC1D;EAEA,MAAM,IAAAgC,wBAAgB,EACpB,gCAAgCF,IAAI,EAAE,EACtC,mBACF,CAAC;AACH,CAAC;AAACG,OAAA,CAAAL,WAAA,GAAAA,WAAA;AAEF,MAAMG,cAAc,GAAGA,CACrBhC,SAA0B,EAC1BS,IAAgB,EAChBL,YAAqB,KACL;EAChB,MAAM+B,kBAAkB,GAAG,IAAAC,4BAAiB,EAACpC,SAAS,CAAC+B,IAAI,CAAC;EAC5D,MAAMT,IAAI,GAAGf,UAAU,CACrB4B,kBAAkB,EAClB/B,YAAY,GAAG;IAAEA;EAAa,CAAC,GAAGC,SACpC,CAAC;EACDiB,IAAI,CAACd,MAAM,CAAC,IAAA6B,8BAAuB,EAAC5B,IAAI,CAAC,CAAC;EAC1C,MAAM6B,MAAM,GAAGhB,IAAI,CAACT,MAAM,CAAC,CAAC;EAC5B,MAAM0B,WAAW,GAAG,IAAIC,WAAW,CAACF,MAAM,CAACrC,MAAM,CAAC;EAClD,MAAMwC,IAAI,GAAG,IAAIC,UAAU,CAACH,WAAW,CAAC;EACxCE,IAAI,CAACE,GAAG,CAACL,MAAM,CAAC;EAChB,OAAOC,WAAW;AACpB,CAAC;AAQM,SAASjB,IAAIA,CAClBtB,SAAiB,EACjBS,IAAgB,EAChBmC,cAAyB,EACR;EACjB,MAAMC,CAAC,GAAGtC,UAAU,CAACP,SAAS,CAAC;EAC/B6C,CAAC,CAACrC,MAAM,CAACC,IAAI,CAAC;EACd,OAAOmC,cAAc,GAAGC,CAAC,CAAChC,MAAM,CAAC+B,cAAc,CAAC,GAAGC,CAAC,CAAChC,MAAM,CAAC,CAAC;AAC/D;AAEO,MAAMiC,WAAW,GAAAZ,OAAA,CAAAY,WAAA,GAAG;EACzBvC,UAAU;EACVf,SAAS;EACT8B,IAAI;EACJO;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_readableStream","require","_reactNativeNitroModules","_reactNativeBuffer","_utils","_validation","_errors","_hashnames","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","HashUtils","getSupportedHashAlgorithms","native","NitroModules","createHybridObject","getHashes","Hash","Stream","Transform","validate","args","_args$options","_args$options2","algorithm","length","Error","options","outputLength","undefined","constructor","createHash","update","data","inputEncoding","defaultEncoding","binaryLikeToArrayBuffer","digest","encoding","nativeDigest","ab2str","Buffer","from","copy","newOptions","newNativeHash","hash","getOpenSSLVersion","_transform","chunk","callback","_flush","push","asyncDigest","validateMaxBufferLength","name","internalDigest","lazyDOMException","exports","normalizedHashName","normalizeHashName","bufferLikeToArrayBuffer","result","arrayBuffer","ArrayBuffer","view","Uint8Array","set","outputEncoding","h","hashExports"],"sources":["hash.ts"],"sourcesContent":["import { Stream } from 'readable-stream';\r\nimport { NitroModules } from 'react-native-nitro-modules';\r\nimport type { TransformOptions } from 'readable-stream';\r\nimport { Buffer } from '@craftzdog/react-native-buffer';\r\nimport type { Hash as NativeHash } from './specs/v1/hash.nitro';\r\nimport type {\r\n BinaryLike,\r\n Encoding,\r\n BufferLike,\r\n SubtleAlgorithm,\r\n} from './utils';\r\nimport {\r\n ab2str,\r\n binaryLikeToArrayBuffer,\r\n bufferLikeToArrayBuffer,\r\n} from './utils';\r\nimport { validateMaxBufferLength } from './utils/validation';\r\nimport { lazyDOMException } from './utils/errors';\r\nimport { normalizeHashName } from './utils/hashnames';\r\n\r\nclass HashUtils {\r\n private static native = NitroModules.createHybridObject<NativeHash>('Hash');\r\n public static getSupportedHashAlgorithms(): string[] {\r\n return this.native.getSupportedHashAlgorithms();\r\n }\r\n}\r\n\r\nexport function getHashes() {\r\n return HashUtils.getSupportedHashAlgorithms();\r\n}\r\n\r\ninterface HashOptions extends TransformOptions {\r\n /**\r\n * For XOF hash functions such as `shake256`, the\r\n * outputLength option can be used to specify the desired output length in bytes.\r\n */\r\n outputLength?: number | undefined;\r\n}\r\n\r\ninterface HashArgs {\r\n algorithm: string;\r\n options?: HashOptions;\r\n native?: NativeHash;\r\n}\r\n\r\nclass Hash extends Stream.Transform {\r\n private algorithm: string;\r\n private options: HashOptions;\r\n private native: NativeHash;\r\n\r\n private validate(args: HashArgs) {\r\n if (typeof args.algorithm !== 'string' || args.algorithm.length === 0)\r\n throw new Error('Algorithm must be a non-empty string');\r\n if (\r\n args.options?.outputLength !== undefined &&\r\n args.options.outputLength < 0\r\n )\r\n throw new Error('Output length must be a non-negative number');\r\n if (\r\n args.options?.outputLength !== undefined &&\r\n typeof args.options.outputLength !== 'number'\r\n )\r\n throw new Error('Output length must be a number');\r\n }\r\n\r\n /**\r\n * @internal use `createHash()` instead\r\n */\r\n private constructor(args: HashArgs) {\r\n super(args.options);\r\n\r\n this.validate(args);\r\n\r\n this.algorithm = args.algorithm;\r\n this.options = args.options ?? {};\r\n\r\n if (args.native) {\r\n this.native = args.native;\r\n return;\r\n }\r\n\r\n this.native = NitroModules.createHybridObject<NativeHash>('Hash');\r\n this.native.createHash(this.algorithm, this.options.outputLength);\r\n }\r\n\r\n /**\r\n * Updates the hash content with the given `data`, the encoding of which\r\n * is given in `inputEncoding`.\r\n * If `encoding` is not provided, and the `data` is a string, an\r\n * encoding of `'utf8'` is enforced. If `data` is a `Buffer`, `TypedArray`, or`DataView`, then `inputEncoding` is ignored.\r\n *\r\n * This can be called many times with new data as it is streamed.\r\n * @since v1.0.0\r\n * @param inputEncoding The `encoding` of the `data` string.\r\n */\r\n update(data: BinaryLike): Hash;\r\n update(data: BinaryLike, inputEncoding: Encoding): Buffer;\r\n update(data: BinaryLike, inputEncoding?: Encoding): Hash | Buffer {\r\n const defaultEncoding: Encoding = 'utf8';\r\n inputEncoding = inputEncoding ?? defaultEncoding;\r\n\r\n // OPTIMIZED PATH: Pass UTF-8 strings directly to native without conversion\r\n if (typeof data === 'string' && inputEncoding === 'utf8') {\r\n this.native.update(data);\r\n } else {\r\n this.native.update(binaryLikeToArrayBuffer(data, inputEncoding));\r\n }\r\n\r\n return this; // to support chaining syntax createHash().update().digest()\r\n }\r\n\r\n /**\r\n * Calculates the digest of all of the data passed to be hashed (using the `hash.update()` method).\r\n * If `encoding` is provided a string will be returned; otherwise\r\n * a `Buffer` is returned.\r\n *\r\n * The `Hash` object can not be used again after `hash.digest()` method has been\r\n * called. Multiple calls will cause an error to be thrown.\r\n * @since v1.0.0\r\n * @param encoding The `encoding` of the return value.\r\n */\r\n digest(): Buffer;\r\n digest(encoding: Encoding): string;\r\n digest(encoding?: Encoding): Buffer | string {\r\n const nativeDigest = this.native.digest(encoding);\r\n\r\n if (encoding && encoding !== 'buffer') {\r\n return ab2str(nativeDigest, encoding);\r\n }\r\n\r\n return Buffer.from(nativeDigest);\r\n }\r\n\r\n /**\r\n * Creates a new `Hash` object that contains a deep copy of the internal state\r\n * of the current `Hash` object.\r\n *\r\n * The optional `options` argument controls stream behavior. For XOF hash\r\n * functions such as `'shake256'`, the `outputLength` option can be used to\r\n * specify the desired output length in bytes.\r\n *\r\n * An error is thrown when an attempt is made to copy the `Hash` object after\r\n * its `hash.digest()` method has been called.\r\n *\r\n * ```js\r\n * // Calculate a rolling hash.\r\n * import { createHash } from 'react-native-quick-crypto';\r\n *\r\n * const hash = createHash('sha256');\r\n *\r\n * hash.update('one');\r\n * console.log(hash.copy().digest('hex'));\r\n *\r\n * hash.update('two');\r\n * console.log(hash.copy().digest('hex'));\r\n *\r\n * hash.update('three');\r\n * console.log(hash.copy().digest('hex'));\r\n *\r\n * // Etc.\r\n * ```\r\n * @since v1.0.0\r\n * @param options `stream.transform` options\r\n */\r\n copy(): Hash;\r\n copy(options: HashOptions): Hash;\r\n copy(options?: HashOptions): Hash {\r\n const newOptions = options ?? this.options;\r\n const newNativeHash = this.native.copy(newOptions.outputLength);\r\n const hash = new Hash({\r\n algorithm: this.algorithm,\r\n options: newOptions,\r\n native: newNativeHash,\r\n });\r\n return hash;\r\n }\r\n\r\n /**\r\n * Returns the OpenSSL version string\r\n * @since v1.0.0\r\n */\r\n getOpenSSLVersion(): string {\r\n return this.native.getOpenSSLVersion();\r\n }\r\n\r\n // stream interface\r\n _transform(\r\n chunk: BinaryLike,\r\n encoding: BufferEncoding,\r\n callback: () => void,\r\n ) {\r\n this.update(chunk, encoding as Encoding);\r\n callback();\r\n }\r\n _flush(callback: () => void) {\r\n this.push(this.digest());\r\n callback();\r\n }\r\n}\r\n\r\n/**\r\n * Creates and returns a `Hash` object that can be used to generate hash digests\r\n * using the given `algorithm`. Optional `options` argument controls stream\r\n * behavior. For XOF hash functions such as `'shake256'`, the `outputLength` option\r\n * can be used to specify the desired output length in bytes.\r\n *\r\n * The `algorithm` is dependent on the available algorithms supported by the\r\n * version of OpenSSL on the platform. Examples are `'sha256'`, `'sha512'`, etc.\r\n * On recent releases of OpenSSL, `openssl list -digest-algorithms` will\r\n * display the available digest algorithms.\r\n *\r\n * Example: generating the sha256 sum of a file\r\n *\r\n * ```js\r\n * import crypto from 'react-native-quick-crypto';\r\n *\r\n * const hash = crypto.createHash('sha256').update('Test123').digest('hex');\r\n * console.log('SHA-256 of \"Test123\":', hash);\r\n * ```\r\n * @since v1.0.0\r\n * @param options `stream.transform` options\r\n */\r\nexport function createHash(algorithm: string, options?: HashOptions): Hash {\r\n // @ts-expect-error private constructor\r\n return new Hash({\r\n algorithm,\r\n options,\r\n });\r\n}\r\n\r\n// Implementation for WebCrypto subtle.digest()\r\n\r\n/**\r\n * Asynchronous digest function for WebCrypto SubtleCrypto API\r\n * @param algorithm The hash algorithm to use\r\n * @param data The data to hash\r\n * @returns Promise resolving to the hash digest as ArrayBuffer\r\n */\r\nexport const asyncDigest = async (\r\n algorithm: SubtleAlgorithm,\r\n data: BufferLike,\r\n): Promise<ArrayBuffer> => {\r\n validateMaxBufferLength(data, 'data');\r\n\r\n const name = algorithm.name;\r\n\r\n if (\r\n name === 'SHA-1' ||\r\n name === 'SHA-256' ||\r\n name === 'SHA-384' ||\r\n name === 'SHA-512' ||\r\n name === 'SHA3-256' ||\r\n name === 'SHA3-384' ||\r\n name === 'SHA3-512'\r\n ) {\r\n return internalDigest(algorithm, data);\r\n }\r\n\r\n if (name === 'cSHAKE128' || name === 'cSHAKE256') {\r\n if (typeof algorithm.length !== 'number' || algorithm.length <= 0) {\r\n throw lazyDOMException(\r\n 'cSHAKE requires a length parameter',\r\n 'OperationError',\r\n );\r\n }\r\n if (algorithm.length % 8) {\r\n throw lazyDOMException(\r\n 'Unsupported CShakeParams length',\r\n 'NotSupportedError',\r\n );\r\n }\r\n return internalDigest(algorithm, data, algorithm.length);\r\n }\r\n\r\n throw lazyDOMException(\r\n `Unrecognized algorithm name: ${name}`,\r\n 'NotSupportedError',\r\n );\r\n};\r\n\r\nconst internalDigest = (\r\n algorithm: SubtleAlgorithm,\r\n data: BufferLike,\r\n outputLength?: number,\r\n): ArrayBuffer => {\r\n const normalizedHashName = normalizeHashName(algorithm.name);\r\n const hash = createHash(\r\n normalizedHashName,\r\n outputLength ? { outputLength } : undefined,\r\n );\r\n hash.update(bufferLikeToArrayBuffer(data));\r\n const result = hash.digest();\r\n const arrayBuffer = new ArrayBuffer(result.length);\r\n const view = new Uint8Array(arrayBuffer);\r\n view.set(result);\r\n return arrayBuffer;\r\n};\r\n\r\nexport function hash(\r\n algorithm: string,\r\n data: BinaryLike,\r\n outputEncoding: Encoding,\r\n): string;\r\nexport function hash(algorithm: string, data: BinaryLike): Buffer;\r\nexport function hash(\r\n algorithm: string,\r\n data: BinaryLike,\r\n outputEncoding?: Encoding,\r\n): string | Buffer {\r\n const h = createHash(algorithm);\r\n h.update(data);\r\n return outputEncoding ? h.digest(outputEncoding) : h.digest();\r\n}\r\n\r\nexport const hashExports = {\r\n createHash,\r\n getHashes,\r\n hash,\r\n asyncDigest,\r\n};\r\n"],"mappings":"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","ignoreList":[]}
@@ -11,7 +11,7 @@ var _reactNativeNitroModules = require("react-native-nitro-modules");
11
11
  var _conversion = require("./utils/conversion");
12
12
  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; }
13
13
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
14
- 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); }
14
+ 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); }
15
15
  class Hmac extends _readableStream.Stream.Transform {
16
16
  validate(args) {
17
17
  if (typeof args.algorithm !== 'string' || args.algorithm.length === 0) throw new Error('Algorithm must be a non-empty string');
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeBuffer","require","_readableStream","_reactNativeNitroModules","_conversion","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","Hmac","Stream","Transform","validate","args","algorithm","length","Error","key","undefined","constructor","options","native","NitroModules","createHybridObject","createHmac","binaryLikeToArrayBuffer","update","data","inputEncoding","defaultEncoding","digest","encoding","nativeDigest","ab2str","Buffer","from","_transform","chunk","callback","_flush","push","hmacExports","exports"],"sources":["hmac.ts"],"sourcesContent":["import { Buffer } from '@craftzdog/react-native-buffer';\r\nimport { Stream } from 'readable-stream';\r\nimport { NitroModules } from 'react-native-nitro-modules';\r\nimport type { TransformOptions } from 'readable-stream';\r\nimport type { Hmac as NativeHmac } from './specs/v1/hmac.nitro';\r\nimport type { BinaryLike, Encoding } from './utils/types';\r\nimport { ab2str, binaryLikeToArrayBuffer } from './utils/conversion';\r\n\r\ninterface HmacArgs {\r\n algorithm: string;\r\n key: BinaryLike;\r\n options?: TransformOptions;\r\n}\r\n\r\nclass Hmac extends Stream.Transform {\r\n private algorithm: string;\r\n private key: BinaryLike;\r\n private native: NativeHmac;\r\n\r\n private validate(args: HmacArgs) {\r\n if (typeof args.algorithm !== 'string' || args.algorithm.length === 0)\r\n throw new Error('Algorithm must be a non-empty string');\r\n if (args.key === null || args.key === undefined)\r\n throw new Error('Key must not be null or undefined');\r\n }\r\n\r\n /**\r\n * @internal use `createHmac()` instead\r\n */\r\n private constructor(args: HmacArgs) {\r\n super(args.options);\r\n\r\n this.validate(args);\r\n\r\n this.algorithm = args.algorithm;\r\n this.key = args.key;\r\n\r\n this.native = NitroModules.createHybridObject<NativeHmac>('Hmac');\r\n this.native.createHmac(this.algorithm, binaryLikeToArrayBuffer(this.key));\r\n }\r\n\r\n /**\r\n * Updates the `Hmac` content with the given `data`, the encoding of which is given in `inputEncoding`.\r\n * If `encoding` is not provided, and the `data` is a string, an encoding of `'utf8'` is enforced.\r\n * If `data` is a `Buffer`, `TypedArray`, or`DataView`, then `inputEncoding` is ignored.\r\n *\r\n * This can be called many times with new data as it is streamed.\r\n * @since v1.0.0\r\n * @param inputEncoding The `encoding` of the `data` string.\r\n */\r\n update(data: BinaryLike): Hmac;\r\n update(data: BinaryLike, inputEncoding: Encoding): Hmac;\r\n update(data: BinaryLike, inputEncoding?: Encoding): Hmac {\r\n const defaultEncoding: Encoding = 'utf8';\r\n inputEncoding = inputEncoding ?? defaultEncoding;\r\n\r\n // Optimize: pass UTF-8 strings directly to C++ without conversion\r\n if (typeof data === 'string' && inputEncoding === 'utf8') {\r\n this.native.update(data);\r\n } else {\r\n this.native.update(binaryLikeToArrayBuffer(data, inputEncoding));\r\n }\r\n\r\n return this; // to support chaining syntax createHmac().update().digest()\r\n }\r\n\r\n /**\r\n * Calculates the HMAC digest of all of the data passed using `hmac.update()`.\r\n * If `encoding` is provided a string is returned; otherwise a `Buffer` is returned;\r\n *\r\n * The `Hmac` object can not be used again after `hmac.digest()` has been\r\n * called. Multiple calls to `hmac.digest()` will result in an error being thrown.\r\n * @since v1.0.0\r\n * @param encoding The `encoding` of the return value.\r\n */\r\n digest(): Buffer;\r\n digest(encoding: Encoding): string;\r\n digest(encoding?: Encoding): Buffer | string {\r\n const nativeDigest = this.native.digest();\r\n\r\n if (encoding && encoding !== 'buffer') {\r\n return ab2str(nativeDigest, encoding);\r\n }\r\n\r\n return Buffer.from(nativeDigest);\r\n }\r\n\r\n // stream interface\r\n _transform(\r\n chunk: BinaryLike,\r\n encoding: BufferEncoding,\r\n callback: () => void,\r\n ) {\r\n this.update(chunk, encoding as Encoding);\r\n callback();\r\n }\r\n _flush(callback: () => void) {\r\n this.push(this.digest());\r\n callback();\r\n }\r\n}\r\n\r\n/**\r\n * Creates and returns an `Hmac` object that uses the given `algorithm` and `key`.\r\n * Optional `options` argument controls stream behavior.\r\n *\r\n * The `algorithm` is dependent on the available algorithms supported by the\r\n * version of OpenSSL on the platform. Examples are `'sha256'`, `'sha512'`, etc.\r\n * On recent releases of OpenSSL, `openssl list -digest-algorithms` will\r\n * display the available digest algorithms.\r\n *\r\n * Example: generating the sha256 HMAC of a file\r\n *\r\n * ```js\r\n * import crypto from 'react-native-quick-crypto';\r\n *\r\n * const hmac = crypto.createHmac('sha256', 'secret-key');\r\n * hmac.update('message to hash');\r\n * const digest = hmac.digest('hex');\r\n * console.log(digest); // prints HMAC digest in hexadecimal format\r\n * ```\r\n * @since v1.0.0\r\n * @param options `stream.transform` options\r\n */\r\nexport function createHmac(\r\n algorithm: string,\r\n key: BinaryLike,\r\n options?: TransformOptions,\r\n): Hmac {\r\n // @ts-expect-error private constructor\r\n return new Hmac({\r\n algorithm,\r\n key,\r\n options,\r\n });\r\n}\r\n\r\nexport const hmacExports = {\r\n createHmac,\r\n};\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeBuffer","require","_readableStream","_reactNativeNitroModules","_conversion","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","Hmac","Stream","Transform","validate","args","algorithm","length","Error","key","undefined","constructor","options","native","NitroModules","createHybridObject","createHmac","binaryLikeToArrayBuffer","update","data","inputEncoding","defaultEncoding","digest","encoding","nativeDigest","ab2str","Buffer","from","_transform","chunk","callback","_flush","push","hmacExports","exports"],"sources":["hmac.ts"],"sourcesContent":["import { Buffer } from '@craftzdog/react-native-buffer';\r\nimport { Stream } from 'readable-stream';\r\nimport { NitroModules } from 'react-native-nitro-modules';\r\nimport type { TransformOptions } from 'readable-stream';\r\nimport type { Hmac as NativeHmac } from './specs/v1/hmac.nitro';\r\nimport type { BinaryLike, Encoding } from './utils/types';\r\nimport { ab2str, binaryLikeToArrayBuffer } from './utils/conversion';\r\n\r\ninterface HmacArgs {\r\n algorithm: string;\r\n key: BinaryLike;\r\n options?: TransformOptions;\r\n}\r\n\r\nclass Hmac extends Stream.Transform {\r\n private algorithm: string;\r\n private key: BinaryLike;\r\n private native: NativeHmac;\r\n\r\n private validate(args: HmacArgs) {\r\n if (typeof args.algorithm !== 'string' || args.algorithm.length === 0)\r\n throw new Error('Algorithm must be a non-empty string');\r\n if (args.key === null || args.key === undefined)\r\n throw new Error('Key must not be null or undefined');\r\n }\r\n\r\n /**\r\n * @internal use `createHmac()` instead\r\n */\r\n private constructor(args: HmacArgs) {\r\n super(args.options);\r\n\r\n this.validate(args);\r\n\r\n this.algorithm = args.algorithm;\r\n this.key = args.key;\r\n\r\n this.native = NitroModules.createHybridObject<NativeHmac>('Hmac');\r\n this.native.createHmac(this.algorithm, binaryLikeToArrayBuffer(this.key));\r\n }\r\n\r\n /**\r\n * Updates the `Hmac` content with the given `data`, the encoding of which is given in `inputEncoding`.\r\n * If `encoding` is not provided, and the `data` is a string, an encoding of `'utf8'` is enforced.\r\n * If `data` is a `Buffer`, `TypedArray`, or`DataView`, then `inputEncoding` is ignored.\r\n *\r\n * This can be called many times with new data as it is streamed.\r\n * @since v1.0.0\r\n * @param inputEncoding The `encoding` of the `data` string.\r\n */\r\n update(data: BinaryLike): Hmac;\r\n update(data: BinaryLike, inputEncoding: Encoding): Hmac;\r\n update(data: BinaryLike, inputEncoding?: Encoding): Hmac {\r\n const defaultEncoding: Encoding = 'utf8';\r\n inputEncoding = inputEncoding ?? defaultEncoding;\r\n\r\n // Optimize: pass UTF-8 strings directly to C++ without conversion\r\n if (typeof data === 'string' && inputEncoding === 'utf8') {\r\n this.native.update(data);\r\n } else {\r\n this.native.update(binaryLikeToArrayBuffer(data, inputEncoding));\r\n }\r\n\r\n return this; // to support chaining syntax createHmac().update().digest()\r\n }\r\n\r\n /**\r\n * Calculates the HMAC digest of all of the data passed using `hmac.update()`.\r\n * If `encoding` is provided a string is returned; otherwise a `Buffer` is returned;\r\n *\r\n * The `Hmac` object can not be used again after `hmac.digest()` has been\r\n * called. Multiple calls to `hmac.digest()` will result in an error being thrown.\r\n * @since v1.0.0\r\n * @param encoding The `encoding` of the return value.\r\n */\r\n digest(): Buffer;\r\n digest(encoding: Encoding): string;\r\n digest(encoding?: Encoding): Buffer | string {\r\n const nativeDigest = this.native.digest();\r\n\r\n if (encoding && encoding !== 'buffer') {\r\n return ab2str(nativeDigest, encoding);\r\n }\r\n\r\n return Buffer.from(nativeDigest);\r\n }\r\n\r\n // stream interface\r\n _transform(\r\n chunk: BinaryLike,\r\n encoding: BufferEncoding,\r\n callback: () => void,\r\n ) {\r\n this.update(chunk, encoding as Encoding);\r\n callback();\r\n }\r\n _flush(callback: () => void) {\r\n this.push(this.digest());\r\n callback();\r\n }\r\n}\r\n\r\n/**\r\n * Creates and returns an `Hmac` object that uses the given `algorithm` and `key`.\r\n * Optional `options` argument controls stream behavior.\r\n *\r\n * The `algorithm` is dependent on the available algorithms supported by the\r\n * version of OpenSSL on the platform. Examples are `'sha256'`, `'sha512'`, etc.\r\n * On recent releases of OpenSSL, `openssl list -digest-algorithms` will\r\n * display the available digest algorithms.\r\n *\r\n * Example: generating the sha256 HMAC of a file\r\n *\r\n * ```js\r\n * import crypto from 'react-native-quick-crypto';\r\n *\r\n * const hmac = crypto.createHmac('sha256', 'secret-key');\r\n * hmac.update('message to hash');\r\n * const digest = hmac.digest('hex');\r\n * console.log(digest); // prints HMAC digest in hexadecimal format\r\n * ```\r\n * @since v1.0.0\r\n * @param options `stream.transform` options\r\n */\r\nexport function createHmac(\r\n algorithm: string,\r\n key: BinaryLike,\r\n options?: TransformOptions,\r\n): Hmac {\r\n // @ts-expect-error private constructor\r\n return new Hmac({\r\n algorithm,\r\n key,\r\n options,\r\n });\r\n}\r\n\r\nexport const hmacExports = {\r\n createHmac,\r\n};\r\n"],"mappings":"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","ignoreList":[]}
@@ -266,7 +266,8 @@ Object.keys(subtle).forEach(function (key) {
266
266
  }
267
267
  });
268
268
  });
269
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
269
+ var cache;
270
+ function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, default: e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
270
271
  // polyfill imports
271
272
 
272
273
  // API imports
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,IAAAA,kBAAA,GAAAC,OAAA;AAGA,IAAAC,YAAA,GAAAC,uBAAA,CAAAF,OAAA;AA+GAG,MAAA,CAAAC,IAAA,CAAAH,YAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,YAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,YAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AA9GA,IAAAF,IAAA,GAAAF,uBAAA,CAAAF,OAAA;AAqHAG,MAAA,CAAAC,IAAA,CAAAA,IAAA,EAAAC,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAF,IAAA,CAAAE,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAV,IAAA,CAAAE,GAAA;IAAA;EAAA;AAAA;AApHA,IAAAS,MAAA,GAAAb,uBAAA,CAAAF,OAAA;AA8GAG,MAAA,CAAAC,IAAA,CAAAW,MAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,MAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,MAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AA7GA,IAAAU,MAAA,GAAAd,uBAAA,CAAAF,OAAA;AAiHAG,MAAA,CAAAC,IAAA,CAAAY,MAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAU,MAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,MAAA,CAAAV,GAAA;IAAA;EAAA;AAAA;AAhHA,IAAAW,EAAA,GAAAf,uBAAA,CAAAF,OAAA;AAiHAG,MAAA,CAAAC,IAAA,CAAAa,EAAA,EAAAZ,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAW,EAAA,CAAAX,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAG,EAAA,CAAAX,GAAA;IAAA;EAAA;AAAA;AAhHA,IAAAY,KAAA,GAAAlB,OAAA;AAkHAG,MAAA,CAAAC,IAAA,CAAAc,KAAA,EAAAb,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAY,KAAA,CAAAZ,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAI,KAAA,CAAAZ,GAAA;IAAA;EAAA;AAAA;AAjHA,IAAAa,KAAA,GAAAnB,OAAA;AAkHAG,MAAA,CAAAC,IAAA,CAAAe,KAAA,EAAAd,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAa,KAAA,CAAAb,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAK,KAAA,CAAAb,GAAA;IAAA;EAAA;AAAA;AAjHA,IAAAc,IAAA,GAAAlB,uBAAA,CAAAF,OAAA;AAkHAG,MAAA,CAAAC,IAAA,CAAAgB,IAAA,EAAAf,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAc,IAAA,CAAAd,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAM,IAAA,CAAAd,GAAA;IAAA;EAAA;AAAA;AAjHA,IAAAe,MAAA,GAAAnB,uBAAA,CAAAF,OAAA;AAkHAG,MAAA,CAAAC,IAAA,CAAAiB,MAAA,EAAAhB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAe,MAAA,CAAAf,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAO,MAAA,CAAAf,GAAA;IAAA;EAAA;AAAA;AAjHA,IAAAgB,KAAA,GAAApB,uBAAA,CAAAF,OAAA;AAkHAG,MAAA,CAAAC,IAAA,CAAAkB,KAAA,EAAAjB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAgB,KAAA,CAAAhB,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAQ,KAAA,CAAAhB,GAAA;IAAA;EAAA;AAAA;AAjHA,IAAAiB,MAAA,GAAArB,uBAAA,CAAAF,OAAA;AAkHAG,MAAA,CAAAC,IAAA,CAAAmB,MAAA,EAAAlB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAiB,MAAA,CAAAjB,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAS,MAAA,CAAAjB,GAAA;IAAA;EAAA;AAAA;AAjHA,IAAAkB,MAAA,GAAAtB,uBAAA,CAAAF,OAAA;AAkHAG,MAAA,CAAAC,IAAA,CAAAoB,MAAA,EAAAnB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAkB,MAAA,CAAAlB,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAU,MAAA,CAAAlB,GAAA;IAAA;EAAA;AAAA;AAjHA,IAAAmB,IAAA,GAAAvB,uBAAA,CAAAF,OAAA;AAkHAG,MAAA,CAAAC,IAAA,CAAAqB,IAAA,EAAApB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAmB,IAAA,CAAAnB,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAW,IAAA,CAAAnB,GAAA;IAAA;EAAA;AAAA;AAjHA,IAAAoB,EAAA,GAAAxB,uBAAA,CAAAF,OAAA;AAmHAG,MAAA,CAAAC,IAAA,CAAAsB,EAAA,EAAArB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAoB,EAAA,CAAApB,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAY,EAAA,CAAApB,GAAA;IAAA;EAAA;AAAA;AAlHA,IAAAqB,KAAA,GAAAzB,uBAAA,CAAAF,OAAA;AAmHAG,MAAA,CAAAC,IAAA,CAAAuB,KAAA,EAAAtB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAqB,KAAA,CAAArB,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAa,KAAA,CAAArB,GAAA;IAAA;EAAA;AAAA;AAlHA,IAAAsB,YAAA,GAAA5B,OAAA;AACA,IAAA6B,gBAAA,GAAA7B,OAAA;AACA,IAAA8B,GAAA,GAAA9B,OAAA;AACA,IAAA+B,UAAA,GAAA/B,OAAA;AAGA,IAAAgC,KAAA,GAAA9B,uBAAA,CAAAF,OAAA;AA6GAG,MAAA,CAAAC,IAAA,CAAA4B,KAAA,EAAA3B,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAA0B,KAAA,CAAA1B,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAkB,KAAA,CAAA1B,GAAA;IAAA;EAAA;AAAA;AA5GA,IAAA2B,MAAA,GAAA/B,uBAAA,CAAAF,OAAA;AA6GAG,MAAA,CAAAC,IAAA,CAAA6B,MAAA,EAAA5B,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAA2B,MAAA,CAAA3B,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAmB,MAAA,CAAA3B,GAAA;IAAA;EAAA;AAAA;AAAyB,IAAA4B,KAAA;AAAA,SAAAhC,wBAAAiC,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAE,UAAA,SAAAF,CAAA,MAAAG,CAAA,EAAAC,CAAA,EAAAC,CAAA,GAAArC,MAAA,CAAAS,cAAA,EAAA6B,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAR,CAAA,QAAAhC,MAAA,CAAAgC,CAAA,MAAAA,CAAA,SAAAM,CAAA,MAAAP,KAAA,yBAAAU,OAAA,KAAAV,KAAA,OAAAU,OAAA,KAAAV,KAAA,QAAAA,KAAA,CAAAW,GAAA,CAAAV,CAAA,UAAAD,KAAA,CAAApB,GAAA,CAAAqB,CAAA,GAAAD,KAAA,CAAAY,GAAA,CAAAX,CAAA,EAAAM,CAAA,UAAAF,CAAA,IAAAJ,CAAA,gBAAAI,CAAA,OAAA/B,cAAA,CAAAC,IAAA,CAAA0B,CAAA,EAAAI,CAAA,OAAAD,CAAA,GAAAE,CAAA,IAAArC,MAAA,CAAA4C,wBAAA,CAAAZ,CAAA,EAAAI,CAAA,OAAAD,CAAA,CAAAxB,GAAA,IAAAwB,CAAA,CAAAQ,GAAA,IAAAN,CAAA,CAAAC,CAAA,EAAAF,CAAA,EAAAD,CAAA,IAAAG,CAAA,CAAAF,CAAA,IAAAJ,CAAA,CAAAI,CAAA,WAAAE,CAAA;AAvIzB;;AAGA;;AAqBA;;AAIA;AACA;AACA;AACA;AACA,MAAMO,WAAW,GAAG;EAClB,GAAG/C,YAAY;EACf,GAAGG,IAAI;EACP,GAAGW,MAAM;EACT,GAAGC,MAAM;EACT,GAAGC,EAAE;EACL,GAAGgC,iBAAI;EACP,GAAGC,iBAAI;EACP,GAAG9B,IAAI;EACP,GAAGC,MAAM;EACT,GAAGC,KAAK;EACR,GAAGC,MAAM;EACT,GAAGC,MAAM;EACT,GAAGC,IAAI;EACP,GAAGC,EAAE;EACL,GAAGC,KAAK;EACR,GAAGK,KAAK;EACR,GAAGC,MAAM;EACTkB,WAAW,EAAXA,wBAAW;EACXC,eAAe,EAAfA,gCAAe;EACfC,SAAS,EAATA,aAAS;EACTC,SAAS,EAATA,oBAAS;EACTC,MAAM,EAANA;AACF,CAAC;AAUD;AACA;AACA;AACA;AACA,MAAMC,4BAA4B,GAAGA,CAAA,KAAM;EACzC,MAAMC,CAAC,GAAGC,MAAuB;EACjC,IAAI,OAAOD,CAAC,CAACE,qBAAqB,KAAK,UAAU,EAAE;IACjD;EACF;EACA;EACA,MAAM;IAAEC,cAAc;IAAEC;EAAe,CAAC,GAAG7D,OAAO,CAAC,oBAAoB,CAGtE;EACDyD,CAAC,CAACE,qBAAqB,GAAG,CAACG,MAAmB,EAAEC,OAAiB,KAC/DH,cAAc,CAACE,MAAM,EAAEC,OAAO,GAAG,WAAW,GAAG,QAAQ,CAAC;EAC1DN,CAAC,CAACO,mBAAmB,GAAG,CAACC,GAAW,EAAEC,gBAA0B,KAAK;IACnE,MAAMC,KAAK,GAAGD,gBAAgB,GAAGD,GAAG,CAACG,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,GAAGH,GAAG;IACjE,OAAOJ,cAAc,CAACM,KAAK,EAAE,QAAQ,CAAC;EACxC,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACO,MAAME,OAAO,GAAGA,CAAA,KAAM;EAC3B;EACAX,MAAM,CAACH,MAAM,GAAGA,yBAAM;;EAEtB;EACAG,MAAM,CAACY,MAAM,GAAGtB,WAAW;;EAE3B;EACA;EACAhD,OAAO,CAAC,2BAA2B,CAAC;EACpCwD,4BAA4B,CAAC,CAAC;AAChC,CAAC;;AAED;AAAA7C,OAAA,CAAA0D,OAAA,GAAAA,OAAA;AACA,IAAIX,MAAM,CAACa,OAAO,IAAI,IAAI,EAAE;EAC1B;EACAb,MAAM,CAACa,OAAO,GAAG,CAAC,CAAC;AACrB;AACA,IAAIb,MAAM,CAACa,OAAO,CAACC,QAAQ,IAAI,IAAI,EAAE;EACnCd,MAAM,CAACa,OAAO,CAACC,QAAQ,GAAGC,YAAY;AACxC;;AAEA;AAAA,IAAAC,QAAA,GAAA/D,OAAA,CAAAgC,OAAA,GACeK,WAAW;AA0B1B;AACA2B,MAAM,CAAChE,OAAO,GAAGqC,WAAW;AAC5B2B,MAAM,CAAChE,OAAO,CAACgC,OAAO,GAAGK,WAAW;AACpC2B,MAAM,CAAChE,OAAO,CAAC0D,OAAO,GAAGA,OAAO","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":"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","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',