51 lines
1.7 KiB
TypeScript
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()
|
|
})
|