js-bigchaindb-driver/src/Ed25519Keypair.js

18 lines
674 B
JavaScript
Raw Normal View History

2017-06-12 16:57:29 +02:00
import base58 from 'bs58'
import nacl from 'tweetnacl'
2017-04-26 15:58:19 +02:00
/**
2017-05-03 01:02:50 +02:00
* @public
2017-04-26 15:58:19 +02:00
* @class Keypair Ed25519 keypair in base58 (as BigchainDB expects base58 keys)
* @type {Object}
2017-05-14 14:41:04 +02:00
* @param {Buffer} [seed] A seed that will be used as a key derivation function
2017-04-26 15:58:19 +02:00
* @property {string} publicKey
* @property {string} privateKey
*/
2017-05-14 14:41:04 +02:00
export default function Ed25519Keypair(seed) {
2017-06-12 16:57:29 +02:00
const keyPair = seed ? nacl.sign.keyPair.fromSeed(seed) : nacl.sign.keyPair()
this.publicKey = base58.encode(keyPair.publicKey)
2017-04-26 15:58:19 +02:00
// tweetnacl's generated secret key is the secret key + public key (resulting in a 64-byte buffer)
2017-06-12 16:57:29 +02:00
this.privateKey = base58.encode(keyPair.secretKey.slice(0, 32))
2017-04-26 15:58:19 +02:00
}