@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":["_reactNativeNitroModules","require","_reactNativeBuffer","_dhGroups","_conversion","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","DiffieHellman","constructor","sizeOrPrime","generator","encoding","_hybrid","NitroModules","createHybridObject","gen","initWithSize","primeBuf","Buffer","isBuffer","from","genBuf","undefined","init","toArrayBuffer","generateKeys","keys","toString","computeSecret","otherPublicKey","inputEncoding","outputEncoding","keyBuf","secret","getPrime","p","getGenerator","g","getPublicKey","getPrivateKey","setPublicKey","publicKey","setPrivateKey","privateKey","verifyError","getVerifyError","exports","createDiffieHellman","primeOrSize","primeEncodingOrGenerator","_generatorEncoding","prime","generatorVal","getDiffieHellman","groupName","group","DH_GROUPS","Error"],"sources":["diffie-hellman.ts"],"sourcesContent":["import { NitroModules } from 'react-native-nitro-modules';\r\nimport type { DiffieHellman as DiffieHellmanInterface } from './specs/v1/diffie-hellman.nitro';\r\nimport { Buffer } from '@craftzdog/react-native-buffer';\r\nimport { DH_GROUPS } from './dh-groups';\r\nimport { toArrayBuffer } from './utils/conversion';\r\n\r\nexport class DiffieHellman {\r\n private _hybrid: DiffieHellmanInterface;\r\n\r\n constructor(\r\n sizeOrPrime: number | Buffer | string,\r\n generator?: number | Buffer | string,\r\n encoding?: BufferEncoding,\r\n ) {\r\n this._hybrid =\r\n NitroModules.createHybridObject<DiffieHellmanInterface>('DiffieHellman');\r\n\r\n if (typeof sizeOrPrime === 'number') {\r\n const gen = typeof generator === 'number' ? generator : 2;\r\n this._hybrid.initWithSize(sizeOrPrime, gen);\r\n } else {\r\n let primeBuf: Buffer;\r\n if (Buffer.isBuffer(sizeOrPrime)) {\r\n primeBuf = sizeOrPrime;\r\n } else {\r\n primeBuf = Buffer.from(sizeOrPrime, encoding as BufferEncoding);\r\n }\r\n\r\n let genBuf: Buffer;\r\n if (generator === undefined) {\r\n genBuf = Buffer.from([2]);\r\n } else if (typeof generator === 'number') {\r\n genBuf = Buffer.from([generator]);\r\n } else if (Buffer.isBuffer(generator)) {\r\n genBuf = generator;\r\n } else {\r\n genBuf = Buffer.from(generator, encoding as BufferEncoding);\r\n }\r\n\r\n this._hybrid.init(toArrayBuffer(primeBuf), toArrayBuffer(genBuf));\r\n }\r\n }\r\n\r\n generateKeys(encoding?: BufferEncoding): Buffer | string {\r\n const keys = Buffer.from(this._hybrid.generateKeys());\r\n if (encoding) return keys.toString(encoding);\r\n return keys;\r\n }\r\n\r\n computeSecret(\r\n otherPublicKey: Buffer | string,\r\n inputEncoding?: BufferEncoding,\r\n outputEncoding?: BufferEncoding,\r\n ): Buffer | string {\r\n let keyBuf: Buffer;\r\n if (Buffer.isBuffer(otherPublicKey)) {\r\n keyBuf = otherPublicKey;\r\n } else {\r\n keyBuf = Buffer.from(otherPublicKey, inputEncoding);\r\n }\r\n\r\n const secret = Buffer.from(\r\n this._hybrid.computeSecret(toArrayBuffer(keyBuf)),\r\n );\r\n if (outputEncoding) return secret.toString(outputEncoding);\r\n return secret;\r\n }\r\n\r\n getPrime(encoding?: BufferEncoding): Buffer | string {\r\n const p = Buffer.from(this._hybrid.getPrime());\r\n if (encoding) return p.toString(encoding);\r\n return p;\r\n }\r\n\r\n getGenerator(encoding?: BufferEncoding): Buffer | string {\r\n const g = Buffer.from(this._hybrid.getGenerator());\r\n if (encoding) return g.toString(encoding);\r\n return g;\r\n }\r\n\r\n getPublicKey(encoding?: BufferEncoding): Buffer | string {\r\n const p = Buffer.from(this._hybrid.getPublicKey());\r\n if (encoding) return p.toString(encoding);\r\n return p;\r\n }\r\n\r\n getPrivateKey(encoding?: BufferEncoding): Buffer | string {\r\n const p = Buffer.from(this._hybrid.getPrivateKey());\r\n if (encoding) return p.toString(encoding);\r\n return p;\r\n }\r\n\r\n setPublicKey(publicKey: Buffer | string, encoding?: BufferEncoding): void {\r\n let keyBuf: Buffer;\r\n if (Buffer.isBuffer(publicKey)) {\r\n keyBuf = publicKey;\r\n } else {\r\n keyBuf = Buffer.from(publicKey, encoding);\r\n }\r\n this._hybrid.setPublicKey(toArrayBuffer(keyBuf));\r\n }\r\n\r\n setPrivateKey(privateKey: Buffer | string, encoding?: BufferEncoding): void {\r\n let keyBuf: Buffer;\r\n if (Buffer.isBuffer(privateKey)) {\r\n keyBuf = privateKey;\r\n } else {\r\n keyBuf = Buffer.from(privateKey, encoding);\r\n }\r\n this._hybrid.setPrivateKey(toArrayBuffer(keyBuf));\r\n }\r\n\r\n get verifyError(): number {\r\n return this._hybrid.getVerifyError();\r\n }\r\n}\r\n\r\nexport function createDiffieHellman(\r\n primeOrSize: number | string | Buffer,\r\n primeEncodingOrGenerator?: string | number | Buffer,\r\n generator?: number | string | Buffer,\r\n _generatorEncoding?: string,\r\n): DiffieHellman {\r\n if (typeof primeOrSize === 'number') {\r\n const gen =\r\n typeof primeEncodingOrGenerator === 'number'\r\n ? primeEncodingOrGenerator\r\n : 2;\r\n return new DiffieHellman(primeOrSize, gen);\r\n }\r\n\r\n // Standardize arguments for String/Buffer prime\r\n // createDiffieHellman(prime, [encoding], [generator], [encoding])\r\n\r\n let prime: Buffer;\r\n let generatorVal: Buffer | number | undefined;\r\n\r\n if (Buffer.isBuffer(primeOrSize)) {\r\n prime = primeOrSize;\r\n // 2nd arg is generator if not string (encoding)\r\n if (\r\n primeEncodingOrGenerator !== undefined &&\r\n typeof primeEncodingOrGenerator !== 'string'\r\n ) {\r\n generatorVal = primeEncodingOrGenerator as Buffer | number;\r\n } else if (generator !== undefined) {\r\n generatorVal = generator as Buffer | number;\r\n } else {\r\n generatorVal = 2;\r\n }\r\n } else {\r\n // String prime\r\n const encoding =\r\n typeof primeEncodingOrGenerator === 'string'\r\n ? primeEncodingOrGenerator\r\n : 'utf8'; // Defaulting to utf8 or hex? Node default is 'binary' usually but utf8 safer for TS. Node docs say: \"If no encoding is specified, 'binary' is used.\"\r\n // We'll trust user passed encoding if it's a string, otherwise handle it.\r\n prime = Buffer.from(primeOrSize, encoding as BufferEncoding);\r\n\r\n // Generator handling in this case\r\n if (generator !== undefined) {\r\n generatorVal = generator as Buffer | number;\r\n if (typeof generator === 'string' && _generatorEncoding) {\r\n generatorVal = Buffer.from(\r\n generator,\r\n _generatorEncoding as BufferEncoding,\r\n );\r\n } else if (typeof generator === 'string') {\r\n // string with no encoding, assume same as prime? or utf8?\r\n generatorVal = Buffer.from(generator, encoding as BufferEncoding);\r\n }\r\n } else if (\r\n typeof primeEncodingOrGenerator !== 'string' &&\r\n primeEncodingOrGenerator !== undefined\r\n ) {\r\n // 2nd arg was generator\r\n generatorVal = primeEncodingOrGenerator as number;\r\n } else {\r\n generatorVal = 2;\r\n }\r\n }\r\n\r\n return new DiffieHellman(prime, generatorVal);\r\n}\r\n\r\nexport function getDiffieHellman(groupName: string): DiffieHellman {\r\n const group = DH_GROUPS[groupName];\r\n if (!group) {\r\n throw new Error(`Unknown group: ${groupName}`);\r\n }\r\n // group.prime and group.generator are hex strings\r\n return new DiffieHellman(group.prime, group.generator, 'hex');\r\n}\r\n\r\nexport { getDiffieHellman as createDiffieHellmanGroup };\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeNitroModules","require","_reactNativeBuffer","_dhGroups","_conversion","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","DiffieHellman","constructor","sizeOrPrime","generator","encoding","_hybrid","NitroModules","createHybridObject","gen","initWithSize","primeBuf","Buffer","isBuffer","from","genBuf","undefined","init","toArrayBuffer","generateKeys","keys","toString","computeSecret","otherPublicKey","inputEncoding","outputEncoding","keyBuf","secret","getPrime","p","getGenerator","g","getPublicKey","getPrivateKey","setPublicKey","publicKey","setPrivateKey","privateKey","verifyError","getVerifyError","exports","createDiffieHellman","primeOrSize","primeEncodingOrGenerator","_generatorEncoding","prime","generatorVal","getDiffieHellman","groupName","group","DH_GROUPS","Error"],"sources":["diffie-hellman.ts"],"sourcesContent":["import { NitroModules } from 'react-native-nitro-modules';\r\nimport type { DiffieHellman as DiffieHellmanInterface } from './specs/v1/diffie-hellman.nitro';\r\nimport { Buffer } from '@craftzdog/react-native-buffer';\r\nimport { DH_GROUPS } from './dh-groups';\r\nimport { toArrayBuffer } from './utils/conversion';\r\n\r\nexport class DiffieHellman {\r\n private _hybrid: DiffieHellmanInterface;\r\n\r\n constructor(\r\n sizeOrPrime: number | Buffer | string,\r\n generator?: number | Buffer | string,\r\n encoding?: BufferEncoding,\r\n ) {\r\n this._hybrid =\r\n NitroModules.createHybridObject<DiffieHellmanInterface>('DiffieHellman');\r\n\r\n if (typeof sizeOrPrime === 'number') {\r\n const gen = typeof generator === 'number' ? generator : 2;\r\n this._hybrid.initWithSize(sizeOrPrime, gen);\r\n } else {\r\n let primeBuf: Buffer;\r\n if (Buffer.isBuffer(sizeOrPrime)) {\r\n primeBuf = sizeOrPrime;\r\n } else {\r\n primeBuf = Buffer.from(sizeOrPrime, encoding as BufferEncoding);\r\n }\r\n\r\n let genBuf: Buffer;\r\n if (generator === undefined) {\r\n genBuf = Buffer.from([2]);\r\n } else if (typeof generator === 'number') {\r\n genBuf = Buffer.from([generator]);\r\n } else if (Buffer.isBuffer(generator)) {\r\n genBuf = generator;\r\n } else {\r\n genBuf = Buffer.from(generator, encoding as BufferEncoding);\r\n }\r\n\r\n this._hybrid.init(toArrayBuffer(primeBuf), toArrayBuffer(genBuf));\r\n }\r\n }\r\n\r\n generateKeys(encoding?: BufferEncoding): Buffer | string {\r\n const keys = Buffer.from(this._hybrid.generateKeys());\r\n if (encoding) return keys.toString(encoding);\r\n return keys;\r\n }\r\n\r\n computeSecret(\r\n otherPublicKey: Buffer | string,\r\n inputEncoding?: BufferEncoding,\r\n outputEncoding?: BufferEncoding,\r\n ): Buffer | string {\r\n let keyBuf: Buffer;\r\n if (Buffer.isBuffer(otherPublicKey)) {\r\n keyBuf = otherPublicKey;\r\n } else {\r\n keyBuf = Buffer.from(otherPublicKey, inputEncoding);\r\n }\r\n\r\n const secret = Buffer.from(\r\n this._hybrid.computeSecret(toArrayBuffer(keyBuf)),\r\n );\r\n if (outputEncoding) return secret.toString(outputEncoding);\r\n return secret;\r\n }\r\n\r\n getPrime(encoding?: BufferEncoding): Buffer | string {\r\n const p = Buffer.from(this._hybrid.getPrime());\r\n if (encoding) return p.toString(encoding);\r\n return p;\r\n }\r\n\r\n getGenerator(encoding?: BufferEncoding): Buffer | string {\r\n const g = Buffer.from(this._hybrid.getGenerator());\r\n if (encoding) return g.toString(encoding);\r\n return g;\r\n }\r\n\r\n getPublicKey(encoding?: BufferEncoding): Buffer | string {\r\n const p = Buffer.from(this._hybrid.getPublicKey());\r\n if (encoding) return p.toString(encoding);\r\n return p;\r\n }\r\n\r\n getPrivateKey(encoding?: BufferEncoding): Buffer | string {\r\n const p = Buffer.from(this._hybrid.getPrivateKey());\r\n if (encoding) return p.toString(encoding);\r\n return p;\r\n }\r\n\r\n setPublicKey(publicKey: Buffer | string, encoding?: BufferEncoding): void {\r\n let keyBuf: Buffer;\r\n if (Buffer.isBuffer(publicKey)) {\r\n keyBuf = publicKey;\r\n } else {\r\n keyBuf = Buffer.from(publicKey, encoding);\r\n }\r\n this._hybrid.setPublicKey(toArrayBuffer(keyBuf));\r\n }\r\n\r\n setPrivateKey(privateKey: Buffer | string, encoding?: BufferEncoding): void {\r\n let keyBuf: Buffer;\r\n if (Buffer.isBuffer(privateKey)) {\r\n keyBuf = privateKey;\r\n } else {\r\n keyBuf = Buffer.from(privateKey, encoding);\r\n }\r\n this._hybrid.setPrivateKey(toArrayBuffer(keyBuf));\r\n }\r\n\r\n get verifyError(): number {\r\n return this._hybrid.getVerifyError();\r\n }\r\n}\r\n\r\nexport function createDiffieHellman(\r\n primeOrSize: number | string | Buffer,\r\n primeEncodingOrGenerator?: string | number | Buffer,\r\n generator?: number | string | Buffer,\r\n _generatorEncoding?: string,\r\n): DiffieHellman {\r\n if (typeof primeOrSize === 'number') {\r\n const gen =\r\n typeof primeEncodingOrGenerator === 'number'\r\n ? primeEncodingOrGenerator\r\n : 2;\r\n return new DiffieHellman(primeOrSize, gen);\r\n }\r\n\r\n // Standardize arguments for String/Buffer prime\r\n // createDiffieHellman(prime, [encoding], [generator], [encoding])\r\n\r\n let prime: Buffer;\r\n let generatorVal: Buffer | number | undefined;\r\n\r\n if (Buffer.isBuffer(primeOrSize)) {\r\n prime = primeOrSize;\r\n // 2nd arg is generator if not string (encoding)\r\n if (\r\n primeEncodingOrGenerator !== undefined &&\r\n typeof primeEncodingOrGenerator !== 'string'\r\n ) {\r\n generatorVal = primeEncodingOrGenerator as Buffer | number;\r\n } else if (generator !== undefined) {\r\n generatorVal = generator as Buffer | number;\r\n } else {\r\n generatorVal = 2;\r\n }\r\n } else {\r\n // String prime\r\n const encoding =\r\n typeof primeEncodingOrGenerator === 'string'\r\n ? primeEncodingOrGenerator\r\n : 'utf8'; // Defaulting to utf8 or hex? Node default is 'binary' usually but utf8 safer for TS. Node docs say: \"If no encoding is specified, 'binary' is used.\"\r\n // We'll trust user passed encoding if it's a string, otherwise handle it.\r\n prime = Buffer.from(primeOrSize, encoding as BufferEncoding);\r\n\r\n // Generator handling in this case\r\n if (generator !== undefined) {\r\n generatorVal = generator as Buffer | number;\r\n if (typeof generator === 'string' && _generatorEncoding) {\r\n generatorVal = Buffer.from(\r\n generator,\r\n _generatorEncoding as BufferEncoding,\r\n );\r\n } else if (typeof generator === 'string') {\r\n // string with no encoding, assume same as prime? or utf8?\r\n generatorVal = Buffer.from(generator, encoding as BufferEncoding);\r\n }\r\n } else if (\r\n typeof primeEncodingOrGenerator !== 'string' &&\r\n primeEncodingOrGenerator !== undefined\r\n ) {\r\n // 2nd arg was generator\r\n generatorVal = primeEncodingOrGenerator as number;\r\n } else {\r\n generatorVal = 2;\r\n }\r\n }\r\n\r\n return new DiffieHellman(prime, generatorVal);\r\n}\r\n\r\nexport function getDiffieHellman(groupName: string): DiffieHellman {\r\n const group = DH_GROUPS[groupName];\r\n if (!group) {\r\n throw new Error(`Unknown group: ${groupName}`);\r\n }\r\n // group.prime and group.generator are hex strings\r\n return new DiffieHellman(group.prime, group.generator, 'hex');\r\n}\r\n\r\nexport { getDiffieHellman as createDiffieHellmanGroup };\r\n"],"mappings":"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","ignoreList":[]}
@@ -12,7 +12,7 @@ var _classes = require("./keys/classes");
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
  class Dsa {
17
17
  constructor(modulusLength, divisorLength) {
18
18
  _defineProperty(this, "native", void 0);
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeNitroModules","require","_reactNativeBuffer","_classes","_utils","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","Dsa","constructor","modulusLength","divisorLength","native","NitroModules","createHybridObject","setModulusLength","undefined","setDivisorLength","generateKeyPair","generateKeyPairSync","exports","dsa_prepareKeyGenParams","options","Error","dsa_formatKeyPairOutput","dsa","encoding","publicFormat","privateFormat","cipher","passphrase","publicKeyData","getPublicKey","privateKeyData","getPrivateKey","pub","KeyObject","createKeyObject","KFormatType","DER","KeyEncoding","SPKI","priv","PKCS8","publicKey","privateKey","format","PEM","exported","handle","exportKey","Buffer","from","Uint8Array","toString","dsa_generateKeyPairNode","dsa_generateKeyPairNodeSync"],"sources":["dsa.ts"],"sourcesContent":["import { NitroModules } from 'react-native-nitro-modules';\r\nimport { Buffer } from '@craftzdog/react-native-buffer';\r\nimport { KeyObject, PublicKeyObject, PrivateKeyObject } from './keys/classes';\r\nimport type { DsaKeyPair } from './specs/v1/dsaKeyPair.nitro';\r\nimport type { GenerateKeyPairOptions, KeyPairGenConfig } from './utils/types';\r\nimport { KFormatType, KeyEncoding } from './utils';\r\n\r\nexport class Dsa {\r\n native: DsaKeyPair;\r\n\r\n constructor(modulusLength: number, divisorLength?: number) {\r\n this.native = NitroModules.createHybridObject<DsaKeyPair>('DsaKeyPair');\r\n this.native.setModulusLength(modulusLength);\r\n if (divisorLength !== undefined && divisorLength >= 0) {\r\n this.native.setDivisorLength(divisorLength);\r\n }\r\n }\r\n\r\n async generateKeyPair(): Promise<void> {\r\n await this.native.generateKeyPair();\r\n }\r\n\r\n generateKeyPairSync(): void {\r\n this.native.generateKeyPairSync();\r\n }\r\n}\r\n\r\nfunction dsa_prepareKeyGenParams(\r\n options: GenerateKeyPairOptions | undefined,\r\n): Dsa {\r\n if (!options) {\r\n throw new Error('Options are required for DSA key generation');\r\n }\r\n\r\n const { modulusLength, divisorLength } = options;\r\n\r\n if (!modulusLength || modulusLength <= 0) {\r\n throw new Error('Invalid or missing modulusLength for DSA key generation');\r\n }\r\n\r\n return new Dsa(modulusLength, divisorLength);\r\n}\r\n\r\nfunction dsa_formatKeyPairOutput(\r\n dsa: Dsa,\r\n encoding: KeyPairGenConfig,\r\n): {\r\n publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n} {\r\n const { publicFormat, privateFormat, cipher, passphrase } = encoding;\r\n\r\n const publicKeyData = dsa.native.getPublicKey();\r\n const privateKeyData = dsa.native.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\r\n const priv = KeyObject.createKeyObject(\r\n 'private',\r\n privateKeyData,\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n ) as PrivateKeyObject;\r\n\r\n let publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n let privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n\r\n if (publicFormat === -1) {\r\n publicKey = pub;\r\n } else {\r\n const format =\r\n publicFormat === KFormatType.PEM ? KFormatType.PEM : KFormatType.DER;\r\n const exported = pub.handle.exportKey(format, KeyEncoding.SPKI);\r\n if (format === KFormatType.PEM) {\r\n publicKey = Buffer.from(new Uint8Array(exported)).toString('utf-8');\r\n } else {\r\n publicKey = exported;\r\n }\r\n }\r\n\r\n if (privateFormat === -1) {\r\n privateKey = priv;\r\n } else {\r\n const format =\r\n privateFormat === KFormatType.PEM ? KFormatType.PEM : KFormatType.DER;\r\n const exported = priv.handle.exportKey(\r\n format,\r\n KeyEncoding.PKCS8,\r\n cipher,\r\n passphrase,\r\n );\r\n if (format === KFormatType.PEM) {\r\n privateKey = Buffer.from(new Uint8Array(exported)).toString('utf-8');\r\n } else {\r\n privateKey = exported;\r\n }\r\n }\r\n\r\n return { publicKey, privateKey };\r\n}\r\n\r\nexport async function dsa_generateKeyPairNode(\r\n options: GenerateKeyPairOptions | undefined,\r\n encoding: KeyPairGenConfig,\r\n): Promise<{\r\n publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n}> {\r\n const dsa = dsa_prepareKeyGenParams(options);\r\n await dsa.generateKeyPair();\r\n return dsa_formatKeyPairOutput(dsa, encoding);\r\n}\r\n\r\nexport function dsa_generateKeyPairNodeSync(\r\n options: GenerateKeyPairOptions | undefined,\r\n encoding: KeyPairGenConfig,\r\n): {\r\n publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n} {\r\n const dsa = dsa_prepareKeyGenParams(options);\r\n dsa.generateKeyPairSync();\r\n return dsa_formatKeyPairOutput(dsa, encoding);\r\n}\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeNitroModules","require","_reactNativeBuffer","_classes","_utils","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","Dsa","constructor","modulusLength","divisorLength","native","NitroModules","createHybridObject","setModulusLength","undefined","setDivisorLength","generateKeyPair","generateKeyPairSync","exports","dsa_prepareKeyGenParams","options","Error","dsa_formatKeyPairOutput","dsa","encoding","publicFormat","privateFormat","cipher","passphrase","publicKeyData","getPublicKey","privateKeyData","getPrivateKey","pub","KeyObject","createKeyObject","KFormatType","DER","KeyEncoding","SPKI","priv","PKCS8","publicKey","privateKey","format","PEM","exported","handle","exportKey","Buffer","from","Uint8Array","toString","dsa_generateKeyPairNode","dsa_generateKeyPairNodeSync"],"sources":["dsa.ts"],"sourcesContent":["import { NitroModules } from 'react-native-nitro-modules';\r\nimport { Buffer } from '@craftzdog/react-native-buffer';\r\nimport { KeyObject, PublicKeyObject, PrivateKeyObject } from './keys/classes';\r\nimport type { DsaKeyPair } from './specs/v1/dsaKeyPair.nitro';\r\nimport type { GenerateKeyPairOptions, KeyPairGenConfig } from './utils/types';\r\nimport { KFormatType, KeyEncoding } from './utils';\r\n\r\nexport class Dsa {\r\n native: DsaKeyPair;\r\n\r\n constructor(modulusLength: number, divisorLength?: number) {\r\n this.native = NitroModules.createHybridObject<DsaKeyPair>('DsaKeyPair');\r\n this.native.setModulusLength(modulusLength);\r\n if (divisorLength !== undefined && divisorLength >= 0) {\r\n this.native.setDivisorLength(divisorLength);\r\n }\r\n }\r\n\r\n async generateKeyPair(): Promise<void> {\r\n await this.native.generateKeyPair();\r\n }\r\n\r\n generateKeyPairSync(): void {\r\n this.native.generateKeyPairSync();\r\n }\r\n}\r\n\r\nfunction dsa_prepareKeyGenParams(\r\n options: GenerateKeyPairOptions | undefined,\r\n): Dsa {\r\n if (!options) {\r\n throw new Error('Options are required for DSA key generation');\r\n }\r\n\r\n const { modulusLength, divisorLength } = options;\r\n\r\n if (!modulusLength || modulusLength <= 0) {\r\n throw new Error('Invalid or missing modulusLength for DSA key generation');\r\n }\r\n\r\n return new Dsa(modulusLength, divisorLength);\r\n}\r\n\r\nfunction dsa_formatKeyPairOutput(\r\n dsa: Dsa,\r\n encoding: KeyPairGenConfig,\r\n): {\r\n publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n} {\r\n const { publicFormat, privateFormat, cipher, passphrase } = encoding;\r\n\r\n const publicKeyData = dsa.native.getPublicKey();\r\n const privateKeyData = dsa.native.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\r\n const priv = KeyObject.createKeyObject(\r\n 'private',\r\n privateKeyData,\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n ) as PrivateKeyObject;\r\n\r\n let publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n let privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n\r\n if (publicFormat === -1) {\r\n publicKey = pub;\r\n } else {\r\n const format =\r\n publicFormat === KFormatType.PEM ? KFormatType.PEM : KFormatType.DER;\r\n const exported = pub.handle.exportKey(format, KeyEncoding.SPKI);\r\n if (format === KFormatType.PEM) {\r\n publicKey = Buffer.from(new Uint8Array(exported)).toString('utf-8');\r\n } else {\r\n publicKey = exported;\r\n }\r\n }\r\n\r\n if (privateFormat === -1) {\r\n privateKey = priv;\r\n } else {\r\n const format =\r\n privateFormat === KFormatType.PEM ? KFormatType.PEM : KFormatType.DER;\r\n const exported = priv.handle.exportKey(\r\n format,\r\n KeyEncoding.PKCS8,\r\n cipher,\r\n passphrase,\r\n );\r\n if (format === KFormatType.PEM) {\r\n privateKey = Buffer.from(new Uint8Array(exported)).toString('utf-8');\r\n } else {\r\n privateKey = exported;\r\n }\r\n }\r\n\r\n return { publicKey, privateKey };\r\n}\r\n\r\nexport async function dsa_generateKeyPairNode(\r\n options: GenerateKeyPairOptions | undefined,\r\n encoding: KeyPairGenConfig,\r\n): Promise<{\r\n publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n}> {\r\n const dsa = dsa_prepareKeyGenParams(options);\r\n await dsa.generateKeyPair();\r\n return dsa_formatKeyPairOutput(dsa, encoding);\r\n}\r\n\r\nexport function dsa_generateKeyPairNodeSync(\r\n options: GenerateKeyPairOptions | undefined,\r\n encoding: KeyPairGenConfig,\r\n): {\r\n publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n} {\r\n const dsa = dsa_prepareKeyGenParams(options);\r\n dsa.generateKeyPairSync();\r\n return dsa_formatKeyPairOutput(dsa, encoding);\r\n}\r\n"],"mappings":"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","ignoreList":[]}
@@ -18,7 +18,7 @@ var _reactNativeBuffer = require("@craftzdog/react-native-buffer");
18
18
  var _ecdh = require("./ecdh");
19
19
  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; }
20
20
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
21
- 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); }
21
+ 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); }
22
22
  class EcUtils {
23
23
  static get native() {
24
24
  if (!this._native) {
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeNitroModules","require","_classes","_utils","_reactNativeBuffer","_ecdh","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","EcUtils","native","_native","NitroModules","createHybridObject","getSupportedCurves","getCurves","Ec","constructor","curve","setCurve","generateKeyPair","publicKey","getPublicKey","privateKey","getPrivateKey","generateKeyPairSync","exports","ecImportKey","format","keyData","algorithm","extractable","keyUsages","name","namedCurve","kNamedCurveAliases","lazyDOMException","jwk","kty","crv","use","undefined","expectedUse","alg","expectedAlg","handle","keyType","initJwk","keyObject","PublicKeyObject","PrivateKeyObject","CryptoKey","expectedKeyType","isPublicKey","validUsages","hasAnyNotIn","keyBuffer","bufferLikeToArrayBuffer","curveAlias","initECRaw","KeyObject","createKeyObject","KFormatType","DER","KeyEncoding","SPKI","PKCS8","ecdsaSignVerify","key","data","hash","signature","isSign","type","hashName","normalizedHashName","normalizeHashName","HashContext","WebCrypto","ec","encoding","exportKey","importKey","usages","dataBuffer","sign","signatureBuffer","verify","ec_generateKeyPair","_options","keys","includes","publicUsages","privateUsages","getUsagesUnion","keyAlgorithm","publicKeyData","privateKeyData","pub","priv","ec_prepareKeyGenParams","options","Error","ec_formatKeyPairOutput","publicFormat","publicType","privateFormat","privateType","cipher","passphrase","PEM","keyEncoding","exported","Buffer","from","Uint8Array","toString","SEC1","ec_generateKeyPairNode","ec_generateKeyPairNodeSync","ecDeriveBits","baseKey","length","public","opensslCurve","ecdh","ECDH","jwkPrivate","exportJwk","d","privateBytes","setPrivateKey","jwkPublic","x","y","publicBytes","concat","secret","computeSecret","secretBuf","buffer","byteLength","Math","ceil","slice","byteOffset"],"sources":["ec.ts"],"sourcesContent":["import { NitroModules } from 'react-native-nitro-modules';\r\nimport type { EcKeyPair } from './specs/v1/ecKeyPair.nitro';\r\nimport type { KeyObjectHandle } from './specs/v1/keyObjectHandle.nitro';\r\nimport {\r\n CryptoKey,\r\n KeyObject,\r\n PublicKeyObject,\r\n PrivateKeyObject,\r\n} from './keys/classes';\r\nimport type {\r\n CryptoKeyPair,\r\n KeyPairOptions,\r\n KeyUsage,\r\n SubtleAlgorithm,\r\n BufferLike,\r\n BinaryLike,\r\n JWK,\r\n ImportFormat,\r\n NamedCurve,\r\n GenerateKeyPairOptions,\r\n KeyPairGenConfig,\r\n} from './utils/types';\r\nimport {\r\n bufferLikeToArrayBuffer,\r\n getUsagesUnion,\r\n hasAnyNotIn,\r\n kNamedCurveAliases,\r\n lazyDOMException,\r\n normalizeHashName,\r\n HashContext,\r\n KeyEncoding,\r\n KFormatType,\r\n} from './utils';\r\nimport { Buffer } from '@craftzdog/react-native-buffer';\r\nimport { ECDH } from './ecdh';\r\n\r\nclass EcUtils {\r\n private static _native: EcKeyPair | undefined;\r\n private static get native(): EcKeyPair {\r\n if (!this._native) {\r\n this._native = NitroModules.createHybridObject<EcKeyPair>('EcKeyPair');\r\n }\r\n return this._native;\r\n }\r\n public static getSupportedCurves(): string[] {\r\n return this.native.getSupportedCurves();\r\n }\r\n}\r\n\r\nexport function getCurves(): string[] {\r\n return EcUtils.getSupportedCurves();\r\n}\r\n\r\nexport class Ec {\r\n native: EcKeyPair;\r\n\r\n constructor(curve: string) {\r\n this.native = NitroModules.createHybridObject<EcKeyPair>('EcKeyPair');\r\n this.native.setCurve(curve);\r\n }\r\n\r\n async generateKeyPair(): Promise<CryptoKeyPair> {\r\n await this.native.generateKeyPair();\r\n return {\r\n publicKey: this.native.getPublicKey(),\r\n privateKey: this.native.getPrivateKey(),\r\n };\r\n }\r\n\r\n generateKeyPairSync(): CryptoKeyPair {\r\n this.native.generateKeyPairSync();\r\n return {\r\n publicKey: this.native.getPublicKey(),\r\n privateKey: this.native.getPrivateKey(),\r\n };\r\n }\r\n}\r\n\r\n// WebCrypto API - only P-256, P-384, P-521 allowed per spec\r\nexport function ecImportKey(\r\n format: ImportFormat,\r\n keyData: BufferLike | BinaryLike | JWK,\r\n algorithm: SubtleAlgorithm,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n): CryptoKey {\r\n const { name, namedCurve } = algorithm;\r\n\r\n if (\r\n !namedCurve ||\r\n !kNamedCurveAliases[namedCurve as keyof typeof kNamedCurveAliases]\r\n ) {\r\n throw lazyDOMException('Unrecognized namedCurve', 'NotSupportedError');\r\n }\r\n\r\n // Handle JWK format\r\n if (format === 'jwk') {\r\n const jwk = keyData as JWK;\r\n\r\n // Validate JWK\r\n if (jwk.kty !== 'EC') {\r\n throw lazyDOMException('Invalid JWK \"kty\" Parameter', 'DataError');\r\n }\r\n\r\n if (jwk.crv !== namedCurve) {\r\n throw lazyDOMException(\r\n 'JWK \"crv\" does not match the requested algorithm',\r\n 'DataError',\r\n );\r\n }\r\n\r\n // Check use parameter if present\r\n if (jwk.use !== undefined) {\r\n const expectedUse = name === 'ECDH' ? 'enc' : 'sig';\r\n if (jwk.use !== expectedUse) {\r\n throw lazyDOMException('Invalid JWK \"use\" Parameter', 'DataError');\r\n }\r\n }\r\n\r\n // Check alg parameter if present\r\n if (jwk.alg !== undefined) {\r\n let expectedAlg: string | undefined;\r\n\r\n if (name === 'ECDSA') {\r\n // Map namedCurve to expected ECDSA algorithm\r\n expectedAlg =\r\n namedCurve === 'P-256'\r\n ? 'ES256'\r\n : namedCurve === 'P-384'\r\n ? 'ES384'\r\n : namedCurve === 'P-521'\r\n ? 'ES512'\r\n : undefined;\r\n } else if (name === 'ECDH') {\r\n // ECDH uses ECDH-ES algorithm\r\n expectedAlg = 'ECDH-ES';\r\n }\r\n\r\n if (expectedAlg && jwk.alg !== undefined && jwk.alg !== expectedAlg) {\r\n throw lazyDOMException(\r\n 'JWK \"alg\" does not match the requested algorithm',\r\n 'DataError',\r\n );\r\n }\r\n }\r\n\r\n // Import using C++ layer\r\n const handle =\r\n NitroModules.createHybridObject<KeyObjectHandle>('KeyObjectHandle');\r\n const keyType = handle.initJwk(jwk, namedCurve as NamedCurve);\r\n\r\n if (keyType === undefined) {\r\n throw lazyDOMException('Invalid JWK', 'DataError');\r\n }\r\n\r\n // Create the appropriate KeyObject based on type\r\n let keyObject: KeyObject;\r\n if (keyType === 1) {\r\n keyObject = new PublicKeyObject(handle);\r\n } else if (keyType === 2) {\r\n keyObject = new PrivateKeyObject(handle);\r\n } else {\r\n throw lazyDOMException(\r\n 'Unexpected key type from JWK import',\r\n 'DataError',\r\n );\r\n }\r\n\r\n return new CryptoKey(keyObject, algorithm, keyUsages, extractable);\r\n }\r\n\r\n // Handle binary formats (spki, pkcs8, raw)\r\n if (format !== 'spki' && format !== 'pkcs8' && format !== 'raw') {\r\n throw lazyDOMException(\r\n `Unsupported format: ${format}`,\r\n 'NotSupportedError',\r\n );\r\n }\r\n\r\n // Determine expected key type based on format\r\n const expectedKeyType =\r\n format === 'spki' || format === 'raw' ? 'public' : 'private';\r\n\r\n // Validate usages for the key type\r\n const isPublicKey = expectedKeyType === 'public';\r\n let validUsages: KeyUsage[];\r\n\r\n if (name === 'ECDSA') {\r\n validUsages = isPublicKey ? ['verify'] : ['sign'];\r\n } else if (name === 'ECDH') {\r\n validUsages = isPublicKey ? [] : ['deriveKey', 'deriveBits'];\r\n } else {\r\n throw lazyDOMException('Unsupported algorithm', 'NotSupportedError');\r\n }\r\n\r\n if (hasAnyNotIn(keyUsages, validUsages)) {\r\n throw lazyDOMException(\r\n `Unsupported key usage for a ${name} key`,\r\n 'SyntaxError',\r\n );\r\n }\r\n\r\n // Convert keyData to ArrayBuffer\r\n const keyBuffer = bufferLikeToArrayBuffer(keyData as BufferLike);\r\n\r\n // Create KeyObject directly using the appropriate format\r\n let keyObject: KeyObject;\r\n\r\n if (format === 'raw') {\r\n // Raw format is only for public keys - use specialized EC raw import\r\n const handle =\r\n NitroModules.createHybridObject<KeyObjectHandle>('KeyObjectHandle');\r\n const curveAlias =\r\n kNamedCurveAliases[namedCurve as keyof typeof kNamedCurveAliases];\r\n // Only throw if initialization explicitly fails\r\n if (!handle.initECRaw(curveAlias, keyBuffer)) {\r\n throw lazyDOMException('Failed to import EC raw key', 'DataError');\r\n }\r\n keyObject = new PublicKeyObject(handle);\r\n } else {\r\n // Use standard DER import for spki/pkcs8\r\n keyObject = KeyObject.createKeyObject(\r\n expectedKeyType,\r\n keyBuffer,\r\n KFormatType.DER,\r\n format === 'spki' ? KeyEncoding.SPKI : KeyEncoding.PKCS8,\r\n );\r\n }\r\n\r\n return new CryptoKey(keyObject, algorithm, keyUsages, extractable);\r\n}\r\n\r\n// Node API\r\nexport const ecdsaSignVerify = (\r\n key: CryptoKey,\r\n data: BufferLike,\r\n { hash }: SubtleAlgorithm,\r\n signature?: BufferLike,\r\n): ArrayBuffer | boolean => {\r\n const isSign = signature === undefined;\r\n const expectedKeyType = isSign ? 'private' : 'public';\r\n\r\n if (key.type !== expectedKeyType) {\r\n throw lazyDOMException(\r\n `Key must be a ${expectedKeyType} key`,\r\n 'InvalidAccessError',\r\n );\r\n }\r\n\r\n const hashName = typeof hash === 'string' ? hash : hash?.name;\r\n\r\n if (!hashName) {\r\n throw lazyDOMException(\r\n 'Hash algorithm is required for ECDSA',\r\n 'InvalidAccessError',\r\n );\r\n }\r\n\r\n // Normalize hash algorithm name to WebCrypto format for C++ layer\r\n const normalizedHashName = normalizeHashName(hashName, HashContext.WebCrypto);\r\n\r\n // Create EC instance with the curve from the key\r\n const namedCurve = key.algorithm.namedCurve!;\r\n const ec = new Ec(namedCurve);\r\n\r\n // Extract and import the actual key data from the CryptoKey\r\n // Export in DER format with appropriate encoding\r\n const encoding =\r\n key.type === 'private' ? KeyEncoding.PKCS8 : KeyEncoding.SPKI;\r\n const keyData = key.keyObject.handle.exportKey(KFormatType.DER, encoding);\r\n const keyBuffer = bufferLikeToArrayBuffer(keyData);\r\n ec.native.importKey(\r\n 'der',\r\n keyBuffer,\r\n key.algorithm.name!,\r\n key.extractable,\r\n key.usages,\r\n );\r\n\r\n const dataBuffer = bufferLikeToArrayBuffer(data);\r\n\r\n if (isSign) {\r\n // Sign operation\r\n return ec.native.sign(dataBuffer, normalizedHashName);\r\n } else {\r\n // Verify operation\r\n const signatureBuffer = bufferLikeToArrayBuffer(signature!);\r\n return ec.native.verify(dataBuffer, signatureBuffer, normalizedHashName);\r\n }\r\n};\r\n\r\n// WebCrypto API - only P-256, P-384, P-521 allowed per spec\r\n\r\nexport async function ec_generateKeyPair(\r\n name: string,\r\n namedCurve: string,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n _options?: KeyPairOptions, // TODO: Implement format options support\r\n): Promise<CryptoKeyPair> {\r\n // validation checks\r\n if (!Object.keys(kNamedCurveAliases).includes(namedCurve || '')) {\r\n throw lazyDOMException(\r\n `Unrecognized namedCurve '${namedCurve}'`,\r\n 'NotSupportedError',\r\n );\r\n }\r\n\r\n switch (name) {\r\n case 'ECDSA':\r\n if (hasAnyNotIn(keyUsages, ['sign', 'verify'])) {\r\n throw lazyDOMException(\r\n 'Unsupported key usage for an ECDSA key',\r\n 'SyntaxError',\r\n );\r\n }\r\n break;\r\n case 'ECDH':\r\n if (hasAnyNotIn(keyUsages, ['deriveKey', 'deriveBits'])) {\r\n throw lazyDOMException(\r\n 'Unsupported key usage for an ECDH key',\r\n 'SyntaxError',\r\n );\r\n }\r\n // Fall through\r\n }\r\n\r\n const ec = new Ec(namedCurve!);\r\n await ec.generateKeyPair();\r\n\r\n let publicUsages: KeyUsage[] = [];\r\n let privateUsages: KeyUsage[] = [];\r\n switch (name) {\r\n case 'ECDSA':\r\n publicUsages = getUsagesUnion(keyUsages, 'verify');\r\n privateUsages = getUsagesUnion(keyUsages, 'sign');\r\n break;\r\n case 'ECDH':\r\n publicUsages = [];\r\n privateUsages = getUsagesUnion(keyUsages, 'deriveKey', 'deriveBits');\r\n break;\r\n }\r\n\r\n const keyAlgorithm = { name, namedCurve: namedCurve! };\r\n\r\n // Export keys directly from the EC key pair using the internal EVP_PKEY\r\n // These methods export in DER format (SPKI for public, PKCS8 for private)\r\n const publicKeyData = ec.native.getPublicKey();\r\n const privateKeyData = ec.native.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 keyAlgorithm as SubtleAlgorithm,\r\n publicUsages,\r\n true,\r\n );\r\n\r\n // All keys are now exported in PKCS8 format for consistency\r\n const priv = KeyObject.createKeyObject(\r\n 'private',\r\n privateKeyData,\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n ) as PrivateKeyObject;\r\n const privateKey = new CryptoKey(\r\n priv,\r\n keyAlgorithm as SubtleAlgorithm,\r\n privateUsages,\r\n extractable,\r\n );\r\n\r\n return { publicKey, privateKey };\r\n}\r\n\r\nfunction ec_prepareKeyGenParams(\r\n options: GenerateKeyPairOptions | undefined,\r\n): Ec {\r\n if (!options) {\r\n throw new Error('Options are required for EC key generation');\r\n }\r\n\r\n const { namedCurve } = options as { namedCurve?: string };\r\n\r\n if (!namedCurve) {\r\n throw new Error('namedCurve is required for EC key generation');\r\n }\r\n\r\n return new Ec(namedCurve);\r\n}\r\n\r\nfunction ec_formatKeyPairOutput(\r\n ec: Ec,\r\n encoding: KeyPairGenConfig,\r\n): {\r\n publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n} {\r\n const {\r\n publicFormat,\r\n publicType,\r\n privateFormat,\r\n privateType,\r\n cipher,\r\n passphrase,\r\n } = encoding;\r\n\r\n const publicKeyData = ec.native.getPublicKey();\r\n const privateKeyData = ec.native.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\r\n const priv = KeyObject.createKeyObject(\r\n 'private',\r\n privateKeyData,\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n ) as PrivateKeyObject;\r\n\r\n let publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n let privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n\r\n if (publicFormat === -1) {\r\n publicKey = pub;\r\n } else {\r\n const format =\r\n publicFormat === KFormatType.PEM ? KFormatType.PEM : KFormatType.DER;\r\n const keyEncoding =\r\n publicType === KeyEncoding.SPKI ? KeyEncoding.SPKI : KeyEncoding.SPKI;\r\n const exported = pub.handle.exportKey(format, keyEncoding);\r\n if (format === KFormatType.PEM) {\r\n publicKey = Buffer.from(new Uint8Array(exported)).toString('utf-8');\r\n } else {\r\n publicKey = exported;\r\n }\r\n }\r\n\r\n if (privateFormat === -1) {\r\n privateKey = priv;\r\n } else {\r\n const format =\r\n privateFormat === KFormatType.PEM ? KFormatType.PEM : KFormatType.DER;\r\n const keyEncoding =\r\n privateType === KeyEncoding.PKCS8\r\n ? KeyEncoding.PKCS8\r\n : privateType === KeyEncoding.SEC1\r\n ? KeyEncoding.SEC1\r\n : KeyEncoding.PKCS8;\r\n const exported = priv.handle.exportKey(\r\n format,\r\n keyEncoding,\r\n cipher,\r\n passphrase,\r\n );\r\n if (format === KFormatType.PEM) {\r\n privateKey = Buffer.from(new Uint8Array(exported)).toString('utf-8');\r\n } else {\r\n privateKey = exported;\r\n }\r\n }\r\n\r\n return { publicKey, privateKey };\r\n}\r\n\r\nexport async function ec_generateKeyPairNode(\r\n options: GenerateKeyPairOptions | undefined,\r\n encoding: KeyPairGenConfig,\r\n): Promise<{\r\n publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n}> {\r\n const ec = ec_prepareKeyGenParams(options);\r\n await ec.generateKeyPair();\r\n return ec_formatKeyPairOutput(ec, encoding);\r\n}\r\n\r\nexport function ec_generateKeyPairNodeSync(\r\n options: GenerateKeyPairOptions | undefined,\r\n encoding: KeyPairGenConfig,\r\n): {\r\n publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n} {\r\n const ec = ec_prepareKeyGenParams(options);\r\n ec.generateKeyPairSync();\r\n return ec_formatKeyPairOutput(ec, encoding);\r\n}\r\n\r\nexport function ecDeriveBits(\r\n algorithm: SubtleAlgorithm,\r\n baseKey: CryptoKey,\r\n length: number | null,\r\n): ArrayBuffer {\r\n const publicKey = algorithm.public;\r\n\r\n if (!publicKey) {\r\n throw new Error('Public key is required for ECDH derivation');\r\n }\r\n\r\n if (baseKey.algorithm.name !== publicKey.algorithm.name) {\r\n throw new Error('Keys must be of the same algorithm');\r\n }\r\n\r\n if (baseKey.algorithm.namedCurve !== publicKey.algorithm.namedCurve) {\r\n throw new Error('Keys must use the same curve');\r\n }\r\n\r\n const namedCurve = baseKey.algorithm.namedCurve;\r\n if (!namedCurve) {\r\n throw new Error('Curve name is missing');\r\n }\r\n\r\n const opensslCurve =\r\n kNamedCurveAliases[namedCurve as keyof typeof kNamedCurveAliases];\r\n const ecdh = new ECDH(opensslCurve);\r\n\r\n const jwkPrivate = baseKey.keyObject.handle.exportJwk({}, false);\r\n if (!jwkPrivate.d) throw new Error('Invalid private key');\r\n const privateBytes = Buffer.from(jwkPrivate.d, 'base64url');\r\n ecdh.setPrivateKey(privateBytes);\r\n\r\n const jwkPublic = publicKey.keyObject.handle.exportJwk({}, false);\r\n if (!jwkPublic.x || !jwkPublic.y) throw new Error('Invalid public key');\r\n const x = Buffer.from(jwkPublic.x, 'base64url');\r\n const y = Buffer.from(jwkPublic.y, 'base64url');\r\n const publicBytes = Buffer.concat([Buffer.from([0x04]), x, y]);\r\n\r\n const secret = ecdh.computeSecret(publicBytes);\r\n const secretBuf = Buffer.from(secret);\r\n\r\n // If length is null, return full secret\r\n if (length === null) {\r\n return secretBuf.buffer;\r\n }\r\n\r\n // If length is specified, truncate\r\n const byteLength = Math.ceil(length / 8);\r\n if (secretBuf.byteLength >= byteLength) {\r\n return secretBuf.buffer.slice(\r\n secretBuf.byteOffset,\r\n secretBuf.byteOffset + byteLength,\r\n ) as ArrayBuffer;\r\n }\r\n\r\n throw new Error('Derived key is shorter than requested length');\r\n}\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeNitroModules","require","_classes","_utils","_reactNativeBuffer","_ecdh","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","EcUtils","native","_native","NitroModules","createHybridObject","getSupportedCurves","getCurves","Ec","constructor","curve","setCurve","generateKeyPair","publicKey","getPublicKey","privateKey","getPrivateKey","generateKeyPairSync","exports","ecImportKey","format","keyData","algorithm","extractable","keyUsages","name","namedCurve","kNamedCurveAliases","lazyDOMException","jwk","kty","crv","use","undefined","expectedUse","alg","expectedAlg","handle","keyType","initJwk","keyObject","PublicKeyObject","PrivateKeyObject","CryptoKey","expectedKeyType","isPublicKey","validUsages","hasAnyNotIn","keyBuffer","bufferLikeToArrayBuffer","curveAlias","initECRaw","KeyObject","createKeyObject","KFormatType","DER","KeyEncoding","SPKI","PKCS8","ecdsaSignVerify","key","data","hash","signature","isSign","type","hashName","normalizedHashName","normalizeHashName","HashContext","WebCrypto","ec","encoding","exportKey","importKey","usages","dataBuffer","sign","signatureBuffer","verify","ec_generateKeyPair","_options","keys","includes","publicUsages","privateUsages","getUsagesUnion","keyAlgorithm","publicKeyData","privateKeyData","pub","priv","ec_prepareKeyGenParams","options","Error","ec_formatKeyPairOutput","publicFormat","publicType","privateFormat","privateType","cipher","passphrase","PEM","keyEncoding","exported","Buffer","from","Uint8Array","toString","SEC1","ec_generateKeyPairNode","ec_generateKeyPairNodeSync","ecDeriveBits","baseKey","length","public","opensslCurve","ecdh","ECDH","jwkPrivate","exportJwk","d","privateBytes","setPrivateKey","jwkPublic","x","y","publicBytes","concat","secret","computeSecret","secretBuf","buffer","byteLength","Math","ceil","slice","byteOffset"],"sources":["ec.ts"],"sourcesContent":["import { NitroModules } from 'react-native-nitro-modules';\r\nimport type { EcKeyPair } from './specs/v1/ecKeyPair.nitro';\r\nimport type { KeyObjectHandle } from './specs/v1/keyObjectHandle.nitro';\r\nimport {\r\n CryptoKey,\r\n KeyObject,\r\n PublicKeyObject,\r\n PrivateKeyObject,\r\n} from './keys/classes';\r\nimport type {\r\n CryptoKeyPair,\r\n KeyPairOptions,\r\n KeyUsage,\r\n SubtleAlgorithm,\r\n BufferLike,\r\n BinaryLike,\r\n JWK,\r\n ImportFormat,\r\n NamedCurve,\r\n GenerateKeyPairOptions,\r\n KeyPairGenConfig,\r\n} from './utils/types';\r\nimport {\r\n bufferLikeToArrayBuffer,\r\n getUsagesUnion,\r\n hasAnyNotIn,\r\n kNamedCurveAliases,\r\n lazyDOMException,\r\n normalizeHashName,\r\n HashContext,\r\n KeyEncoding,\r\n KFormatType,\r\n} from './utils';\r\nimport { Buffer } from '@craftzdog/react-native-buffer';\r\nimport { ECDH } from './ecdh';\r\n\r\nclass EcUtils {\r\n private static _native: EcKeyPair | undefined;\r\n private static get native(): EcKeyPair {\r\n if (!this._native) {\r\n this._native = NitroModules.createHybridObject<EcKeyPair>('EcKeyPair');\r\n }\r\n return this._native;\r\n }\r\n public static getSupportedCurves(): string[] {\r\n return this.native.getSupportedCurves();\r\n }\r\n}\r\n\r\nexport function getCurves(): string[] {\r\n return EcUtils.getSupportedCurves();\r\n}\r\n\r\nexport class Ec {\r\n native: EcKeyPair;\r\n\r\n constructor(curve: string) {\r\n this.native = NitroModules.createHybridObject<EcKeyPair>('EcKeyPair');\r\n this.native.setCurve(curve);\r\n }\r\n\r\n async generateKeyPair(): Promise<CryptoKeyPair> {\r\n await this.native.generateKeyPair();\r\n return {\r\n publicKey: this.native.getPublicKey(),\r\n privateKey: this.native.getPrivateKey(),\r\n };\r\n }\r\n\r\n generateKeyPairSync(): CryptoKeyPair {\r\n this.native.generateKeyPairSync();\r\n return {\r\n publicKey: this.native.getPublicKey(),\r\n privateKey: this.native.getPrivateKey(),\r\n };\r\n }\r\n}\r\n\r\n// WebCrypto API - only P-256, P-384, P-521 allowed per spec\r\nexport function ecImportKey(\r\n format: ImportFormat,\r\n keyData: BufferLike | BinaryLike | JWK,\r\n algorithm: SubtleAlgorithm,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n): CryptoKey {\r\n const { name, namedCurve } = algorithm;\r\n\r\n if (\r\n !namedCurve ||\r\n !kNamedCurveAliases[namedCurve as keyof typeof kNamedCurveAliases]\r\n ) {\r\n throw lazyDOMException('Unrecognized namedCurve', 'NotSupportedError');\r\n }\r\n\r\n // Handle JWK format\r\n if (format === 'jwk') {\r\n const jwk = keyData as JWK;\r\n\r\n // Validate JWK\r\n if (jwk.kty !== 'EC') {\r\n throw lazyDOMException('Invalid JWK \"kty\" Parameter', 'DataError');\r\n }\r\n\r\n if (jwk.crv !== namedCurve) {\r\n throw lazyDOMException(\r\n 'JWK \"crv\" does not match the requested algorithm',\r\n 'DataError',\r\n );\r\n }\r\n\r\n // Check use parameter if present\r\n if (jwk.use !== undefined) {\r\n const expectedUse = name === 'ECDH' ? 'enc' : 'sig';\r\n if (jwk.use !== expectedUse) {\r\n throw lazyDOMException('Invalid JWK \"use\" Parameter', 'DataError');\r\n }\r\n }\r\n\r\n // Check alg parameter if present\r\n if (jwk.alg !== undefined) {\r\n let expectedAlg: string | undefined;\r\n\r\n if (name === 'ECDSA') {\r\n // Map namedCurve to expected ECDSA algorithm\r\n expectedAlg =\r\n namedCurve === 'P-256'\r\n ? 'ES256'\r\n : namedCurve === 'P-384'\r\n ? 'ES384'\r\n : namedCurve === 'P-521'\r\n ? 'ES512'\r\n : undefined;\r\n } else if (name === 'ECDH') {\r\n // ECDH uses ECDH-ES algorithm\r\n expectedAlg = 'ECDH-ES';\r\n }\r\n\r\n if (expectedAlg && jwk.alg !== undefined && jwk.alg !== expectedAlg) {\r\n throw lazyDOMException(\r\n 'JWK \"alg\" does not match the requested algorithm',\r\n 'DataError',\r\n );\r\n }\r\n }\r\n\r\n // Import using C++ layer\r\n const handle =\r\n NitroModules.createHybridObject<KeyObjectHandle>('KeyObjectHandle');\r\n const keyType = handle.initJwk(jwk, namedCurve as NamedCurve);\r\n\r\n if (keyType === undefined) {\r\n throw lazyDOMException('Invalid JWK', 'DataError');\r\n }\r\n\r\n // Create the appropriate KeyObject based on type\r\n let keyObject: KeyObject;\r\n if (keyType === 1) {\r\n keyObject = new PublicKeyObject(handle);\r\n } else if (keyType === 2) {\r\n keyObject = new PrivateKeyObject(handle);\r\n } else {\r\n throw lazyDOMException(\r\n 'Unexpected key type from JWK import',\r\n 'DataError',\r\n );\r\n }\r\n\r\n return new CryptoKey(keyObject, algorithm, keyUsages, extractable);\r\n }\r\n\r\n // Handle binary formats (spki, pkcs8, raw)\r\n if (format !== 'spki' && format !== 'pkcs8' && format !== 'raw') {\r\n throw lazyDOMException(\r\n `Unsupported format: ${format}`,\r\n 'NotSupportedError',\r\n );\r\n }\r\n\r\n // Determine expected key type based on format\r\n const expectedKeyType =\r\n format === 'spki' || format === 'raw' ? 'public' : 'private';\r\n\r\n // Validate usages for the key type\r\n const isPublicKey = expectedKeyType === 'public';\r\n let validUsages: KeyUsage[];\r\n\r\n if (name === 'ECDSA') {\r\n validUsages = isPublicKey ? ['verify'] : ['sign'];\r\n } else if (name === 'ECDH') {\r\n validUsages = isPublicKey ? [] : ['deriveKey', 'deriveBits'];\r\n } else {\r\n throw lazyDOMException('Unsupported algorithm', 'NotSupportedError');\r\n }\r\n\r\n if (hasAnyNotIn(keyUsages, validUsages)) {\r\n throw lazyDOMException(\r\n `Unsupported key usage for a ${name} key`,\r\n 'SyntaxError',\r\n );\r\n }\r\n\r\n // Convert keyData to ArrayBuffer\r\n const keyBuffer = bufferLikeToArrayBuffer(keyData as BufferLike);\r\n\r\n // Create KeyObject directly using the appropriate format\r\n let keyObject: KeyObject;\r\n\r\n if (format === 'raw') {\r\n // Raw format is only for public keys - use specialized EC raw import\r\n const handle =\r\n NitroModules.createHybridObject<KeyObjectHandle>('KeyObjectHandle');\r\n const curveAlias =\r\n kNamedCurveAliases[namedCurve as keyof typeof kNamedCurveAliases];\r\n // Only throw if initialization explicitly fails\r\n if (!handle.initECRaw(curveAlias, keyBuffer)) {\r\n throw lazyDOMException('Failed to import EC raw key', 'DataError');\r\n }\r\n keyObject = new PublicKeyObject(handle);\r\n } else {\r\n // Use standard DER import for spki/pkcs8\r\n keyObject = KeyObject.createKeyObject(\r\n expectedKeyType,\r\n keyBuffer,\r\n KFormatType.DER,\r\n format === 'spki' ? KeyEncoding.SPKI : KeyEncoding.PKCS8,\r\n );\r\n }\r\n\r\n return new CryptoKey(keyObject, algorithm, keyUsages, extractable);\r\n}\r\n\r\n// Node API\r\nexport const ecdsaSignVerify = (\r\n key: CryptoKey,\r\n data: BufferLike,\r\n { hash }: SubtleAlgorithm,\r\n signature?: BufferLike,\r\n): ArrayBuffer | boolean => {\r\n const isSign = signature === undefined;\r\n const expectedKeyType = isSign ? 'private' : 'public';\r\n\r\n if (key.type !== expectedKeyType) {\r\n throw lazyDOMException(\r\n `Key must be a ${expectedKeyType} key`,\r\n 'InvalidAccessError',\r\n );\r\n }\r\n\r\n const hashName = typeof hash === 'string' ? hash : hash?.name;\r\n\r\n if (!hashName) {\r\n throw lazyDOMException(\r\n 'Hash algorithm is required for ECDSA',\r\n 'InvalidAccessError',\r\n );\r\n }\r\n\r\n // Normalize hash algorithm name to WebCrypto format for C++ layer\r\n const normalizedHashName = normalizeHashName(hashName, HashContext.WebCrypto);\r\n\r\n // Create EC instance with the curve from the key\r\n const namedCurve = key.algorithm.namedCurve!;\r\n const ec = new Ec(namedCurve);\r\n\r\n // Extract and import the actual key data from the CryptoKey\r\n // Export in DER format with appropriate encoding\r\n const encoding =\r\n key.type === 'private' ? KeyEncoding.PKCS8 : KeyEncoding.SPKI;\r\n const keyData = key.keyObject.handle.exportKey(KFormatType.DER, encoding);\r\n const keyBuffer = bufferLikeToArrayBuffer(keyData);\r\n ec.native.importKey(\r\n 'der',\r\n keyBuffer,\r\n key.algorithm.name!,\r\n key.extractable,\r\n key.usages,\r\n );\r\n\r\n const dataBuffer = bufferLikeToArrayBuffer(data);\r\n\r\n if (isSign) {\r\n // Sign operation\r\n return ec.native.sign(dataBuffer, normalizedHashName);\r\n } else {\r\n // Verify operation\r\n const signatureBuffer = bufferLikeToArrayBuffer(signature!);\r\n return ec.native.verify(dataBuffer, signatureBuffer, normalizedHashName);\r\n }\r\n};\r\n\r\n// WebCrypto API - only P-256, P-384, P-521 allowed per spec\r\n\r\nexport async function ec_generateKeyPair(\r\n name: string,\r\n namedCurve: string,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n _options?: KeyPairOptions, // TODO: Implement format options support\r\n): Promise<CryptoKeyPair> {\r\n // validation checks\r\n if (!Object.keys(kNamedCurveAliases).includes(namedCurve || '')) {\r\n throw lazyDOMException(\r\n `Unrecognized namedCurve '${namedCurve}'`,\r\n 'NotSupportedError',\r\n );\r\n }\r\n\r\n switch (name) {\r\n case 'ECDSA':\r\n if (hasAnyNotIn(keyUsages, ['sign', 'verify'])) {\r\n throw lazyDOMException(\r\n 'Unsupported key usage for an ECDSA key',\r\n 'SyntaxError',\r\n );\r\n }\r\n break;\r\n case 'ECDH':\r\n if (hasAnyNotIn(keyUsages, ['deriveKey', 'deriveBits'])) {\r\n throw lazyDOMException(\r\n 'Unsupported key usage for an ECDH key',\r\n 'SyntaxError',\r\n );\r\n }\r\n // Fall through\r\n }\r\n\r\n const ec = new Ec(namedCurve!);\r\n await ec.generateKeyPair();\r\n\r\n let publicUsages: KeyUsage[] = [];\r\n let privateUsages: KeyUsage[] = [];\r\n switch (name) {\r\n case 'ECDSA':\r\n publicUsages = getUsagesUnion(keyUsages, 'verify');\r\n privateUsages = getUsagesUnion(keyUsages, 'sign');\r\n break;\r\n case 'ECDH':\r\n publicUsages = [];\r\n privateUsages = getUsagesUnion(keyUsages, 'deriveKey', 'deriveBits');\r\n break;\r\n }\r\n\r\n const keyAlgorithm = { name, namedCurve: namedCurve! };\r\n\r\n // Export keys directly from the EC key pair using the internal EVP_PKEY\r\n // These methods export in DER format (SPKI for public, PKCS8 for private)\r\n const publicKeyData = ec.native.getPublicKey();\r\n const privateKeyData = ec.native.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 keyAlgorithm as SubtleAlgorithm,\r\n publicUsages,\r\n true,\r\n );\r\n\r\n // All keys are now exported in PKCS8 format for consistency\r\n const priv = KeyObject.createKeyObject(\r\n 'private',\r\n privateKeyData,\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n ) as PrivateKeyObject;\r\n const privateKey = new CryptoKey(\r\n priv,\r\n keyAlgorithm as SubtleAlgorithm,\r\n privateUsages,\r\n extractable,\r\n );\r\n\r\n return { publicKey, privateKey };\r\n}\r\n\r\nfunction ec_prepareKeyGenParams(\r\n options: GenerateKeyPairOptions | undefined,\r\n): Ec {\r\n if (!options) {\r\n throw new Error('Options are required for EC key generation');\r\n }\r\n\r\n const { namedCurve } = options as { namedCurve?: string };\r\n\r\n if (!namedCurve) {\r\n throw new Error('namedCurve is required for EC key generation');\r\n }\r\n\r\n return new Ec(namedCurve);\r\n}\r\n\r\nfunction ec_formatKeyPairOutput(\r\n ec: Ec,\r\n encoding: KeyPairGenConfig,\r\n): {\r\n publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n} {\r\n const {\r\n publicFormat,\r\n publicType,\r\n privateFormat,\r\n privateType,\r\n cipher,\r\n passphrase,\r\n } = encoding;\r\n\r\n const publicKeyData = ec.native.getPublicKey();\r\n const privateKeyData = ec.native.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\r\n const priv = KeyObject.createKeyObject(\r\n 'private',\r\n privateKeyData,\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n ) as PrivateKeyObject;\r\n\r\n let publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n let privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n\r\n if (publicFormat === -1) {\r\n publicKey = pub;\r\n } else {\r\n const format =\r\n publicFormat === KFormatType.PEM ? KFormatType.PEM : KFormatType.DER;\r\n const keyEncoding =\r\n publicType === KeyEncoding.SPKI ? KeyEncoding.SPKI : KeyEncoding.SPKI;\r\n const exported = pub.handle.exportKey(format, keyEncoding);\r\n if (format === KFormatType.PEM) {\r\n publicKey = Buffer.from(new Uint8Array(exported)).toString('utf-8');\r\n } else {\r\n publicKey = exported;\r\n }\r\n }\r\n\r\n if (privateFormat === -1) {\r\n privateKey = priv;\r\n } else {\r\n const format =\r\n privateFormat === KFormatType.PEM ? KFormatType.PEM : KFormatType.DER;\r\n const keyEncoding =\r\n privateType === KeyEncoding.PKCS8\r\n ? KeyEncoding.PKCS8\r\n : privateType === KeyEncoding.SEC1\r\n ? KeyEncoding.SEC1\r\n : KeyEncoding.PKCS8;\r\n const exported = priv.handle.exportKey(\r\n format,\r\n keyEncoding,\r\n cipher,\r\n passphrase,\r\n );\r\n if (format === KFormatType.PEM) {\r\n privateKey = Buffer.from(new Uint8Array(exported)).toString('utf-8');\r\n } else {\r\n privateKey = exported;\r\n }\r\n }\r\n\r\n return { publicKey, privateKey };\r\n}\r\n\r\nexport async function ec_generateKeyPairNode(\r\n options: GenerateKeyPairOptions | undefined,\r\n encoding: KeyPairGenConfig,\r\n): Promise<{\r\n publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n}> {\r\n const ec = ec_prepareKeyGenParams(options);\r\n await ec.generateKeyPair();\r\n return ec_formatKeyPairOutput(ec, encoding);\r\n}\r\n\r\nexport function ec_generateKeyPairNodeSync(\r\n options: GenerateKeyPairOptions | undefined,\r\n encoding: KeyPairGenConfig,\r\n): {\r\n publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n} {\r\n const ec = ec_prepareKeyGenParams(options);\r\n ec.generateKeyPairSync();\r\n return ec_formatKeyPairOutput(ec, encoding);\r\n}\r\n\r\nexport function ecDeriveBits(\r\n algorithm: SubtleAlgorithm,\r\n baseKey: CryptoKey,\r\n length: number | null,\r\n): ArrayBuffer {\r\n const publicKey = algorithm.public;\r\n\r\n if (!publicKey) {\r\n throw new Error('Public key is required for ECDH derivation');\r\n }\r\n\r\n if (baseKey.algorithm.name !== publicKey.algorithm.name) {\r\n throw new Error('Keys must be of the same algorithm');\r\n }\r\n\r\n if (baseKey.algorithm.namedCurve !== publicKey.algorithm.namedCurve) {\r\n throw new Error('Keys must use the same curve');\r\n }\r\n\r\n const namedCurve = baseKey.algorithm.namedCurve;\r\n if (!namedCurve) {\r\n throw new Error('Curve name is missing');\r\n }\r\n\r\n const opensslCurve =\r\n kNamedCurveAliases[namedCurve as keyof typeof kNamedCurveAliases];\r\n const ecdh = new ECDH(opensslCurve);\r\n\r\n const jwkPrivate = baseKey.keyObject.handle.exportJwk({}, false);\r\n if (!jwkPrivate.d) throw new Error('Invalid private key');\r\n const privateBytes = Buffer.from(jwkPrivate.d, 'base64url');\r\n ecdh.setPrivateKey(privateBytes);\r\n\r\n const jwkPublic = publicKey.keyObject.handle.exportJwk({}, false);\r\n if (!jwkPublic.x || !jwkPublic.y) throw new Error('Invalid public key');\r\n const x = Buffer.from(jwkPublic.x, 'base64url');\r\n const y = Buffer.from(jwkPublic.y, 'base64url');\r\n const publicBytes = Buffer.concat([Buffer.from([0x04]), x, y]);\r\n\r\n const secret = ecdh.computeSecret(publicBytes);\r\n const secretBuf = Buffer.from(secret);\r\n\r\n // If length is null, return full secret\r\n if (length === null) {\r\n return secretBuf.buffer;\r\n }\r\n\r\n // If length is specified, truncate\r\n const byteLength = Math.ceil(length / 8);\r\n if (secretBuf.byteLength >= byteLength) {\r\n return secretBuf.buffer.slice(\r\n secretBuf.byteOffset,\r\n secretBuf.byteOffset + byteLength,\r\n ) as ArrayBuffer;\r\n }\r\n\r\n throw new Error('Derived key is shorter than requested length');\r\n}\r\n"],"mappings":"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","ignoreList":[]}
@@ -10,7 +10,7 @@ var _reactNativeBuffer = require("@craftzdog/react-native-buffer");
10
10
  var _conversion = require("./utils/conversion");
11
11
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
12
12
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
13
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
13
+ function _toPrimitive(t, e) { if ("object" != typeof t || !t) return t; var r; if ("undefined" != typeof Symbol && void 0 !== (r = t[Symbol.toPrimitive])) { var i = r.call(t, e || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === e ? String : Number)(t); }
14
14
  const POINT_CONVERSION_COMPRESSED = 2;
15
15
  const POINT_CONVERSION_UNCOMPRESSED = 4;
16
16
  const POINT_CONVERSION_HYBRID = 6;
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeNitroModules","require","_reactNativeBuffer","_conversion","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","POINT_CONVERSION_COMPRESSED","POINT_CONVERSION_UNCOMPRESSED","POINT_CONVERSION_HYBRID","ECDH","convertKeyHybrid","_convertKeyHybrid","NitroModules","createHybridObject","constructor","curveName","_hybrid","init","generateKeys","key","Buffer","from","computeSecret","otherPublicKey","inputEncoding","keyBuf","isBuffer","secret","toArrayBuffer","getPrivateKey","setPrivateKey","privateKey","encoding","getPublicKey","pub","toString","setPublicKey","publicKey","convertKey","curve","outputEncoding","format","formatNum","undefined","result","exports","createECDH"],"sources":["ecdh.ts"],"sourcesContent":["import { NitroModules } from 'react-native-nitro-modules';\r\nimport type { ECDH as ECDHInterface } from './specs/v1/ecdh.nitro';\r\nimport { Buffer } from '@craftzdog/react-native-buffer';\r\nimport { toArrayBuffer } from './utils/conversion';\r\n\r\nconst POINT_CONVERSION_COMPRESSED = 2;\r\nconst POINT_CONVERSION_UNCOMPRESSED = 4;\r\nconst POINT_CONVERSION_HYBRID = 6;\r\n\r\nexport class ECDH {\r\n private static _convertKeyHybrid: ECDHInterface | undefined;\r\n private static get convertKeyHybrid(): ECDHInterface {\r\n if (!this._convertKeyHybrid) {\r\n this._convertKeyHybrid =\r\n NitroModules.createHybridObject<ECDHInterface>('ECDH');\r\n }\r\n return this._convertKeyHybrid;\r\n }\r\n\r\n private _hybrid: ECDHInterface;\r\n\r\n constructor(curveName: string) {\r\n this._hybrid = NitroModules.createHybridObject<ECDHInterface>('ECDH');\r\n this._hybrid.init(curveName);\r\n }\r\n\r\n generateKeys(): Buffer {\r\n const key = this._hybrid.generateKeys();\r\n return Buffer.from(key);\r\n }\r\n\r\n computeSecret(\r\n otherPublicKey: Buffer | string | { code: number; byteLength: number },\r\n inputEncoding?: BufferEncoding,\r\n ): Buffer {\r\n let keyBuf: Buffer;\r\n if (Buffer.isBuffer(otherPublicKey)) {\r\n keyBuf = otherPublicKey;\r\n } else if (typeof otherPublicKey === 'string') {\r\n keyBuf = Buffer.from(otherPublicKey, inputEncoding);\r\n } else {\r\n // Handle array view or other types if necessary, but Node.js typically expects Buffer or string + encoding\r\n throw new TypeError('Invalid otherPublicKey type');\r\n }\r\n\r\n // ECDH.computeSecret in Node.js returns Buffer\r\n const secret = this._hybrid.computeSecret(toArrayBuffer(keyBuf));\r\n return Buffer.from(secret);\r\n }\r\n\r\n getPrivateKey(): Buffer {\r\n return Buffer.from(this._hybrid.getPrivateKey());\r\n }\r\n\r\n setPrivateKey(privateKey: Buffer | string, encoding?: BufferEncoding): void {\r\n let keyBuf: Buffer;\r\n if (Buffer.isBuffer(privateKey)) {\r\n keyBuf = privateKey;\r\n } else {\r\n keyBuf = Buffer.from(privateKey, encoding);\r\n }\r\n this._hybrid.setPrivateKey(toArrayBuffer(keyBuf));\r\n }\r\n\r\n getPublicKey(encoding?: BufferEncoding): Buffer | string {\r\n // Node.js getPublicKey([encoding[, format]])\r\n // If encoding is provided, returns string. If not, Buffer.\r\n // Our C++ returns ArrayBuffer (Buffer).\r\n // We ignore format for now as C++ implementation defaults to uncompressed.\r\n const pub = Buffer.from(this._hybrid.getPublicKey());\r\n if (encoding) {\r\n return pub.toString(encoding);\r\n }\r\n return pub;\r\n }\r\n\r\n setPublicKey(publicKey: Buffer | string, encoding?: BufferEncoding): void {\r\n let keyBuf: Buffer;\r\n if (Buffer.isBuffer(publicKey)) {\r\n keyBuf = publicKey;\r\n } else {\r\n keyBuf = Buffer.from(publicKey, encoding);\r\n }\r\n this._hybrid.setPublicKey(toArrayBuffer(keyBuf));\r\n }\r\n\r\n static convertKey(\r\n key: Buffer | string,\r\n curve: string,\r\n inputEncoding?: BufferEncoding,\r\n outputEncoding?: BufferEncoding,\r\n format?: 'uncompressed' | 'compressed' | 'hybrid',\r\n ): Buffer | string {\r\n let keyBuf: Buffer;\r\n if (Buffer.isBuffer(key)) {\r\n keyBuf = key;\r\n } else {\r\n keyBuf = Buffer.from(key, inputEncoding);\r\n }\r\n\r\n let formatNum: number;\r\n switch (format) {\r\n case 'compressed':\r\n formatNum = POINT_CONVERSION_COMPRESSED;\r\n break;\r\n case 'hybrid':\r\n formatNum = POINT_CONVERSION_HYBRID;\r\n break;\r\n case 'uncompressed':\r\n case undefined:\r\n formatNum = POINT_CONVERSION_UNCOMPRESSED;\r\n break;\r\n default:\r\n throw new TypeError(\r\n `Invalid point conversion format: ${format as string}`,\r\n );\r\n }\r\n\r\n const result = Buffer.from(\r\n ECDH.convertKeyHybrid.convertKey(toArrayBuffer(keyBuf), curve, formatNum),\r\n );\r\n\r\n if (outputEncoding) {\r\n return result.toString(outputEncoding);\r\n }\r\n return result;\r\n }\r\n}\r\n\r\nexport function createECDH(curveName: string): ECDH {\r\n return new ECDH(curveName);\r\n}\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeNitroModules","require","_reactNativeBuffer","_conversion","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","POINT_CONVERSION_COMPRESSED","POINT_CONVERSION_UNCOMPRESSED","POINT_CONVERSION_HYBRID","ECDH","convertKeyHybrid","_convertKeyHybrid","NitroModules","createHybridObject","constructor","curveName","_hybrid","init","generateKeys","key","Buffer","from","computeSecret","otherPublicKey","inputEncoding","keyBuf","isBuffer","secret","toArrayBuffer","getPrivateKey","setPrivateKey","privateKey","encoding","getPublicKey","pub","toString","setPublicKey","publicKey","convertKey","curve","outputEncoding","format","formatNum","undefined","result","exports","createECDH"],"sources":["ecdh.ts"],"sourcesContent":["import { NitroModules } from 'react-native-nitro-modules';\r\nimport type { ECDH as ECDHInterface } from './specs/v1/ecdh.nitro';\r\nimport { Buffer } from '@craftzdog/react-native-buffer';\r\nimport { toArrayBuffer } from './utils/conversion';\r\n\r\nconst POINT_CONVERSION_COMPRESSED = 2;\r\nconst POINT_CONVERSION_UNCOMPRESSED = 4;\r\nconst POINT_CONVERSION_HYBRID = 6;\r\n\r\nexport class ECDH {\r\n private static _convertKeyHybrid: ECDHInterface | undefined;\r\n private static get convertKeyHybrid(): ECDHInterface {\r\n if (!this._convertKeyHybrid) {\r\n this._convertKeyHybrid =\r\n NitroModules.createHybridObject<ECDHInterface>('ECDH');\r\n }\r\n return this._convertKeyHybrid;\r\n }\r\n\r\n private _hybrid: ECDHInterface;\r\n\r\n constructor(curveName: string) {\r\n this._hybrid = NitroModules.createHybridObject<ECDHInterface>('ECDH');\r\n this._hybrid.init(curveName);\r\n }\r\n\r\n generateKeys(): Buffer {\r\n const key = this._hybrid.generateKeys();\r\n return Buffer.from(key);\r\n }\r\n\r\n computeSecret(\r\n otherPublicKey: Buffer | string | { code: number; byteLength: number },\r\n inputEncoding?: BufferEncoding,\r\n ): Buffer {\r\n let keyBuf: Buffer;\r\n if (Buffer.isBuffer(otherPublicKey)) {\r\n keyBuf = otherPublicKey;\r\n } else if (typeof otherPublicKey === 'string') {\r\n keyBuf = Buffer.from(otherPublicKey, inputEncoding);\r\n } else {\r\n // Handle array view or other types if necessary, but Node.js typically expects Buffer or string + encoding\r\n throw new TypeError('Invalid otherPublicKey type');\r\n }\r\n\r\n // ECDH.computeSecret in Node.js returns Buffer\r\n const secret = this._hybrid.computeSecret(toArrayBuffer(keyBuf));\r\n return Buffer.from(secret);\r\n }\r\n\r\n getPrivateKey(): Buffer {\r\n return Buffer.from(this._hybrid.getPrivateKey());\r\n }\r\n\r\n setPrivateKey(privateKey: Buffer | string, encoding?: BufferEncoding): void {\r\n let keyBuf: Buffer;\r\n if (Buffer.isBuffer(privateKey)) {\r\n keyBuf = privateKey;\r\n } else {\r\n keyBuf = Buffer.from(privateKey, encoding);\r\n }\r\n this._hybrid.setPrivateKey(toArrayBuffer(keyBuf));\r\n }\r\n\r\n getPublicKey(encoding?: BufferEncoding): Buffer | string {\r\n // Node.js getPublicKey([encoding[, format]])\r\n // If encoding is provided, returns string. If not, Buffer.\r\n // Our C++ returns ArrayBuffer (Buffer).\r\n // We ignore format for now as C++ implementation defaults to uncompressed.\r\n const pub = Buffer.from(this._hybrid.getPublicKey());\r\n if (encoding) {\r\n return pub.toString(encoding);\r\n }\r\n return pub;\r\n }\r\n\r\n setPublicKey(publicKey: Buffer | string, encoding?: BufferEncoding): void {\r\n let keyBuf: Buffer;\r\n if (Buffer.isBuffer(publicKey)) {\r\n keyBuf = publicKey;\r\n } else {\r\n keyBuf = Buffer.from(publicKey, encoding);\r\n }\r\n this._hybrid.setPublicKey(toArrayBuffer(keyBuf));\r\n }\r\n\r\n static convertKey(\r\n key: Buffer | string,\r\n curve: string,\r\n inputEncoding?: BufferEncoding,\r\n outputEncoding?: BufferEncoding,\r\n format?: 'uncompressed' | 'compressed' | 'hybrid',\r\n ): Buffer | string {\r\n let keyBuf: Buffer;\r\n if (Buffer.isBuffer(key)) {\r\n keyBuf = key;\r\n } else {\r\n keyBuf = Buffer.from(key, inputEncoding);\r\n }\r\n\r\n let formatNum: number;\r\n switch (format) {\r\n case 'compressed':\r\n formatNum = POINT_CONVERSION_COMPRESSED;\r\n break;\r\n case 'hybrid':\r\n formatNum = POINT_CONVERSION_HYBRID;\r\n break;\r\n case 'uncompressed':\r\n case undefined:\r\n formatNum = POINT_CONVERSION_UNCOMPRESSED;\r\n break;\r\n default:\r\n throw new TypeError(\r\n `Invalid point conversion format: ${format as string}`,\r\n );\r\n }\r\n\r\n const result = Buffer.from(\r\n ECDH.convertKeyHybrid.convertKey(toArrayBuffer(keyBuf), curve, formatNum),\r\n );\r\n\r\n if (outputEncoding) {\r\n return result.toString(outputEncoding);\r\n }\r\n return result;\r\n }\r\n}\r\n\r\nexport function createECDH(curveName: string): ECDH {\r\n return new ECDH(curveName);\r\n}\r\n"],"mappings":"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","ignoreList":[]}
@@ -16,7 +16,7 @@ var _utils = require("./utils");
16
16
  var _ecdh = require("./ecdh");
17
17
  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; }
18
18
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
19
- 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); }
19
+ 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); }
20
20
  class Ed {
21
21
  constructor(type, config) {
22
22
  _defineProperty(this, "type", void 0);
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeNitroModules","require","_reactNativeBuffer","_classes","_utils","_ecdh","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","Ed","constructor","type","config","native","NitroModules","createHybridObject","setCurve","diffieHellman","options","callback","privKeyObj","privateKey","pubKeyObj","publicKey","handle","exportKey","ret","Error","Buffer","from","err","undefined","generateKeyPair","publicFormat","publicType","privateFormat","privateType","cipher","passphrase","generateKeyPairSync","getPublicKey","getPrivateKey","getSharedSecret","toAB","sign","message","key","signSync","verify","signature","verifySync","exports","checkDiffieHellmanOptions","keyType","asymmetricKeyType","ecDiffieHellman","ed","ed_createKeyObjects","publicKeyData","privateKeyData","pub","KeyObject","createKeyObject","KFormatType","DER","KeyEncoding","SPKI","priv","PKCS8","ed_formatKeyPairOutput","encoding","format","PEM","exported","Uint8Array","toString","ed_generateKeyPair","isAsync","derConfig","then","catch","curveName","namedCurve","ecdh","ECDH","jwkPrivate","exportJwk","d","setPrivateKey","jwkPublic","x","y","publicBytes","concat","secret","computeSecret","privateKeyAsym","publicKeyAsym","privateCurve","publicCurve","ed_generateKeyPairWebCrypto","extractable","keyUsages","hasAnyNotIn","lazyDOMException","publicUsages","getUsagesUnion","privateUsages","length","algorithmName","CryptoKey","name","x_generateKeyPairWebCrypto","xDeriveBits","algorithm","baseKey","public","toLowerCase","privateKeyBytes","keyObject","publicKeyBytes","privateKeyTyped","publicKeyTyped","byteLength","Math","ceil","slice"],"sources":["ed.ts"],"sourcesContent":["import { NitroModules } from 'react-native-nitro-modules';\r\nimport { Buffer } from '@craftzdog/react-native-buffer';\r\nimport type { AsymmetricKeyObject, PrivateKeyObject } from './keys/classes';\r\nimport {\r\n CryptoKey,\r\n KeyObject,\r\n PublicKeyObject,\r\n PrivateKeyObject as PrivateKeyObjectClass,\r\n} from './keys/classes';\r\nimport type { EdKeyPair } from './specs/v1/edKeyPair.nitro';\r\nimport type {\r\n BinaryLike,\r\n CFRGKeyPairType,\r\n CryptoKeyPair,\r\n DiffieHellmanCallback,\r\n DiffieHellmanOptions,\r\n GenerateKeyPairCallback,\r\n GenerateKeyPairReturn,\r\n Hex,\r\n KeyPairGenConfig,\r\n KeyUsage,\r\n SubtleAlgorithm,\r\n} from './utils';\r\nimport {\r\n binaryLikeToArrayBuffer as toAB,\r\n hasAnyNotIn,\r\n lazyDOMException,\r\n getUsagesUnion,\r\n KFormatType,\r\n KeyEncoding,\r\n} from './utils';\r\nimport { ECDH } from './ecdh';\r\n\r\nexport class Ed {\r\n type: CFRGKeyPairType;\r\n config: KeyPairGenConfig;\r\n native: EdKeyPair;\r\n\r\n constructor(type: CFRGKeyPairType, config: KeyPairGenConfig) {\r\n this.type = type;\r\n this.config = config;\r\n this.native = NitroModules.createHybridObject<EdKeyPair>('EdKeyPair');\r\n this.native.setCurve(type);\r\n }\r\n\r\n /**\r\n * Computes the Diffie-Hellman secret based on a privateKey and a publicKey.\r\n * Both keys must have the same asymmetricKeyType, which must be one of 'dh'\r\n * (for Diffie-Hellman), 'ec', 'x448', or 'x25519' (for ECDH).\r\n *\r\n * @api nodejs/node\r\n *\r\n * @param options `{ privateKey, publicKey }`, both of which are `KeyObject`s\r\n * @param callback optional `(err, secret) => void`\r\n * @returns `Buffer` if no callback, or `void` if callback is provided\r\n */\r\n diffieHellman(\r\n options: DiffieHellmanOptions,\r\n callback?: DiffieHellmanCallback,\r\n ): Buffer | void {\r\n // extract raw key bytes from KeyObject instances\r\n const privKeyObj = options.privateKey as AsymmetricKeyObject;\r\n const pubKeyObj = options.publicKey as AsymmetricKeyObject;\r\n const privateKey = privKeyObj.handle.exportKey();\r\n const publicKey = pubKeyObj.handle.exportKey();\r\n\r\n try {\r\n const ret = this.native.diffieHellman(privateKey, publicKey);\r\n if (!ret) {\r\n throw new Error('No secret');\r\n }\r\n if (callback) {\r\n callback(null, Buffer.from(ret));\r\n } else {\r\n return Buffer.from(ret);\r\n }\r\n } catch (e: unknown) {\r\n const err = e as Error;\r\n if (callback) {\r\n callback(err, undefined);\r\n } else {\r\n throw err;\r\n }\r\n }\r\n }\r\n\r\n async generateKeyPair(): Promise<void> {\r\n await this.native.generateKeyPair(\r\n this.config.publicFormat ?? -1,\r\n this.config.publicType ?? -1,\r\n this.config.privateFormat ?? -1,\r\n this.config.privateType ?? -1,\r\n this.config.cipher,\r\n this.config.passphrase as ArrayBuffer,\r\n );\r\n }\r\n\r\n generateKeyPairSync(): void {\r\n this.native.generateKeyPairSync(\r\n this.config.publicFormat ?? -1,\r\n this.config.publicType ?? -1,\r\n this.config.privateFormat ?? -1,\r\n this.config.privateType ?? -1,\r\n this.config.cipher,\r\n this.config.passphrase as ArrayBuffer,\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 /**\r\n * Computes the Diffie-Hellman shared secret based on a privateKey and a\r\n * publicKey for key exchange\r\n *\r\n * @api \\@paulmillr/noble-curves/ed25519\r\n *\r\n * @param privateKey\r\n * @param publicKey\r\n * @returns shared secret key\r\n */\r\n getSharedSecret(privateKey: Hex, publicKey: Hex): ArrayBuffer {\r\n return this.native.diffieHellman(toAB(privateKey), toAB(publicKey));\r\n }\r\n\r\n async sign(message: BinaryLike, key?: BinaryLike): Promise<ArrayBuffer> {\r\n return key\r\n ? this.native.sign(toAB(message), toAB(key))\r\n : this.native.sign(toAB(message));\r\n }\r\n\r\n signSync(message: BinaryLike, key?: BinaryLike): ArrayBuffer {\r\n return key\r\n ? this.native.signSync(toAB(message), toAB(key))\r\n : this.native.signSync(toAB(message));\r\n }\r\n\r\n async verify(\r\n signature: BinaryLike,\r\n message: BinaryLike,\r\n key?: BinaryLike,\r\n ): Promise<boolean> {\r\n return key\r\n ? this.native.verify(toAB(signature), toAB(message), toAB(key))\r\n : this.native.verify(toAB(signature), toAB(message));\r\n }\r\n\r\n verifySync(\r\n signature: BinaryLike,\r\n message: BinaryLike,\r\n key?: BinaryLike,\r\n ): boolean {\r\n return key\r\n ? this.native.verifySync(toAB(signature), toAB(message), toAB(key))\r\n : this.native.verifySync(toAB(signature), toAB(message));\r\n }\r\n}\r\n\r\n// Node API\r\nexport function diffieHellman(\r\n options: DiffieHellmanOptions,\r\n callback?: DiffieHellmanCallback,\r\n): Buffer | void {\r\n checkDiffieHellmanOptions(options);\r\n\r\n const privateKey = options.privateKey as PrivateKeyObject;\r\n const keyType = privateKey.asymmetricKeyType;\r\n\r\n if (keyType === 'ec') {\r\n return ecDiffieHellman(options, callback);\r\n }\r\n\r\n const type = keyType as CFRGKeyPairType;\r\n const ed = new Ed(type, {});\r\n return ed.diffieHellman(options, callback);\r\n}\r\n\r\nfunction ed_createKeyObjects(ed: Ed): {\r\n pub: PublicKeyObject;\r\n priv: PrivateKeyObjectClass;\r\n} {\r\n const publicKeyData = ed.getPublicKey();\r\n const privateKeyData = ed.getPrivateKey();\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 priv = KeyObject.createKeyObject(\r\n 'private',\r\n privateKeyData,\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n ) as PrivateKeyObjectClass;\r\n return { pub, priv };\r\n}\r\n\r\n// Node API\r\nfunction ed_formatKeyPairOutput(\r\n ed: Ed,\r\n encoding: KeyPairGenConfig,\r\n): {\r\n publicKey: PublicKeyObject | string | ArrayBuffer;\r\n privateKey: PrivateKeyObjectClass | string | ArrayBuffer;\r\n} {\r\n const { publicFormat, privateFormat, cipher, passphrase } = encoding;\r\n const { pub, priv } = ed_createKeyObjects(ed);\r\n\r\n let publicKey: PublicKeyObject | string | ArrayBuffer;\r\n let privateKey: PrivateKeyObjectClass | string | ArrayBuffer;\r\n\r\n if (publicFormat == null || publicFormat === -1) {\r\n publicKey = pub;\r\n } else {\r\n const format =\r\n publicFormat === KFormatType.PEM ? KFormatType.PEM : KFormatType.DER;\r\n const exported = pub.handle.exportKey(format, KeyEncoding.SPKI);\r\n if (format === KFormatType.PEM) {\r\n publicKey = Buffer.from(new Uint8Array(exported)).toString('utf-8');\r\n } else {\r\n publicKey = exported;\r\n }\r\n }\r\n\r\n if (privateFormat == null || privateFormat === -1) {\r\n privateKey = priv;\r\n } else {\r\n const format =\r\n privateFormat === KFormatType.PEM ? KFormatType.PEM : KFormatType.DER;\r\n const exported = priv.handle.exportKey(\r\n format,\r\n KeyEncoding.PKCS8,\r\n cipher,\r\n passphrase,\r\n );\r\n if (format === KFormatType.PEM) {\r\n privateKey = Buffer.from(new Uint8Array(exported)).toString('utf-8');\r\n } else {\r\n privateKey = exported;\r\n }\r\n }\r\n\r\n return { publicKey, privateKey };\r\n}\r\n\r\nexport function ed_generateKeyPair(\r\n isAsync: boolean,\r\n type: CFRGKeyPairType,\r\n encoding: KeyPairGenConfig,\r\n callback: GenerateKeyPairCallback | undefined,\r\n): GenerateKeyPairReturn | void {\r\n const derConfig: KeyPairGenConfig = {\r\n ...encoding,\r\n publicFormat: KFormatType.DER,\r\n publicType: KeyEncoding.SPKI,\r\n privateFormat: KFormatType.DER,\r\n privateType: KeyEncoding.PKCS8,\r\n };\r\n const ed = new Ed(type, derConfig);\r\n\r\n if (isAsync) {\r\n if (!callback) {\r\n throw new Error('A callback is required for async key generation.');\r\n }\r\n ed.generateKeyPair()\r\n .then(() => {\r\n const { publicKey, privateKey } = ed_formatKeyPairOutput(ed, encoding);\r\n callback(undefined, publicKey, privateKey);\r\n })\r\n .catch(err => {\r\n callback(err, undefined, undefined);\r\n });\r\n return;\r\n }\r\n\r\n let err: Error | undefined;\r\n try {\r\n ed.generateKeyPairSync();\r\n } catch (e) {\r\n err = e instanceof Error ? e : new Error(String(e));\r\n }\r\n\r\n const { publicKey, privateKey } = err\r\n ? { publicKey: undefined, privateKey: undefined }\r\n : ed_formatKeyPairOutput(ed, encoding);\r\n\r\n if (callback) {\r\n callback(err, publicKey, privateKey);\r\n return;\r\n }\r\n return [err, publicKey, privateKey];\r\n}\r\n\r\nfunction ecDiffieHellman(\r\n options: DiffieHellmanOptions,\r\n callback?: DiffieHellmanCallback,\r\n): Buffer | void {\r\n const privateKey = options.privateKey as PrivateKeyObject;\r\n const publicKey = options.publicKey as AsymmetricKeyObject;\r\n\r\n const curveName = privateKey.namedCurve;\r\n if (!curveName) {\r\n throw new Error('Unable to determine EC curve name from private key');\r\n }\r\n\r\n const ecdh = new ECDH(curveName);\r\n\r\n const jwkPrivate = privateKey.handle.exportJwk({}, false);\r\n if (!jwkPrivate.d) throw new Error('Invalid private key');\r\n ecdh.setPrivateKey(Buffer.from(jwkPrivate.d, 'base64url'));\r\n\r\n const jwkPublic = publicKey.handle.exportJwk({}, false);\r\n if (!jwkPublic.x || !jwkPublic.y) throw new Error('Invalid public key');\r\n const x = Buffer.from(jwkPublic.x, 'base64url');\r\n const y = Buffer.from(jwkPublic.y, 'base64url');\r\n const publicBytes = Buffer.concat([Buffer.from([0x04]), x, y]);\r\n\r\n try {\r\n const secret = ecdh.computeSecret(publicBytes);\r\n if (callback) {\r\n callback(null, secret);\r\n } else {\r\n return secret;\r\n }\r\n } catch (e: unknown) {\r\n const err = e as Error;\r\n if (callback) {\r\n callback(err, undefined);\r\n } else {\r\n throw err;\r\n }\r\n }\r\n}\r\n\r\nfunction checkDiffieHellmanOptions(options: DiffieHellmanOptions): void {\r\n const { privateKey, publicKey } = options;\r\n\r\n // Check if keys are KeyObject instances\r\n if (\r\n !privateKey ||\r\n typeof privateKey !== 'object' ||\r\n !('type' in privateKey)\r\n ) {\r\n throw new Error('privateKey must be a KeyObject');\r\n }\r\n if (!publicKey || typeof publicKey !== 'object' || !('type' in publicKey)) {\r\n throw new Error('publicKey must be a KeyObject');\r\n }\r\n\r\n // type checks\r\n if (privateKey.type !== 'private') {\r\n throw new Error('privateKey must be a private KeyObject');\r\n }\r\n if (publicKey.type !== 'public') {\r\n throw new Error('publicKey must be a public KeyObject');\r\n }\r\n\r\n // For asymmetric keys, check if they have the asymmetricKeyType property\r\n const privateKeyAsym = privateKey as AsymmetricKeyObject;\r\n const publicKeyAsym = publicKey as AsymmetricKeyObject;\r\n\r\n // key types must match\r\n if (\r\n privateKeyAsym.asymmetricKeyType &&\r\n publicKeyAsym.asymmetricKeyType &&\r\n privateKeyAsym.asymmetricKeyType !== publicKeyAsym.asymmetricKeyType\r\n ) {\r\n throw new Error('Keys must be asymmetric and their types must match');\r\n }\r\n\r\n switch (privateKeyAsym.asymmetricKeyType) {\r\n // case 'dh': // TODO: uncomment when implemented\r\n case 'ec': {\r\n const privateCurve = privateKeyAsym.namedCurve;\r\n const publicCurve = publicKeyAsym.namedCurve;\r\n if (privateCurve && publicCurve && privateCurve !== publicCurve) {\r\n throw new Error('Private and public key curves do not match');\r\n }\r\n break;\r\n }\r\n case 'x25519':\r\n case 'x448':\r\n break;\r\n default:\r\n throw new Error(\r\n `Unknown curve type: ${privateKeyAsym.asymmetricKeyType}`,\r\n );\r\n }\r\n}\r\n\r\nexport async function ed_generateKeyPairWebCrypto(\r\n type: 'ed25519' | 'ed448',\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n): Promise<CryptoKeyPair> {\r\n if (hasAnyNotIn(keyUsages, ['sign', 'verify'])) {\r\n throw lazyDOMException(`Unsupported key usage for ${type}`, 'SyntaxError');\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 // Request DER-encoded SPKI for public key, PKCS8 for private key\r\n const config = {\r\n publicFormat: KFormatType.DER,\r\n publicType: KeyEncoding.SPKI,\r\n privateFormat: KFormatType.DER,\r\n privateType: KeyEncoding.PKCS8,\r\n };\r\n const ed = new Ed(type, config);\r\n await ed.generateKeyPair();\r\n\r\n const algorithmName = type === 'ed25519' ? 'Ed25519' : 'Ed448';\r\n const { pub, priv } = ed_createKeyObjects(ed);\r\n\r\n const publicKey = new CryptoKey(\r\n pub,\r\n { name: algorithmName } as SubtleAlgorithm,\r\n publicUsages,\r\n true,\r\n );\r\n const privateKey = new CryptoKey(\r\n priv,\r\n { name: algorithmName } as SubtleAlgorithm,\r\n privateUsages,\r\n extractable,\r\n );\r\n\r\n return { publicKey, privateKey };\r\n}\r\n\r\nexport async function x_generateKeyPairWebCrypto(\r\n type: 'x25519' | 'x448',\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n): Promise<CryptoKeyPair> {\r\n if (hasAnyNotIn(keyUsages, ['deriveKey', 'deriveBits'])) {\r\n throw lazyDOMException(`Unsupported key usage for ${type}`, 'SyntaxError');\r\n }\r\n\r\n const publicUsages = getUsagesUnion(keyUsages);\r\n const privateUsages = getUsagesUnion(keyUsages, 'deriveKey', 'deriveBits');\r\n\r\n if (privateUsages.length === 0) {\r\n throw lazyDOMException('Usages cannot be empty', 'SyntaxError');\r\n }\r\n\r\n // Request DER-encoded SPKI for public key, PKCS8 for private key\r\n const config = {\r\n publicFormat: KFormatType.DER,\r\n publicType: KeyEncoding.SPKI,\r\n privateFormat: KFormatType.DER,\r\n privateType: KeyEncoding.PKCS8,\r\n };\r\n const ed = new Ed(type, config);\r\n await ed.generateKeyPair();\r\n\r\n const algorithmName = type === 'x25519' ? 'X25519' : 'X448';\r\n const { pub, priv } = ed_createKeyObjects(ed);\r\n\r\n const publicKey = new CryptoKey(\r\n pub,\r\n { name: algorithmName } as SubtleAlgorithm,\r\n publicUsages,\r\n true,\r\n );\r\n const privateKey = new CryptoKey(\r\n priv,\r\n { name: algorithmName } as SubtleAlgorithm,\r\n privateUsages,\r\n extractable,\r\n );\r\n\r\n return { publicKey, privateKey };\r\n}\r\n\r\nexport function xDeriveBits(\r\n algorithm: SubtleAlgorithm,\r\n baseKey: CryptoKey,\r\n length: number | null,\r\n): ArrayBuffer {\r\n const publicKey = algorithm.public;\r\n\r\n if (!publicKey) {\r\n throw new Error('Public key is required for X25519/X448 derivation');\r\n }\r\n\r\n if (baseKey.algorithm.name !== publicKey.algorithm.name) {\r\n throw new Error('Keys must be of the same algorithm');\r\n }\r\n\r\n const type = baseKey.algorithm.name.toLowerCase() as 'x25519' | 'x448';\r\n const ed = new Ed(type, {});\r\n\r\n // Export raw keys\r\n const privateKeyBytes = baseKey.keyObject.handle.exportKey();\r\n const publicKeyBytes = publicKey.keyObject.handle.exportKey();\r\n\r\n const privateKeyTyped = new Uint8Array(privateKeyBytes);\r\n const publicKeyTyped = new Uint8Array(publicKeyBytes);\r\n\r\n const secret = ed.getSharedSecret(privateKeyTyped, publicKeyTyped);\r\n\r\n // If length is null, return the full secret\r\n if (length === null) {\r\n return secret;\r\n }\r\n\r\n // If length is specified, truncate\r\n const byteLength = Math.ceil(length / 8);\r\n if (secret.byteLength >= byteLength) {\r\n return secret.slice(0, byteLength);\r\n }\r\n\r\n throw new Error('Derived key is shorter than requested length');\r\n}\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeNitroModules","require","_reactNativeBuffer","_classes","_utils","_ecdh","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","Ed","constructor","type","config","native","NitroModules","createHybridObject","setCurve","diffieHellman","options","callback","privKeyObj","privateKey","pubKeyObj","publicKey","handle","exportKey","ret","Error","Buffer","from","err","undefined","generateKeyPair","publicFormat","publicType","privateFormat","privateType","cipher","passphrase","generateKeyPairSync","getPublicKey","getPrivateKey","getSharedSecret","toAB","sign","message","key","signSync","verify","signature","verifySync","exports","checkDiffieHellmanOptions","keyType","asymmetricKeyType","ecDiffieHellman","ed","ed_createKeyObjects","publicKeyData","privateKeyData","pub","KeyObject","createKeyObject","KFormatType","DER","KeyEncoding","SPKI","priv","PKCS8","ed_formatKeyPairOutput","encoding","format","PEM","exported","Uint8Array","toString","ed_generateKeyPair","isAsync","derConfig","then","catch","curveName","namedCurve","ecdh","ECDH","jwkPrivate","exportJwk","d","setPrivateKey","jwkPublic","x","y","publicBytes","concat","secret","computeSecret","privateKeyAsym","publicKeyAsym","privateCurve","publicCurve","ed_generateKeyPairWebCrypto","extractable","keyUsages","hasAnyNotIn","lazyDOMException","publicUsages","getUsagesUnion","privateUsages","length","algorithmName","CryptoKey","name","x_generateKeyPairWebCrypto","xDeriveBits","algorithm","baseKey","public","toLowerCase","privateKeyBytes","keyObject","publicKeyBytes","privateKeyTyped","publicKeyTyped","byteLength","Math","ceil","slice"],"sources":["ed.ts"],"sourcesContent":["import { NitroModules } from 'react-native-nitro-modules';\r\nimport { Buffer } from '@craftzdog/react-native-buffer';\r\nimport type { AsymmetricKeyObject, PrivateKeyObject } from './keys/classes';\r\nimport {\r\n CryptoKey,\r\n KeyObject,\r\n PublicKeyObject,\r\n PrivateKeyObject as PrivateKeyObjectClass,\r\n} from './keys/classes';\r\nimport type { EdKeyPair } from './specs/v1/edKeyPair.nitro';\r\nimport type {\r\n BinaryLike,\r\n CFRGKeyPairType,\r\n CryptoKeyPair,\r\n DiffieHellmanCallback,\r\n DiffieHellmanOptions,\r\n GenerateKeyPairCallback,\r\n GenerateKeyPairReturn,\r\n Hex,\r\n KeyPairGenConfig,\r\n KeyUsage,\r\n SubtleAlgorithm,\r\n} from './utils';\r\nimport {\r\n binaryLikeToArrayBuffer as toAB,\r\n hasAnyNotIn,\r\n lazyDOMException,\r\n getUsagesUnion,\r\n KFormatType,\r\n KeyEncoding,\r\n} from './utils';\r\nimport { ECDH } from './ecdh';\r\n\r\nexport class Ed {\r\n type: CFRGKeyPairType;\r\n config: KeyPairGenConfig;\r\n native: EdKeyPair;\r\n\r\n constructor(type: CFRGKeyPairType, config: KeyPairGenConfig) {\r\n this.type = type;\r\n this.config = config;\r\n this.native = NitroModules.createHybridObject<EdKeyPair>('EdKeyPair');\r\n this.native.setCurve(type);\r\n }\r\n\r\n /**\r\n * Computes the Diffie-Hellman secret based on a privateKey and a publicKey.\r\n * Both keys must have the same asymmetricKeyType, which must be one of 'dh'\r\n * (for Diffie-Hellman), 'ec', 'x448', or 'x25519' (for ECDH).\r\n *\r\n * @api nodejs/node\r\n *\r\n * @param options `{ privateKey, publicKey }`, both of which are `KeyObject`s\r\n * @param callback optional `(err, secret) => void`\r\n * @returns `Buffer` if no callback, or `void` if callback is provided\r\n */\r\n diffieHellman(\r\n options: DiffieHellmanOptions,\r\n callback?: DiffieHellmanCallback,\r\n ): Buffer | void {\r\n // extract raw key bytes from KeyObject instances\r\n const privKeyObj = options.privateKey as AsymmetricKeyObject;\r\n const pubKeyObj = options.publicKey as AsymmetricKeyObject;\r\n const privateKey = privKeyObj.handle.exportKey();\r\n const publicKey = pubKeyObj.handle.exportKey();\r\n\r\n try {\r\n const ret = this.native.diffieHellman(privateKey, publicKey);\r\n if (!ret) {\r\n throw new Error('No secret');\r\n }\r\n if (callback) {\r\n callback(null, Buffer.from(ret));\r\n } else {\r\n return Buffer.from(ret);\r\n }\r\n } catch (e: unknown) {\r\n const err = e as Error;\r\n if (callback) {\r\n callback(err, undefined);\r\n } else {\r\n throw err;\r\n }\r\n }\r\n }\r\n\r\n async generateKeyPair(): Promise<void> {\r\n await this.native.generateKeyPair(\r\n this.config.publicFormat ?? -1,\r\n this.config.publicType ?? -1,\r\n this.config.privateFormat ?? -1,\r\n this.config.privateType ?? -1,\r\n this.config.cipher,\r\n this.config.passphrase as ArrayBuffer,\r\n );\r\n }\r\n\r\n generateKeyPairSync(): void {\r\n this.native.generateKeyPairSync(\r\n this.config.publicFormat ?? -1,\r\n this.config.publicType ?? -1,\r\n this.config.privateFormat ?? -1,\r\n this.config.privateType ?? -1,\r\n this.config.cipher,\r\n this.config.passphrase as ArrayBuffer,\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 /**\r\n * Computes the Diffie-Hellman shared secret based on a privateKey and a\r\n * publicKey for key exchange\r\n *\r\n * @api \\@paulmillr/noble-curves/ed25519\r\n *\r\n * @param privateKey\r\n * @param publicKey\r\n * @returns shared secret key\r\n */\r\n getSharedSecret(privateKey: Hex, publicKey: Hex): ArrayBuffer {\r\n return this.native.diffieHellman(toAB(privateKey), toAB(publicKey));\r\n }\r\n\r\n async sign(message: BinaryLike, key?: BinaryLike): Promise<ArrayBuffer> {\r\n return key\r\n ? this.native.sign(toAB(message), toAB(key))\r\n : this.native.sign(toAB(message));\r\n }\r\n\r\n signSync(message: BinaryLike, key?: BinaryLike): ArrayBuffer {\r\n return key\r\n ? this.native.signSync(toAB(message), toAB(key))\r\n : this.native.signSync(toAB(message));\r\n }\r\n\r\n async verify(\r\n signature: BinaryLike,\r\n message: BinaryLike,\r\n key?: BinaryLike,\r\n ): Promise<boolean> {\r\n return key\r\n ? this.native.verify(toAB(signature), toAB(message), toAB(key))\r\n : this.native.verify(toAB(signature), toAB(message));\r\n }\r\n\r\n verifySync(\r\n signature: BinaryLike,\r\n message: BinaryLike,\r\n key?: BinaryLike,\r\n ): boolean {\r\n return key\r\n ? this.native.verifySync(toAB(signature), toAB(message), toAB(key))\r\n : this.native.verifySync(toAB(signature), toAB(message));\r\n }\r\n}\r\n\r\n// Node API\r\nexport function diffieHellman(\r\n options: DiffieHellmanOptions,\r\n callback?: DiffieHellmanCallback,\r\n): Buffer | void {\r\n checkDiffieHellmanOptions(options);\r\n\r\n const privateKey = options.privateKey as PrivateKeyObject;\r\n const keyType = privateKey.asymmetricKeyType;\r\n\r\n if (keyType === 'ec') {\r\n return ecDiffieHellman(options, callback);\r\n }\r\n\r\n const type = keyType as CFRGKeyPairType;\r\n const ed = new Ed(type, {});\r\n return ed.diffieHellman(options, callback);\r\n}\r\n\r\nfunction ed_createKeyObjects(ed: Ed): {\r\n pub: PublicKeyObject;\r\n priv: PrivateKeyObjectClass;\r\n} {\r\n const publicKeyData = ed.getPublicKey();\r\n const privateKeyData = ed.getPrivateKey();\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 priv = KeyObject.createKeyObject(\r\n 'private',\r\n privateKeyData,\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n ) as PrivateKeyObjectClass;\r\n return { pub, priv };\r\n}\r\n\r\n// Node API\r\nfunction ed_formatKeyPairOutput(\r\n ed: Ed,\r\n encoding: KeyPairGenConfig,\r\n): {\r\n publicKey: PublicKeyObject | string | ArrayBuffer;\r\n privateKey: PrivateKeyObjectClass | string | ArrayBuffer;\r\n} {\r\n const { publicFormat, privateFormat, cipher, passphrase } = encoding;\r\n const { pub, priv } = ed_createKeyObjects(ed);\r\n\r\n let publicKey: PublicKeyObject | string | ArrayBuffer;\r\n let privateKey: PrivateKeyObjectClass | string | ArrayBuffer;\r\n\r\n if (publicFormat == null || publicFormat === -1) {\r\n publicKey = pub;\r\n } else {\r\n const format =\r\n publicFormat === KFormatType.PEM ? KFormatType.PEM : KFormatType.DER;\r\n const exported = pub.handle.exportKey(format, KeyEncoding.SPKI);\r\n if (format === KFormatType.PEM) {\r\n publicKey = Buffer.from(new Uint8Array(exported)).toString('utf-8');\r\n } else {\r\n publicKey = exported;\r\n }\r\n }\r\n\r\n if (privateFormat == null || privateFormat === -1) {\r\n privateKey = priv;\r\n } else {\r\n const format =\r\n privateFormat === KFormatType.PEM ? KFormatType.PEM : KFormatType.DER;\r\n const exported = priv.handle.exportKey(\r\n format,\r\n KeyEncoding.PKCS8,\r\n cipher,\r\n passphrase,\r\n );\r\n if (format === KFormatType.PEM) {\r\n privateKey = Buffer.from(new Uint8Array(exported)).toString('utf-8');\r\n } else {\r\n privateKey = exported;\r\n }\r\n }\r\n\r\n return { publicKey, privateKey };\r\n}\r\n\r\nexport function ed_generateKeyPair(\r\n isAsync: boolean,\r\n type: CFRGKeyPairType,\r\n encoding: KeyPairGenConfig,\r\n callback: GenerateKeyPairCallback | undefined,\r\n): GenerateKeyPairReturn | void {\r\n const derConfig: KeyPairGenConfig = {\r\n ...encoding,\r\n publicFormat: KFormatType.DER,\r\n publicType: KeyEncoding.SPKI,\r\n privateFormat: KFormatType.DER,\r\n privateType: KeyEncoding.PKCS8,\r\n };\r\n const ed = new Ed(type, derConfig);\r\n\r\n if (isAsync) {\r\n if (!callback) {\r\n throw new Error('A callback is required for async key generation.');\r\n }\r\n ed.generateKeyPair()\r\n .then(() => {\r\n const { publicKey, privateKey } = ed_formatKeyPairOutput(ed, encoding);\r\n callback(undefined, publicKey, privateKey);\r\n })\r\n .catch(err => {\r\n callback(err, undefined, undefined);\r\n });\r\n return;\r\n }\r\n\r\n let err: Error | undefined;\r\n try {\r\n ed.generateKeyPairSync();\r\n } catch (e) {\r\n err = e instanceof Error ? e : new Error(String(e));\r\n }\r\n\r\n const { publicKey, privateKey } = err\r\n ? { publicKey: undefined, privateKey: undefined }\r\n : ed_formatKeyPairOutput(ed, encoding);\r\n\r\n if (callback) {\r\n callback(err, publicKey, privateKey);\r\n return;\r\n }\r\n return [err, publicKey, privateKey];\r\n}\r\n\r\nfunction ecDiffieHellman(\r\n options: DiffieHellmanOptions,\r\n callback?: DiffieHellmanCallback,\r\n): Buffer | void {\r\n const privateKey = options.privateKey as PrivateKeyObject;\r\n const publicKey = options.publicKey as AsymmetricKeyObject;\r\n\r\n const curveName = privateKey.namedCurve;\r\n if (!curveName) {\r\n throw new Error('Unable to determine EC curve name from private key');\r\n }\r\n\r\n const ecdh = new ECDH(curveName);\r\n\r\n const jwkPrivate = privateKey.handle.exportJwk({}, false);\r\n if (!jwkPrivate.d) throw new Error('Invalid private key');\r\n ecdh.setPrivateKey(Buffer.from(jwkPrivate.d, 'base64url'));\r\n\r\n const jwkPublic = publicKey.handle.exportJwk({}, false);\r\n if (!jwkPublic.x || !jwkPublic.y) throw new Error('Invalid public key');\r\n const x = Buffer.from(jwkPublic.x, 'base64url');\r\n const y = Buffer.from(jwkPublic.y, 'base64url');\r\n const publicBytes = Buffer.concat([Buffer.from([0x04]), x, y]);\r\n\r\n try {\r\n const secret = ecdh.computeSecret(publicBytes);\r\n if (callback) {\r\n callback(null, secret);\r\n } else {\r\n return secret;\r\n }\r\n } catch (e: unknown) {\r\n const err = e as Error;\r\n if (callback) {\r\n callback(err, undefined);\r\n } else {\r\n throw err;\r\n }\r\n }\r\n}\r\n\r\nfunction checkDiffieHellmanOptions(options: DiffieHellmanOptions): void {\r\n const { privateKey, publicKey } = options;\r\n\r\n // Check if keys are KeyObject instances\r\n if (\r\n !privateKey ||\r\n typeof privateKey !== 'object' ||\r\n !('type' in privateKey)\r\n ) {\r\n throw new Error('privateKey must be a KeyObject');\r\n }\r\n if (!publicKey || typeof publicKey !== 'object' || !('type' in publicKey)) {\r\n throw new Error('publicKey must be a KeyObject');\r\n }\r\n\r\n // type checks\r\n if (privateKey.type !== 'private') {\r\n throw new Error('privateKey must be a private KeyObject');\r\n }\r\n if (publicKey.type !== 'public') {\r\n throw new Error('publicKey must be a public KeyObject');\r\n }\r\n\r\n // For asymmetric keys, check if they have the asymmetricKeyType property\r\n const privateKeyAsym = privateKey as AsymmetricKeyObject;\r\n const publicKeyAsym = publicKey as AsymmetricKeyObject;\r\n\r\n // key types must match\r\n if (\r\n privateKeyAsym.asymmetricKeyType &&\r\n publicKeyAsym.asymmetricKeyType &&\r\n privateKeyAsym.asymmetricKeyType !== publicKeyAsym.asymmetricKeyType\r\n ) {\r\n throw new Error('Keys must be asymmetric and their types must match');\r\n }\r\n\r\n switch (privateKeyAsym.asymmetricKeyType) {\r\n // case 'dh': // TODO: uncomment when implemented\r\n case 'ec': {\r\n const privateCurve = privateKeyAsym.namedCurve;\r\n const publicCurve = publicKeyAsym.namedCurve;\r\n if (privateCurve && publicCurve && privateCurve !== publicCurve) {\r\n throw new Error('Private and public key curves do not match');\r\n }\r\n break;\r\n }\r\n case 'x25519':\r\n case 'x448':\r\n break;\r\n default:\r\n throw new Error(\r\n `Unknown curve type: ${privateKeyAsym.asymmetricKeyType}`,\r\n );\r\n }\r\n}\r\n\r\nexport async function ed_generateKeyPairWebCrypto(\r\n type: 'ed25519' | 'ed448',\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n): Promise<CryptoKeyPair> {\r\n if (hasAnyNotIn(keyUsages, ['sign', 'verify'])) {\r\n throw lazyDOMException(`Unsupported key usage for ${type}`, 'SyntaxError');\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 // Request DER-encoded SPKI for public key, PKCS8 for private key\r\n const config = {\r\n publicFormat: KFormatType.DER,\r\n publicType: KeyEncoding.SPKI,\r\n privateFormat: KFormatType.DER,\r\n privateType: KeyEncoding.PKCS8,\r\n };\r\n const ed = new Ed(type, config);\r\n await ed.generateKeyPair();\r\n\r\n const algorithmName = type === 'ed25519' ? 'Ed25519' : 'Ed448';\r\n const { pub, priv } = ed_createKeyObjects(ed);\r\n\r\n const publicKey = new CryptoKey(\r\n pub,\r\n { name: algorithmName } as SubtleAlgorithm,\r\n publicUsages,\r\n true,\r\n );\r\n const privateKey = new CryptoKey(\r\n priv,\r\n { name: algorithmName } as SubtleAlgorithm,\r\n privateUsages,\r\n extractable,\r\n );\r\n\r\n return { publicKey, privateKey };\r\n}\r\n\r\nexport async function x_generateKeyPairWebCrypto(\r\n type: 'x25519' | 'x448',\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n): Promise<CryptoKeyPair> {\r\n if (hasAnyNotIn(keyUsages, ['deriveKey', 'deriveBits'])) {\r\n throw lazyDOMException(`Unsupported key usage for ${type}`, 'SyntaxError');\r\n }\r\n\r\n const publicUsages = getUsagesUnion(keyUsages);\r\n const privateUsages = getUsagesUnion(keyUsages, 'deriveKey', 'deriveBits');\r\n\r\n if (privateUsages.length === 0) {\r\n throw lazyDOMException('Usages cannot be empty', 'SyntaxError');\r\n }\r\n\r\n // Request DER-encoded SPKI for public key, PKCS8 for private key\r\n const config = {\r\n publicFormat: KFormatType.DER,\r\n publicType: KeyEncoding.SPKI,\r\n privateFormat: KFormatType.DER,\r\n privateType: KeyEncoding.PKCS8,\r\n };\r\n const ed = new Ed(type, config);\r\n await ed.generateKeyPair();\r\n\r\n const algorithmName = type === 'x25519' ? 'X25519' : 'X448';\r\n const { pub, priv } = ed_createKeyObjects(ed);\r\n\r\n const publicKey = new CryptoKey(\r\n pub,\r\n { name: algorithmName } as SubtleAlgorithm,\r\n publicUsages,\r\n true,\r\n );\r\n const privateKey = new CryptoKey(\r\n priv,\r\n { name: algorithmName } as SubtleAlgorithm,\r\n privateUsages,\r\n extractable,\r\n );\r\n\r\n return { publicKey, privateKey };\r\n}\r\n\r\nexport function xDeriveBits(\r\n algorithm: SubtleAlgorithm,\r\n baseKey: CryptoKey,\r\n length: number | null,\r\n): ArrayBuffer {\r\n const publicKey = algorithm.public;\r\n\r\n if (!publicKey) {\r\n throw new Error('Public key is required for X25519/X448 derivation');\r\n }\r\n\r\n if (baseKey.algorithm.name !== publicKey.algorithm.name) {\r\n throw new Error('Keys must be of the same algorithm');\r\n }\r\n\r\n const type = baseKey.algorithm.name.toLowerCase() as 'x25519' | 'x448';\r\n const ed = new Ed(type, {});\r\n\r\n // Export raw keys\r\n const privateKeyBytes = baseKey.keyObject.handle.exportKey();\r\n const publicKeyBytes = publicKey.keyObject.handle.exportKey();\r\n\r\n const privateKeyTyped = new Uint8Array(privateKeyBytes);\r\n const publicKeyTyped = new Uint8Array(publicKeyBytes);\r\n\r\n const secret = ed.getSharedSecret(privateKeyTyped, publicKeyTyped);\r\n\r\n // If length is null, return the full secret\r\n if (length === null) {\r\n return secret;\r\n }\r\n\r\n // If length is specified, truncate\r\n const byteLength = Math.ceil(length / 8);\r\n if (secret.byteLength >= byteLength) {\r\n return secret.slice(0, byteLength);\r\n }\r\n\r\n throw new Error('Derived key is shorter than requested length');\r\n}\r\n"],"mappings":"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","ignoreList":[]}
@@ -17,7 +17,7 @@ var _errors = require("./utils/errors");
17
17
  var _hashnames = require("./utils/hashnames");
18
18
  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; }
19
19
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
20
- 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); }
20
+ 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); }
21
21
  class HashUtils {
22
22
  static getSupportedHashAlgorithms() {
23
23
  return this.native.getSupportedHashAlgorithms();