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