feat(keys): implement generateKeyPairFromSeed for ed25519

Implement generateKeyPairFromSeed for ed25519 - this will produce the same keypair for the same seed (or first 32 bytes of reader) as given to GenerateKeyPairWithReader in go-libp2p.
This commit is contained in:
Jack Kleeman
2017-03-03 20:38:51 +00:00
committed by Friedel Ziegelmayer
parent 20326199d9
commit e5b7c1f622
4 changed files with 116 additions and 1 deletions

View File

@ -117,6 +117,27 @@ function generateKeyPair (_bits, cb) {
})
}
function generateKeyPairFromSeed (seed, _bits, cb) {
if (cb === undefined && typeof _bits === 'function') {
cb = _bits
}
crypto.generateKeyFromSeed(seed, (err, keys) => {
if (err) {
return cb(err)
}
let privkey
try {
privkey = new Ed25519PrivateKey(keys.secretKey, keys.publicKey)
} catch (err) {
cb(err)
return
}
cb(null, privkey)
})
}
function ensure (cb) {
if (typeof cb !== 'function') {
throw new Error('callback is required')
@ -138,5 +159,6 @@ module.exports = {
Ed25519PrivateKey,
unmarshalEd25519PrivateKey,
unmarshalEd25519PublicKey,
generateKeyPair
generateKeyPair,
generateKeyPairFromSeed
}