29 lines
994 B
TypeScript
29 lines
994 B
TypeScript
import {
|
|
decryptAesGcm,
|
|
decryptStringDeterministic,
|
|
deriveCTRKeyFromPassword,
|
|
deriveGCMKeyFromCTR,
|
|
encryptAesGcm,
|
|
encryptStringDeterministic,
|
|
} from "@silverbulletmd/silverbullet/lib/crypto";
|
|
import { assertEquals } from "@std/assert";
|
|
|
|
Deno.test("Crypto test", async () => {
|
|
const salt = new Uint8Array(16); // zeroes for testing
|
|
const ctr = await deriveCTRKeyFromPassword("12345", salt);
|
|
const gcm = await deriveGCMKeyFromCTR(ctr);
|
|
const text = "123";
|
|
const encrypted = await encryptStringDeterministic(ctr, text);
|
|
const encrypted2 = await encryptStringDeterministic(ctr, text);
|
|
// Ensure determinism
|
|
assertEquals(encrypted, encrypted2);
|
|
const decrypted = await decryptStringDeterministic(ctr, encrypted);
|
|
assertEquals(decrypted, text);
|
|
|
|
// Now gcm
|
|
const buffer = new Uint8Array(100).fill(32);
|
|
const encryptedBuf = await encryptAesGcm(gcm, buffer);
|
|
const decryptedBuf = await decryptAesGcm(gcm, encryptedBuf);
|
|
assertEquals(decryptedBuf, buffer);
|
|
});
|