@transmute/did-key-x25519
Version:
``` npm i @transmute/did-key-x25519@latest --save ```
42 lines (38 loc) • 1.04 kB
text/typescript
import { X25519KeyPair } from '..';
import { JWE } from '@transmute/jose-ld';
it('can encrypt and decrypt', async () => {
const k = await X25519KeyPair.generate({
secureRandom: () => {
return Buffer.from(
'5a2b1f37ecc9fb7f27e1aa3daa4d66d9c3e54a4c0dcd53a4a5cacdfaf50578cb',
'hex'
);
},
});
const cipher = new JWE.Cipher(X25519KeyPair);
const document = { key1: 'value1', key2: 'value2' };
const recipients = [
{
header: {
kid: k.id,
alg: 'ECDH-ES+A256KW',
},
},
];
const jwe = await cipher.encryptObject({
obj: document,
recipients,
publicKeyResolver: async (id: string) => {
if (id === k.id) {
return k.export({ type: 'JsonWebKey2020' });
}
throw new Error(
'publicKeyResolver does not suppport IRI ' + JSON.stringify(id)
);
},
});
const plaintext = await cipher.decrypt({ jwe, keyAgreementKey: k });
expect(JSON.parse(Buffer.from(plaintext).toString('utf-8'))).toEqual(
document
);
});