{"version":3,"file":"derive-password-Bb3R3nyh.mjs","names":[],"sources":["../../src/derive-password/core.native.ts","../../src/derive-password/deriveKeysFromPassword.ts"],"sourcesContent":["import { argon2id } from '@noble/hashes/argon2.js';\nimport {\n  ARGON2ID_ITERATIONS,\n  ARGON2ID_MEMORY_SIZE,\n  ARGON2ID_PARALLELISM,\n  ARGON2ID_OUTPUT_BYTE_LENGTH,\n} from '../constants';\n\n/**\n * Calculates hash using the argon2id password-hashing function\n *\n * @param password - The user's password\n * @param salt - The given salt\n * @param parallelism - The degree of parallelism\n * @param iterations - The number of iterations\n * @param memorySize - The memory size in KB\n * @param hashLength - The desired hash byte length\n * @returns The resulting hash\n */\nexport async function argon2(\n  password: string,\n  salt: Uint8Array,\n  parallelism: number = ARGON2ID_PARALLELISM,\n  iterations: number = ARGON2ID_ITERATIONS,\n  memorySize: number = ARGON2ID_MEMORY_SIZE,\n  hashLength: number = ARGON2ID_OUTPUT_BYTE_LENGTH,\n): Promise<Uint8Array> {\n  return argon2id(password, salt, {\n    p: parallelism,\n    t: iterations,\n    m: memorySize,\n    dkLen: hashLength,\n  });\n}\n","import { argon2 } from './core';\nimport { ARGON2ID_SALT_BYTE_LENGTH } from '../constants';\nimport { randomBytes } from '@noble/hashes/utils.js';\n\n/**\n * Samples a salt\n *\n * @returns The salt\n */\nexport function generateSalt(): Uint8Array {\n  return randomBytes(ARGON2ID_SALT_BYTE_LENGTH);\n}\n\n/**\n * Derives a symmetric key from a user's password with a randomly sampled salt\n *\n * @param password - The user's password\n * @returns The derived secret key and randomly sampled salt\n */\nexport async function getKeyFromPassword(password: string): Promise<{ key: Uint8Array; salt: Uint8Array }> {\n  try {\n    const salt = generateSalt();\n    const key = await argon2(password, salt);\n    return { key, salt };\n  } catch (error) {\n    throw new Error('Failed to derive key from password', { cause: error });\n  }\n}\n\n/**\n * Derives a symmetric key from a user's password and salt\n *\n * @param password - The user's password\n * @param salt - The given salt\n * @returns The derived secret key\n */\nexport async function getKeyFromPasswordAndSalt(password: string, salt: Uint8Array): Promise<Uint8Array> {\n  try {\n    return await argon2(password, salt);\n  } catch (error) {\n    throw new Error('Failed to derive key from password and salt', { cause: error });\n  }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAmBA,eAAsB,OACpB,UACA,MACA,cAAA,GACA,aAAA,GACA,aAAqB,sBACrB,aAAA,IACqB;AACrB,QAAO,SAAS,UAAU,MAAM;EAC9B,GAAG;EACH,GAAG;EACH,GAAG;EACH,OAAO;EACR,CAAC;;;;;;;;;ACvBJ,SAAgB,eAA2B;AACzC,QAAO,YAAA,GAAsC;;;;;;;;AAS/C,eAAsB,mBAAmB,UAAkE;AACzG,KAAI;EACF,MAAM,OAAO,cAAc;AAE3B,SAAO;GAAE,KAAA,MADS,OAAO,UAAU,KAAK;GAC1B;GAAM;UACb,OAAO;AACd,QAAM,IAAI,MAAM,sCAAsC,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;AAW3E,eAAsB,0BAA0B,UAAkB,MAAuC;AACvG,KAAI;AACF,SAAO,MAAM,OAAO,UAAU,KAAK;UAC5B,OAAO;AACd,QAAM,IAAI,MAAM,+CAA+C,EAAE,OAAO,OAAO,CAAC"}