@digitalcredentials/ed25519-verification-key-2020
Version:
Javascript library for generating and working with Ed25519VerificationKey2020 key pairs, for use with crypto-ld.
39 lines • 1.22 kB
JavaScript
/*!
* Copyright (c) 2020 Digital Bazaar, Inc. All rights reserved.
*/
import * as ed25519 from '@noble/ed25519';
// browser MUST provide "crypto.getRandomValues"
const crypto = globalThis.crypto;
if (typeof crypto.getRandomValues === 'undefined') {
throw new Error('Environment does not provide "crypto.getRandomValues".');
}
export default {
async generateKeyPair() {
const seed = new Uint8Array(32);
crypto.getRandomValues(seed);
const keyPair = await generateKeyPairFromSeed(seed);
seed.fill(0);
return keyPair;
},
generateKeyPairFromSeed,
async sign(secretKey, data) {
return ed25519.sign(data, secretKey.slice(0, 32));
},
async verify(publicKey, data, signature) {
return ed25519.verify(signature, data, publicKey);
},
async sha256digest(data) {
return crypto.subtle.digest('SHA-256', data);
}
};
async function generateKeyPairFromSeed(seed) {
const publicKey = await ed25519.getPublicKey(seed);
const secretKey = new Uint8Array(64);
secretKey.set(seed);
secretKey.set(publicKey, seed.length);
return {
publicKey,
secretKey
};
}
//# sourceMappingURL=ed25519-browser.js.map