Message: allow base64 strings as input
This commit is contained in:
parent
70be0d2117
commit
4b52c42c91
2 changed files with 12 additions and 11 deletions
|
@ -35,14 +35,19 @@ function sign(privKey, message, network) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: network could be implied from address
|
// 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) {
|
if (address instanceof Address) {
|
||||||
address = address.toString()
|
address = address.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
network = network || networks.bitcoin
|
network = network || networks.bitcoin
|
||||||
|
|
||||||
var hash = magicHash(message, network)
|
var hash = magicHash(message, network)
|
||||||
var parsed = ECSignature.parseCompact(signatureBuffer)
|
var parsed = ECSignature.parseCompact(signature)
|
||||||
var e = BigInteger.fromBuffer(hash)
|
var e = BigInteger.fromBuffer(hash)
|
||||||
var Q = ecdsa.recoverPubKey(ecparams, e, parsed.signature, parsed.i)
|
var Q = ecdsa.recoverPubKey(ecparams, e, parsed.signature, parsed.i)
|
||||||
|
|
||||||
|
|
|
@ -26,29 +26,25 @@ describe('Message', function() {
|
||||||
var network = networks[f.network]
|
var network = networks[f.network]
|
||||||
|
|
||||||
var address = Address.fromBase58Check(f.address)
|
var address = Address.fromBase58Check(f.address)
|
||||||
var signature = new Buffer(f.signature, 'base64')
|
assert.ok(Message.verify(address, f.signature, f.message, network))
|
||||||
assert.ok(Message.verify(address, signature, f.message, network))
|
|
||||||
})
|
})
|
||||||
|
|
||||||
fixtures.valid.verify.forEach(function(f) {
|
fixtures.valid.verify.forEach(function(f) {
|
||||||
it('verifies a valid signature for \"' + f.message + '\" (' + f.network + ')', function() {
|
it('verifies a valid signature for \"' + f.message + '\" (' + f.network + ')', function() {
|
||||||
var network = networks[f.network]
|
var network = networks[f.network]
|
||||||
|
|
||||||
var signature = new Buffer(f.signature, 'base64')
|
var signature = f.signature
|
||||||
assert.ok(Message.verify(f.address, signature, f.message, network))
|
assert.ok(Message.verify(f.address, f.signature, f.message, network))
|
||||||
|
|
||||||
if (f.compressed) {
|
if (f.compressed) {
|
||||||
var compressedSignature = new Buffer(f.compressed.signature, 'base64')
|
assert.ok(Message.verify(f.compressed.address, f.compressed.signature, f.message, network))
|
||||||
|
|
||||||
assert.ok(Message.verify(f.compressed.address, compressedSignature, f.message, network))
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
fixtures.invalid.verify.forEach(function(f) {
|
fixtures.invalid.verify.forEach(function(f) {
|
||||||
it(f.description, function() {
|
it(f.description, function() {
|
||||||
var signature = new Buffer(f.signature, 'base64')
|
assert.ok(!Message.verify(f.address, f.signature, f.message))
|
||||||
assert.ok(!Message.verify(f.address, signature, f.message))
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
Loading…
Add table
Reference in a new issue