@hazae41/kdbx
Version:
Rust-like KeePass (KDBX 4) file format for TypeScript
1 lines • 9.88 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","sources":["../../../../../../../../src/mods/kdbx/headers/outer/cipher/index.ts"],"sourcesContent":["import { Cursor } from \"@hazae41/cursor\"\nimport { BytesAsUuid, StringAsUuid } from \"libs/uuid/index.js\"\n\nexport type Cipher =\n | typeof Cipher.Aes128Cbc\n | typeof Cipher.Aes256Cbc\n | typeof Cipher.TwoFishCbc\n | typeof Cipher.ChaCha20\n\nexport namespace Cipher {\n\n export namespace Aes128Cbc {\n\n export const uuid = \"61ab05a1-9464-41c3-8d74-3a563df8dd35\"\n\n export function cloneOrThrow() {\n return Aes128Cbc\n }\n\n export function sizeOrThrow() {\n return 16\n }\n\n export function writeOrThrow(cursor: Cursor) {\n cursor.writeOrThrow(BytesAsUuid.from(uuid))\n }\n\n export namespace IV {\n\n export const length = 16\n\n }\n\n export async function encryptOrThrow(key: Uint8Array, iv: Uint8Array, data: Uint8Array) {\n const encrypter = await crypto.subtle.importKey(\"raw\", key, { name: \"AES-CBC\" }, false, [\"encrypt\"])\n const encrypted = new Uint8Array(await crypto.subtle.encrypt({ name: \"AES-CBC\", iv }, encrypter, data))\n\n return encrypted\n }\n\n export async function decryptOrThrow(key: Uint8Array, iv: Uint8Array, data: Uint8Array) {\n const decrypter = await crypto.subtle.importKey(\"raw\", key, { name: \"AES-CBC\" }, false, [\"decrypt\"])\n const decrypted = new Uint8Array(await crypto.subtle.decrypt({ name: \"AES-CBC\", iv }, decrypter, data))\n\n return decrypted\n }\n\n }\n\n export namespace Aes256Cbc {\n\n export const uuid = \"31c1f2e6-bf71-4350-be58-05216afc5aff\"\n\n export function cloneOrThrow() {\n return Aes256Cbc\n }\n\n export function sizeOrThrow() {\n return 16\n }\n\n export function writeOrThrow(cursor: Cursor) {\n cursor.writeOrThrow(BytesAsUuid.from(uuid))\n }\n\n export namespace IV {\n\n export const length = 16\n\n }\n\n export async function encryptOrThrow(key: Uint8Array, iv: Uint8Array, data: Uint8Array) {\n const encrypter = await crypto.subtle.importKey(\"raw\", key, { name: \"AES-CBC\" }, false, [\"encrypt\"])\n const encrypted = new Uint8Array(await crypto.subtle.encrypt({ name: \"AES-CBC\", iv }, encrypter, data))\n\n return encrypted\n }\n\n export async function decryptOrThrow(key: Uint8Array, iv: Uint8Array, data: Uint8Array) {\n const decrypter = await crypto.subtle.importKey(\"raw\", key, { name: \"AES-CBC\" }, false, [\"decrypt\"])\n const decrypted = new Uint8Array(await crypto.subtle.decrypt({ name: \"AES-CBC\", iv }, decrypter, data))\n\n return decrypted\n }\n\n }\n\n export namespace TwoFishCbc {\n\n export const uuid = \"ad68f29f-576f-4bb9-a36a-d47af965346c\"\n\n export function cloneOrThrow() {\n return TwoFishCbc\n }\n\n export function sizeOrThrow() {\n return 16\n }\n\n export function writeOrThrow(cursor: Cursor) {\n cursor.writeOrThrow(BytesAsUuid.from(uuid))\n }\n\n export namespace IV {\n\n export const length = 16\n\n }\n\n export async function encryptOrThrow(key: Uint8Array, iv: Uint8Array, data: Uint8Array): Promise<never> {\n throw new Error(\"TwoFishCbc encryption is not implemented\")\n }\n\n export async function decryptOrThrow(key: Uint8Array, iv: Uint8Array, data: Uint8Array): Promise<never> {\n throw new Error(\"TwoFishCbc decryption is not implemented\")\n }\n\n }\n\n export namespace ChaCha20 {\n\n export const uuid = \"d6038a2b-8b6f-4cb5-a524-339a31dbb59a\"\n\n export function cloneOrThrow() {\n return ChaCha20\n }\n\n export function sizeOrThrow() {\n return 16\n }\n\n export function writeOrThrow(cursor: Cursor) {\n cursor.writeOrThrow(BytesAsUuid.from(uuid))\n }\n\n export namespace IV {\n\n export const length = 12\n\n }\n\n export async function encryptOrThrow(key: Uint8Array, iv: Uint8Array, data: Uint8Array): Promise<never> {\n throw new Error(\"ChaCha20 encryption is not implemented\")\n }\n\n export async function decryptOrThrow(key: Uint8Array, iv: Uint8Array, data: Uint8Array): Promise<never> {\n throw new Error(\"ChaCha20 decryption is not implemented\")\n }\n\n }\n\n}\n\nexport namespace Cipher {\n\n export function readOrThrow(cursor: Cursor) {\n const bytes = cursor.readOrThrow(16)\n const uuid = StringAsUuid.from(bytes)\n\n if (uuid === Aes256Cbc.uuid)\n return Aes256Cbc\n if (uuid === Aes128Cbc.uuid)\n return Aes128Cbc\n if (uuid === TwoFishCbc.uuid)\n return TwoFishCbc\n if (uuid === ChaCha20.uuid)\n return ChaCha20\n\n throw new Error()\n }\n\n}"],"names":["Cipher","BytesAsUuid","StringAsUuid"],"mappings":"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"}