Files
libcrypto/test/misc.test.ts
T

51 lines
1.7 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!)
expect(box).not.toBeNull()
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)
expect(boxed_message).not.toBeNull()
const box = await PrivateWrap.wrap(k_wrapped, de!)
expect(box).not.toBeNull()
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)
expect(signed).not.toBeNull()
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()
})