{"version":3,"file":"kdftor.cjs","sources":["../../../../../../src/mods/tor/algorithms/kdftor.ts"],"sourcesContent":["import { Uint8Array } from \"@hazae41/bytes\"\nimport { Cursor } from \"@hazae41/cursor\"\nimport { HASH_LEN, KEY_LEN } from \"mods/tor/constants.js\"\n\nexport class InvalidKdfKeyHashError extends Error {\n  readonly #class = InvalidKdfKeyHashError\n  readonly name = this.#class.name\n\n  constructor() {\n    super(`Invalid KDF key hash`)\n  }\n\n}\n\nexport interface KDFTorResult {\n  readonly keyHash: Uint8Array<HASH_LEN>,\n  readonly forwardDigest: Uint8Array<HASH_LEN>,\n  readonly backwardDigest: Uint8Array<HASH_LEN>,\n  readonly forwardKey: Uint8Array<KEY_LEN>,\n  readonly backwardKey: Uint8Array<KEY_LEN>\n}\n\nexport namespace KDFTorResult {\n\n  export async function computeOrThrow(k0: Uint8Array): Promise<KDFTorResult> {\n    const ki = new Cursor(new Uint8Array(k0.length + 1))\n    ki.writeOrThrow(k0)\n\n    const k = new Cursor(new Uint8Array(HASH_LEN * 5))\n\n    for (let i = 0; k.remaining > 0; i++) {\n      ki.setUint8OrThrow(i)\n\n      const h = new Uint8Array(await crypto.subtle.digest(\"SHA-1\", ki.bytes))\n\n      k.writeOrThrow(h)\n    }\n\n    k.offset = 0\n\n    const keyHash = k.readAndCopyOrThrow(HASH_LEN)\n    const forwardDigest = k.readAndCopyOrThrow(HASH_LEN)\n    const backwardDigest = k.readAndCopyOrThrow(HASH_LEN)\n    const forwardKey = k.readAndCopyOrThrow(KEY_LEN)\n    const backwardKey = k.readAndCopyOrThrow(KEY_LEN)\n\n    return { keyHash, forwardDigest, backwardDigest, forwardKey, backwardKey }\n  }\n\n}\n\n"],"names":["KDFTorResult","Cursor","HASH_LEN","KEY_LEN"],"mappings":";;;;;;AAIM,MAAO,sBAAuB,SAAQ,KAAK,CAAA;IACtC,MAAM,GAAG,EAAsB,CAAA;AAC/B,IAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA;AAEhC,IAAA,WAAA,GAAA;QACE,KAAK,CAAC,CAAsB,oBAAA,CAAA,CAAC,CAAA;KAC9B;AAEF,CAAA;;AAUgBA,8BA2BhB;AA3BD,CAAA,UAAiB,YAAY,EAAA;IAEpB,eAAe,cAAc,CAAC,EAAc,EAAA;AACjD,QAAA,MAAM,EAAE,GAAG,IAAIC,aAAM,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;AACpD,QAAA,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;AAEnB,QAAA,MAAM,CAAC,GAAG,IAAIA,aAAM,CAAC,IAAI,UAAU,CAACC,kBAAQ,GAAG,CAAC,CAAC,CAAC,CAAA;AAElD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACpC,YAAA,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;AAErB,YAAA,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;AAEvE,YAAA,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;SAClB;AAED,QAAA,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;QAEZ,MAAM,OAAO,GAAG,CAAC,CAAC,kBAAkB,CAACA,kBAAQ,CAAC,CAAA;QAC9C,MAAM,aAAa,GAAG,CAAC,CAAC,kBAAkB,CAACA,kBAAQ,CAAC,CAAA;QACpD,MAAM,cAAc,GAAG,CAAC,CAAC,kBAAkB,CAACA,kBAAQ,CAAC,CAAA;QACrD,MAAM,UAAU,GAAG,CAAC,CAAC,kBAAkB,CAACC,iBAAO,CAAC,CAAA;QAChD,MAAM,WAAW,GAAG,CAAC,CAAC,kBAAkB,CAACA,iBAAO,CAAC,CAAA;QAEjD,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,CAAA;KAC3E;AAvBqB,IAAA,YAAA,CAAA,cAAc,iBAuBnC,CAAA;AAEH,CAAC,EA3BgBH,oBAAY,KAAZA,oBAAY,GA2B5B,EAAA,CAAA,CAAA;;;;"}