WhisperNet / lib /crypto.test.ts
bonesmasher's picture
Upload 56 files
abc1805 verified
import { describe, expect, test } from "bun:test";
import {
generateKeyPair,
exportKey,
importKey,
encryptMessage,
decryptMessage,
generateSymKey,
encryptSymMessage,
decryptSymMessage,
exportSymKey,
importSymKey
} from "./crypto";
describe("Crypto Logic", () => {
test("should generate key pair", async () => {
const keyPair = await generateKeyPair();
expect(keyPair.publicKey).toBeDefined();
expect(keyPair.privateKey).toBeDefined();
});
test("should export and import keys", async () => {
const keyPair = await generateKeyPair();
const exportedPublic = await exportKey(keyPair.publicKey);
const importedPublic = await importKey(exportedPublic, ["encrypt"]);
expect(importedPublic).toBeDefined();
});
test("should encrypt and decrypt message", async () => {
const keyPair = await generateKeyPair();
const message = "Hello, World!";
const encrypted = await encryptMessage(keyPair.publicKey, message);
const decrypted = await decryptMessage(keyPair.privateKey, encrypted);
expect(decrypted).toBe(message);
});
test("should encrypt and decrypt symmetric message", async () => {
const key = await generateSymKey();
const message = "Secret Message";
const encrypted = await encryptSymMessage(key, message);
const decrypted = await decryptSymMessage(key, encrypted);
expect(decrypted).toBe(message);
});
test("should export and import symmetric keys", async () => {
const key = await generateSymKey();
const exported = await exportSymKey(key);
const imported = await importSymKey(exported);
expect(imported).toBeDefined();
// Verify imported key works
const message = "Test Key Import";
const encrypted = await encryptSymMessage(imported, message);
const decrypted = await decryptSymMessage(key, encrypted); // Decrypt with original key
expect(decrypted).toBe(message);
});
});