{"version":3,"file":"index.cjs","sources":["../../../../../../../../src/mods/kdbx/headers/inner/cipher/index.ts"],"sourcesContent":["import { ChaCha20Poly1305 } from \"@hazae41/chacha20poly1305\"\nimport { Cursor } from \"@hazae41/cursor\"\n\nexport type Cipher =\n  | typeof Cipher.ArcFourVariant\n  | typeof Cipher.Salsa20\n  | typeof Cipher.ChaCha20\n\nexport namespace Cipher {\n\n  export class ArcFourVariant {\n    constructor() { }\n  }\n\n  export namespace ArcFourVariant {\n\n    export const type = 0x01\n\n    export function cloneOrThrow() {\n      return ArcFourVariant\n    }\n\n    export function sizeOrThrow() {\n      return 4\n    }\n\n    export function writeOrThrow(cursor: Cursor) {\n      cursor.writeUint32OrThrow(type, true)\n    }\n\n    export async function initOrThrow(seed: Uint8Array): Promise<never> {\n      throw new Error(\"ArcFourVariant is not implemented yet\")\n    }\n\n  }\n\n  export class Salsa20 {\n    constructor(\n      readonly key: Uint8Array,\n      readonly nonce: Uint8Array,\n    ) { }\n  }\n\n  export namespace Salsa20 {\n\n    export const type = 0x02\n\n    export function cloneOrThrow() {\n      return Salsa20\n    }\n\n    export function sizeOrThrow() {\n      return 4\n    }\n\n    export function writeOrThrow(cursor: Cursor) {\n      cursor.writeUint32OrThrow(type, true)\n    }\n\n    export async function initOrThrow(seed: Uint8Array): Promise<never> {\n      throw new Error(\"Salsa20 is not implemented yet\")\n    }\n\n  }\n\n  export class ChaCha20 {\n\n    constructor(\n      readonly cipher: ChaCha20Poly1305.Abstract.ChaCha20Cipher,\n    ) { }\n\n    [Symbol.dispose]() {\n      this.cipher[Symbol.dispose]()\n    }\n\n    applyOrThrow(data: Uint8Array) {\n      const { Memory } = ChaCha20Poly1305.get().getOrThrow()\n\n      const memory = Memory.importOrThrow(data)\n\n      this.cipher.applyOrThrow(memory)\n\n      return memory\n    }\n\n  }\n\n  export namespace ChaCha20 {\n\n    export const type = 0x03\n\n    export function cloneOrThrow() {\n      return ChaCha20\n    }\n\n    export function sizeOrThrow() {\n      return 4\n    }\n\n    export function writeOrThrow(cursor: Cursor) {\n      cursor.writeUint32OrThrow(type, true)\n    }\n\n    export async function initOrThrow(seed: Uint8Array): Promise<ChaCha20> {\n      const { Memory, ChaCha20Cipher } = ChaCha20Poly1305.get().getOrThrow()\n\n      const hashed = new Uint8Array(await crypto.subtle.digest(\"SHA-512\", seed))\n      const cursor = new Cursor(hashed)\n\n      using key = Memory.importOrThrow(cursor.readOrThrow(32))\n      using nonce = Memory.importOrThrow(cursor.readOrThrow(12))\n\n      const cipher = ChaCha20Cipher.importOrThrow(key, nonce)\n\n      return new ChaCha20(cipher)\n    }\n\n  }\n\n}\n\nexport namespace Cipher {\n\n  export function readOrThrow(cursor: Cursor) {\n    const value = cursor.readUint32OrThrow(true)\n\n    if (value === Cipher.ArcFourVariant.type)\n      return Cipher.ArcFourVariant\n    if (value === Cipher.Salsa20.type)\n      return Cipher.Salsa20\n    if (value === Cipher.ChaCha20.type)\n      return Cipher.ChaCha20\n\n    throw new Error()\n  }\n\n}"],"names":["Cipher","ChaCha20Poly1305","cursor","Cursor","__addDisposableResource"],"mappings":"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"}