vouchsafe
Version:
Vouchsafe Decentralized Identity and Trust Verification module
37 lines (29 loc) • 1.11 kB
JavaScript
;
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;