UNPKG

vouchsafe

Version:

Vouchsafe Decentralized Identity and Trust Verification module

49 lines (42 loc) 1.21 kB
'use strict'; async function generateKeyPair() { const keyPair = await crypto.subtle.generateKey( { name: 'Ed25519', namedCurve: 'Ed25519' }, true, ['sign', 'verify'] ); const publicKey = await crypto.subtle.exportKey('raw', keyPair.publicKey); const privateKey = await crypto.subtle.exportKey('pkcs8', keyPair.privateKey); return { publicKey, privateKey }; } async function sign(data, privateKeyPkcs8) { const key = await crypto.subtle.importKey( 'pkcs8', privateKeyPkcs8, { name: 'Ed25519' }, false, ['sign'] ); return await crypto.subtle.sign({ name: 'Ed25519' }, key, data); } async function verify(data, signature, publicKeyRaw) { const key = await crypto.subtle.importKey( 'raw', publicKeyRaw, { name: 'Ed25519' }, false, ['verify'] ); return await crypto.subtle.verify({ name: 'Ed25519' }, key, signature, data); } async function sha256(data) { return await crypto.subtle.digest('SHA-256', data); } async function sha512(data) { return await crypto.subtle.digest('SHA-512', data); } exports.generateKeyPair = generateKeyPair; exports.sha256 = sha256; exports.sha512 = sha512; exports.sign = sign; exports.verify = verify;