kdf : Add tests
ci/woodpecker/push/test Pipeline was successful

This commit is contained in:
2024-06-06 13:31:44 +02:00
parent 9885f4c4e6
commit 1749459be7
+91
View File
@@ -0,0 +1,91 @@
import {describe, expect, test} from 'bun:test'
import {kdf, PrivateWrap} from '../index'
import {ecdh} from "../src/kdf";
describe('Passwords', () => {
test('Base case', async () => {
const p = "yeet"
const s = new Uint8Array(2)
const k1 = await kdf.pbkdf(s, p)
const k2 = await kdf.pbkdf(s, p)
expect(k1).toEqual(k2)
})
test('Different salt, different key', async () => {
const password = "yeet"
const s1 = new Uint8Array(1)
const s2 = new Uint8Array(2)
expect(s1).not.toEqual(s2)
const k1 = await kdf.pbkdf(s1, password)
const k2 = await kdf.pbkdf(s2, password)
expect(k2).not.toEqual(k1)
})
test('Different password, different key', async () => {
const p1 = "yeet"
const p2 = "yaat"
expect(p1).not.toBe(p2)
const s = new Uint8Array(2)
const k1 = await kdf.pbkdf(s, p1)
const k2 = await kdf.pbkdf(s, p2)
expect(k1).not.toBe(k2)
})
})
describe('HKDF', () => {
test ('Base case', async () => {
const k = new Uint8Array(12)
const usage = kdf.Usage.sign
const k1 = await kdf.hkdf(k, usage)
const k2 = await kdf.hkdf(k, usage)
expect(k2).toEqual(k1)
})
test('Different usage, different key', async () => {
const k = new Uint8Array(12)
const u1 = kdf.Usage.sign
const u2 = kdf.Usage.wrap
const k1 = await kdf.hkdf(k, u1)
const k2 = await kdf.hkdf(k, u2)
expect(k1).not.toEqual(k2)
})
test('Different input, different output', async () => {
const k1 = new Uint8Array(1)
const k2 = new Uint8Array(2)
const u = kdf.Usage.sign
const kd1 = await kdf.hkdf(k1, u)
const kd2 = await kdf.hkdf(k2, u)
expect(kd1).not.toEqual(kd2)
})
test.todo('Usages are set')
test.todo('Not extractable')
})
describe('ECDH', () => {
test('Base case', async () => {
const k1 = await PrivateWrap.gen_keypair()
const k2 = await PrivateWrap.gen_keypair()
const kd1 = await ecdh(k1.privateKey, k2.publicKey)
const kd2 = await ecdh(k2.privateKey, k1.publicKey)
expect(kd1).toEqual(kd2)
})
test('Different pubkey, different key', async () => {
const k1 = await PrivateWrap.gen_keypair()
const k2 = await PrivateWrap.gen_keypair()
const k3 = await PrivateWrap.gen_keypair()
const kd1 = await ecdh(k1.privateKey, k2.publicKey)
const kd2 = await ecdh(k3.privateKey, k1.publicKey)
expect(kd1).not.toBe(kd2)
})
})