UNPKG

vouchsafe

Version:

Vouchsafe Decentralized Identity and Trust Verification module

37 lines (29 loc) 1.11 kB
'use strict'; var node_crypto = require('node:crypto'); async function generateKeyPair() { const { publicKey, privateKey } = node_crypto.generateKeyPairSync('ed25519'); return { publicKey: publicKey.export({ type: 'spki', format: 'der' }), privateKey: privateKey.export({ type: 'pkcs8', format: 'der' }), }; } async function sign(data, privateKeyDer) { const key = crypto.createPrivateKey({ key: privateKeyDer, format: 'der', type: 'pkcs8' }); const sig = node_crypto.createSign('sha256').update(data).sign(key); return sig; } async function verify(data, signature, publicKeyDer) { const key = crypto.createPublicKey({ key: publicKeyDer, format: 'der', type: 'spki' }); return node_crypto.createVerify('sha256').update(data).verify(key, signature); } async function sha256(data) { return node_crypto.createHash('sha256').update(data).digest(); } async function sha512(data) { return node_crypto.createHash('sha512').update(data).digest(); } exports.generateKeyPair = generateKeyPair; exports.sha256 = sha256; exports.sha512 = sha512; exports.sign = sign; exports.verify = verify;