{"version":3,"file":"asymmetric-crypto.mjs","names":[],"sources":["../src/asymmetric-crypto/ellipticCurve.ts"],"sourcesContent":["import { x25519 } from '@noble/curves/webcrypto.js';\n\nfunction asBytes(result: unknown): Uint8Array {\n  if (result instanceof Uint8Array) return result;\n  throw new Error('Expected raw key bytes, got JWK');\n}\n\n/**\n * Derives secret key from the other user's public key and own private key\n *\n * @param aliceSecretKey - The secret key of the user deriving the shared secret key\n * @param bobPublicKey - The public key of the other user\n * @returns The derived secret key bits\n */\nexport async function deriveSecretKey(aliceSecretKey: Uint8Array, bobPublicKey: Uint8Array): Promise<Uint8Array> {\n  try {\n    const spkiPublic = asBytes(await x25519.utils.convertPublicKey(bobPublicKey, 'raw', 'spki'));\n    const pkcs8Secret = asBytes(await x25519.utils.convertSecretKey(aliceSecretKey, 'raw', 'pkcs8'));\n    return await x25519.getSharedSecret(pkcs8Secret, spkiPublic);\n  } catch (error) {\n    throw new Error('Failed to derive elliptic curve secret key', { cause: error });\n  }\n}\n\n/**\n * Generates elliptic curve key pair\n *\n * @returns The generated key pair\n */\nexport async function generateEccKeys(): Promise<{ secretKey: Uint8Array; publicKey: Uint8Array }> {\n  const { secretKey, publicKey } = await x25519.keygen();\n  return {\n    secretKey: asBytes(await x25519.utils.convertSecretKey(secretKey, 'pkcs8', 'raw')),\n    publicKey: asBytes(await x25519.utils.convertPublicKey(publicKey, 'spki', 'raw')),\n  };\n}\n"],"mappings":";;AAEA,SAAS,QAAQ,QAA6B;AAC5C,KAAI,kBAAkB,WAAY,QAAO;AACzC,OAAM,IAAI,MAAM,kCAAkC;;;;;;;;;AAUpD,eAAsB,gBAAgB,gBAA4B,cAA+C;AAC/G,KAAI;EACF,MAAM,aAAa,QAAQ,MAAM,OAAO,MAAM,iBAAiB,cAAc,OAAO,OAAO,CAAC;EAC5F,MAAM,cAAc,QAAQ,MAAM,OAAO,MAAM,iBAAiB,gBAAgB,OAAO,QAAQ,CAAC;AAChG,SAAO,MAAM,OAAO,gBAAgB,aAAa,WAAW;UACrD,OAAO;AACd,QAAM,IAAI,MAAM,8CAA8C,EAAE,OAAO,OAAO,CAAC;;;;;;;;AASnF,eAAsB,kBAA6E;CACjG,MAAM,EAAE,WAAW,cAAc,MAAM,OAAO,QAAQ;AACtD,QAAO;EACL,WAAW,QAAQ,MAAM,OAAO,MAAM,iBAAiB,WAAW,SAAS,MAAM,CAAC;EAClF,WAAW,QAAQ,MAAM,OAAO,MAAM,iBAAiB,WAAW,QAAQ,MAAM,CAAC;EAClF"}