Files
libcrypto/test/misc.test.ts
T

64 lines
2.2 KiB
TypeScript

import {expect, test} from 'bun:test'
import {PrivateBox, PrivateWrap, SecretBox, signature} from '..'
import {pubkey_fromBytes, pubkey_fromString, pubkey_toBytes, pubkey_toString} 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)
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)
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)
expect(de).not.toBeNull()
const verification = await signature.verify(message, de!, signed!)
expect(verification).toBeTrue()
})
test('Byte serialization', 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_toBytes(k.publicKey)
const de = await pubkey_fromBytes(ser)
expect(de).not.toBeNull()
const verification = await signature.verify(message, de!, signed!)
expect(verification).toBeTrue()
})