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() })