feat: add native KDBX scaffolding and in-memory KeePass API

This commit is contained in:
2026-05-10 01:17:53 +02:00
parent 210f7b414b
commit 15332896fe
25 changed files with 437 additions and 713 deletions
+32
View File
@@ -0,0 +1,32 @@
import { describe, expect, test } from "bun:test";
import { parseKdbxHeader } from "../../src/kdbx/header";
function createHeaderBuffer(major: number, minor: number): Uint8Array {
const buffer = new Uint8Array(12);
buffer[0] = 0x03;
buffer[1] = 0xd9;
buffer[2] = 0xa2;
buffer[3] = 0x9a;
buffer[4] = 0x67;
buffer[5] = 0xfb;
buffer[6] = 0x4b;
buffer[7] = 0xb5;
buffer[8] = minor & 0xff;
buffer[9] = (minor >> 8) & 0xff;
buffer[10] = major & 0xff;
buffer[11] = (major >> 8) & 0xff;
return buffer;
}
describe("parseKdbxHeader", () => {
test("reads a valid KDBX signature and version", () => {
const parsed = parseKdbxHeader(createHeaderBuffer(4, 1));
expect(parsed.header).toEqual({ version: { major: 4, minor: 1 } });
});
test("rejects invalid signatures", () => {
const buffer = createHeaderBuffer(4, 1);
buffer[0] = 0x00;
expect(() => parseKdbxHeader(buffer)).toThrow("Invalid KDBX signature");
});
});