Files
libcrypto/test/misc.test.ts
T
pascal 9de49c228d
ci/woodpecker/manual/test Pipeline was successful
rename encrypt/decrypt to wrap/unwrap in *Wrap
2024-09-09 22:49:42 +02:00

46 lines
1.6 KiB
TypeScript

import {expect, test} from 'bun:test'
import {PrivateBox, PrivateWrap, SecretBox, signature} from '..'
import {pubkey_fromString, pubkey_toString, Usage} from '../src/misc'
test('Private box', async () => {
const message = crypto.getRandomValues(new Uint8Array(8))
const k = await PrivateBox.gen(false)
const ser = await pubkey_toString(k.publicKey)
const de = await pubkey_fromString(ser, Usage.ecdh)
expect(de).not.toBeNull()
const box = await PrivateBox.encrypt(message, de!)
const unbox = await box.decrypt(k.privateKey)
expect(unbox).toEqual(message)
})
test('Private wrap', async () => {
const k = await PrivateWrap.gen(false)
const ser = await pubkey_toString(k.publicKey)
const de = await pubkey_fromString(ser, Usage.ecdh)
expect(de).not.toBeNull()
const message = crypto.getRandomValues(new Uint8Array(8))
const k_wrapped = await SecretBox.gen(true)
const boxed_message = await SecretBox.encrypt(message, k_wrapped)
const box = await PrivateWrap.wrap(k_wrapped, de!)
const unbox = await box.unwrap(k.privateKey)
expect(unbox).not.toBeNull()
const unboxed_message = await boxed_message.decrypt(unbox!)
expect(unboxed_message).toEqual(message)
})
test('Signature', async () => {
const k = await signature.gen(false)
const message = crypto.getRandomValues(new Uint8Array(8))
const signed = await signature.sign(message, k.privateKey)
const ser = await pubkey_toString(k.publicKey)
const de = await pubkey_fromString(ser, Usage.sign)
expect(de).not.toBeNull()
const verification = await signature.verify(message, de!, signed)
expect(verification).toBeTrue()
})