supercop.ts

cross-compiled javascript implementation of ed25519 based on supercop-ref10
git clone git://git.finwo.net/lib/supercop.ts
Log | Files | Refs | README | LICENSE

commit e91becd3c6027925578be2a0e206c48fc6e67ac3
parent 5ced1d34edb9d18a13d655772b3faee939599148
Author: finwo <finwo@pm.me>
Date:   Thu, 18 Jul 2019 14:29:36 +0200

Added .keyPairFrom for attaching .sign and .verify

Diffstat:
Mindex.js | 50++++++++++++++++++++++++++++++++++++++------------
1 file changed, 38 insertions(+), 12 deletions(-)

diff --git a/index.js b/index.js @@ -45,6 +45,41 @@ exports.createSeed = function(){ return randomBytes(32); }; +exports.keyPairFrom = function( data ) { + if ('object' !== typeof data) return false; + if (!data) return false; + + const keypair = Object.create({ + sign: async function( message ) { + return exports.sign( message, this.publicKey, this.secretKey ); + }, + verify: async function( signature, message ) { + return exports.verify( signature, message, this.publicKey ); + }, + }); + + // Fetch public key + if (isBuffer(data.pk )) keypair.publicKey = data.pk; + if (isBuffer(data.pub )) keypair.publicKey = data.pub; + if (isBuffer(data.public )) keypair.publicKey = data.public; + if (isBuffer(data.publicKey)) keypair.publicKey = data.publicKey; + if (isBuffer(data.publickey)) keypair.publicKey = data.publicKey; + + // Fetch secret key + if (isBuffer(data.sk )) keypair.secretKey = data.sk; + if (isBuffer(data.sec )) keypair.secretKey = data.sec; + if (isBuffer(data.secret )) keypair.secretKey = data.secret; + if (isBuffer(data.secretKey )) keypair.secretKey = data.secretKey; + if (isBuffer(data.secretkey )) keypair.secretKey = data.secretkey; + if (isBuffer(data.pri )) keypair.secretKey = data.pri; + if (isBuffer(data.priv )) keypair.secretKey = data.priv; + if (isBuffer(data.private )) keypair.secretKey = data.private; + if (isBuffer(data.privateKey)) keypair.secretKey = data.privateKey; + if (isBuffer(data.privatekey)) keypair.secretKey = data.privatekey; + + return keypair; +}; + exports.createKeyPair = async function(seed) { const fn = (await Module).exports; const mem = (await Module).memory; @@ -67,19 +102,10 @@ exports.createKeyPair = async function(seed) { fn._free(publicKeyPtr); fn._free(secretKeyPtr); - const keypair = Object.create({ - sign: async function( message ) { - return exports.sign( message, this.publicKey, this.secretKey ); - }, - verify: async function( signature, message ) { - return exports.verify( signature, message, this.publicKey ); - }, + return exports.keyPairFrom({ + pk: Buffer.from(publicKey), + sk: Buffer.from(secretKey), }); - - keypair.publicKey = Buffer.from(publicKey); - keypair.secretKey = Buffer.from(secretKey); - - return keypair; }; exports.sign = async function(message, publicKey, secretKey){