Spaces:
Paused
Paused
| 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); | |
| }); | |
| }); | |