From 4b52c42c910029f2f247731a0949bb74f30033aa Mon Sep 17 00:00:00 2001 From: Daniel Cousens Date: Wed, 20 Aug 2014 09:14:04 +1000 Subject: [PATCH] Message: allow base64 strings as input --- src/message.js | 9 +++++++-- test/message.js | 14 +++++--------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/message.js b/src/message.js index 943d82b..4bb96a3 100644 --- a/src/message.js +++ b/src/message.js @@ -35,14 +35,19 @@ function sign(privKey, message, network) { } // TODO: network could be implied from address -function verify(address, signatureBuffer, message, network) { +function verify(address, signature, message, network) { + if (!Buffer.isBuffer(signature)) { + signature = new Buffer(signature, 'base64') + } + if (address instanceof Address) { address = address.toString() } + network = network || networks.bitcoin var hash = magicHash(message, network) - var parsed = ECSignature.parseCompact(signatureBuffer) + var parsed = ECSignature.parseCompact(signature) var e = BigInteger.fromBuffer(hash) var Q = ecdsa.recoverPubKey(ecparams, e, parsed.signature, parsed.i) diff --git a/test/message.js b/test/message.js index d69a41f..a9530b2 100644 --- a/test/message.js +++ b/test/message.js @@ -26,29 +26,25 @@ describe('Message', function() { var network = networks[f.network] var address = Address.fromBase58Check(f.address) - var signature = new Buffer(f.signature, 'base64') - assert.ok(Message.verify(address, signature, f.message, network)) + assert.ok(Message.verify(address, f.signature, f.message, network)) }) fixtures.valid.verify.forEach(function(f) { it('verifies a valid signature for \"' + f.message + '\" (' + f.network + ')', function() { var network = networks[f.network] - var signature = new Buffer(f.signature, 'base64') - assert.ok(Message.verify(f.address, signature, f.message, network)) + var signature = f.signature + assert.ok(Message.verify(f.address, f.signature, f.message, network)) if (f.compressed) { - var compressedSignature = new Buffer(f.compressed.signature, 'base64') - - assert.ok(Message.verify(f.compressed.address, compressedSignature, f.message, network)) + assert.ok(Message.verify(f.compressed.address, f.compressed.signature, f.message, network)) } }) }) fixtures.invalid.verify.forEach(function(f) { it(f.description, function() { - var signature = new Buffer(f.signature, 'base64') - assert.ok(!Message.verify(f.address, signature, f.message)) + assert.ok(!Message.verify(f.address, f.signature, f.message)) }) }) })