Files
libcrypto/test/private-wrap.test.ts
T
2024-09-11 23:13:55 +02:00

49 lines
1.4 KiB
TypeScript

import {beforeAll, expect, test} from 'bun:test'
import {PrivateWrap, SecretBox} from '..'
import {pubkey_toString} from '../src/misc'
let k1!: CryptoKeyPair
let k2!: CryptoKeyPair
let message!: CryptoKey
beforeAll(async () => {
k1 = await PrivateWrap.gen(false)
k2 = await PrivateWrap.gen(true)
message = await SecretBox.gen(true)
})
test('base case', async () => {
const box = await PrivateWrap.wrap(message, k1.publicKey)
expect(box).not.toBeNull()
const unboxed = await box!.unwrap(k1.privateKey)
expect(unboxed).toEqual(message)
})
test("Different key can't decrypt", async () => {
const box = await PrivateWrap.wrap(message, k1.publicKey)
expect(box).not.toBeNull()
const unboxed = await box!.unwrap(k2.privateKey)
expect(unboxed).toBeNull()
})
test('Key generation', async () => {
const ser1 = await pubkey_toString(k1.publicKey)
const ser2 = await pubkey_toString(k2.publicKey)
expect(ser1).not.toEqual(ser2)
expect(k1.privateKey.extractable).toBeFalse()
expect(k1.publicKey.extractable).toBeTrue()
expect(k2.privateKey.extractable).toBeTrue()
expect(k2.publicKey.extractable).toBeTrue()
})
test('serialization', async () => {
const box = await PrivateWrap.wrap(message, k1.publicKey)
expect(box).not.toBeNull()
const ser = await box!.toString()
const de = await PrivateWrap.fromString(ser)
expect(de).not.toBeNull()
expect(de).toEqual(box)
})