UNPKG

@hazae41/chacha20poly1305

Version:

ChaCha20Poly1305 adapter for WebAssembly and JS implementations

1 lines 5.65 kB
{"version":3,"file":"wasm.mjs","sources":["../../../../src/mods/chacha20poly1305/wasm.ts"],"sourcesContent":["import { type ChaCha20Poly1305Wasm } from \"@hazae41/chacha20poly1305.wasm\"\n\nimport { Lengthed } from \"@hazae41/lengthed\"\nimport { Ownable, Owned, Unowned } from \"libs/ownable/index.js\"\nimport { Abstract } from \"./abstract.js\"\nimport { Adapter } from \"./adapter.js\"\n\nexport function fromWasm(Wasm: typeof ChaCha20Poly1305Wasm) {\n\n class Memory<N extends number = number> extends Abstract.Memory {\n\n constructor(\n readonly inner: ChaCha20Poly1305Wasm.Memory\n ) {\n super()\n }\n\n static fromOrThrow<N extends number = number>(memory: Abstract.Memory<N>): Ownable<Memory<N>> {\n if (memory instanceof Memory)\n return new Unowned(memory)\n if (memory.inner instanceof Wasm.Memory)\n return new Unowned(new Memory(memory.inner))\n\n const inner = new Wasm.Memory(memory.bytes)\n\n return new Owned(new Memory<N>(inner))\n }\n\n static importOrThrow<N extends number = number>(bytes: Uint8Array & Lengthed<N>): Memory<N> {\n return new Memory<N>(new Wasm.Memory(bytes))\n }\n\n [Symbol.dispose]() {\n this.inner[Symbol.dispose]()\n }\n\n get bytes() {\n return this.inner.bytes as Uint8Array & Lengthed<N>\n }\n\n }\n\n class ChaCha20Cipher extends Abstract.ChaCha20Cipher {\n\n constructor(\n readonly inner: ChaCha20Poly1305Wasm.ChaCha20Cipher\n ) {\n super()\n }\n\n [Symbol.dispose]() {\n this.inner[Symbol.dispose]()\n }\n\n static importOrThrow(key: Memory<32>, nonce: Memory<12>) {\n if (key instanceof Memory === false)\n throw new Error()\n if (nonce instanceof Memory === false)\n throw new Error()\n return new ChaCha20Cipher(new Wasm.ChaCha20Cipher(key.inner, nonce.inner))\n }\n\n applyOrThrow(message: Memory) {\n if (message instanceof Memory === false)\n throw new Error()\n this.inner.apply_keystream(message.inner)\n }\n\n }\n\n class ChaCha20Poly1305Cipher extends Abstract.ChaCha20Poly1305Cipher {\n\n constructor(\n readonly inner: ChaCha20Poly1305Wasm.ChaCha20Poly1305Cipher\n ) {\n super()\n }\n\n [Symbol.dispose]() {\n this.inner[Symbol.dispose]()\n }\n\n static importOrThrow(key: Memory<32>) {\n if (key instanceof Memory === false)\n throw new Error()\n return new ChaCha20Poly1305Cipher(new Wasm.ChaCha20Poly1305Cipher(key.inner))\n }\n\n encryptOrThrow(message: Memory, nonce: Memory<12>) {\n if (message instanceof Memory === false)\n throw new Error()\n if (nonce instanceof Memory === false)\n throw new Error()\n return new Memory(this.inner.encrypt(message.inner, nonce.inner))\n }\n\n decryptOrThrow(message: Memory, nonce: Memory<12>) {\n if (message instanceof Memory === false)\n throw new Error()\n return new Memory(this.inner.decrypt(message.inner, nonce.inner))\n }\n\n }\n\n return { Memory, ChaCha20Cipher, ChaCha20Poly1305Cipher } satisfies Adapter\n}"],"names":[],"mappings":"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"}