From 4b52c42c910029f2f247731a0949bb74f30033aa Mon Sep 17 00:00:00 2001
From: Daniel Cousens <github@dcousens.com>
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))
       })
     })
   })