From e723993d1c6ab788e47cd59d07594fd9a1d71290 Mon Sep 17 00:00:00 2001 From: Kagami Hiiragi Date: Mon, 12 Jan 2015 20:50:21 +0300 Subject: [PATCH] Refactoring --- browser.js | 31 +++++++++++++------------------ index.js | 23 +++-------------------- 2 files changed, 16 insertions(+), 38 deletions(-) diff --git a/browser.js b/browser.js index 186fb32..9403a8c 100644 --- a/browser.js +++ b/browser.js @@ -14,13 +14,14 @@ var EC = require("elliptic").ec; var ec = new EC("secp256k1"); -exports.getPublic = function(privateKey) { - // `elliptic` doesn't have such checkings so we do it by ourself. We - // should always ensure that library user doesn't try to do something - // dumb. - if (privateKey.length !== 32) { - throw new Error("Bad private key"); +function assert(condition, message) { + if (!condition) { + throw new Error(message || "Assertion failed"); } +} + +exports.getPublic = function(privateKey) { + assert(privateKey.length === 32, "Bad private key"); // XXX(Kagami): `elliptic.utils.encode` returns array for every // encoding except `hex`. return new Buffer(ec.keyPair(privateKey).getPublic("arr")); @@ -28,20 +29,14 @@ exports.getPublic = function(privateKey) { exports.sign = function(privateKey, msg) { var key = ec.keyPair(privateKey); - var sig; - try { - sig = new Buffer(key.sign(msg).toDER()); - return Promise.resolve(sig); - } catch(e) { - return Promise.reject(); - } + return new Promise(function(resolve) { + resolve(new Buffer(key.sign(msg).toDER())); + }); }; exports.verify = function(key, msg, sig) { key = ec.keyPair(key); - if (key.verify(msg, sig)) { - return Promise.resolve(); - } else { - return Promise.reject(); - } + return new Promise(function(resolve, reject) { + return key.verify(msg, sig) ? resolve() : reject(); + }); }; diff --git a/index.js b/index.js index e54bf23..88f97f7 100644 --- a/index.js +++ b/index.js @@ -25,20 +25,9 @@ var getPublic = exports.getPublic = secp256k1.createPublicKey; * @return {Promise.} A promise that resolves with the * signature and rejects on bad key or message. */ -// FIXME(Kagami): What to do in case of invalid nonce? exports.sign = function(privateKey, msg) { - return new promise(function(resolve, reject) { - try { - secp256k1.sign(privateKey, msg, function(code, sig) { - if (code === 1) { - resolve(sig); - } else { - reject(); - } - }); - } catch(e) { - reject(); - } + return new promise(function(resolve) { + resolve(secp256k1.sign(privateKey, msg)); }); }; @@ -53,12 +42,6 @@ exports.sign = function(privateKey, msg) { exports.verify = function(key, msg, sig) { var publicKey = key.length === 32 ? getPublic(key) : key; return new promise(function(resolve, reject) { - secp256k1.verify(publicKey, msg, sig, function(code) { - if (code === 1) { - resolve(); - } else { - reject(); - } - }); + return secp256k1.verify(publicKey, msg, sig) === 1 ? resolve() : reject(); }); };