bitcoinjs-lib/test/message.js

71 lines
2.2 KiB
JavaScript
Raw Normal View History

var assert = require('assert')
var networks = require('../src/networks')
2014-05-13 08:35:07 +02:00
2014-06-14 02:21:38 +02:00
var Address = require('../src/address')
2014-05-16 07:39:17 +02:00
var BigInteger = require('bigi')
var ECKey = require('../src/eckey')
var Message = require('../src/message')
2014-05-18 11:47:39 +02:00
var fixtures = require('./fixtures/message.json')
2014-04-21 13:24:58 +02:00
describe('Message', function() {
2014-04-21 13:24:58 +02:00
describe('magicHash', function() {
fixtures.valid.magicHash.forEach(function(f) {
it('produces the correct magicHash for \"' + f.message + '\" (' + f.network + ')', function() {
2014-05-16 07:39:17 +02:00
var network = networks[f.network]
var actual = Message.magicHash(f.message, network)
2014-04-21 13:24:58 +02:00
2014-05-16 07:39:17 +02:00
assert.equal(actual.toString('hex'), f.magicHash)
2014-04-21 13:24:58 +02:00
})
})
})
describe('verify', function() {
2014-06-14 02:21:38 +02:00
it('accepts an Address object', function() {
var f = fixtures.valid.verify[0]
var network = networks[f.network]
var address = Address.fromBase58Check(f.address)
2014-08-20 01:17:55 +02:00
assert(Message.verify(address, f.signature, f.message, network))
2014-06-14 02:21:38 +02:00
})
fixtures.valid.verify.forEach(function(f) {
it('verifies a valid signature for \"' + f.message + '\" (' + f.network + ')', function() {
2014-05-22 05:22:59 +02:00
var network = networks[f.network]
2014-08-20 01:14:04 +02:00
var signature = f.signature
2014-08-20 01:17:55 +02:00
assert(Message.verify(f.address, f.signature, f.message, network))
2014-05-22 05:22:59 +02:00
if (f.compressed) {
2014-08-20 01:17:55 +02:00
assert(Message.verify(f.compressed.address, f.compressed.signature, f.message, network))
2014-05-22 05:22:59 +02:00
}
})
})
2014-05-16 07:39:17 +02:00
2014-05-22 05:22:59 +02:00
fixtures.invalid.verify.forEach(function(f) {
it(f.description, function() {
2014-08-20 01:17:55 +02:00
assert(!Message.verify(f.address, f.signature, f.message))
2014-05-22 05:22:59 +02:00
})
2014-05-16 07:39:17 +02:00
})
})
describe('signing', function() {
2014-05-22 05:22:59 +02:00
fixtures.valid.signing.forEach(function(f) {
it(f.description, function() {
var network = networks[f.network]
var privKey = new ECKey(new BigInteger(f.d), false)
2014-05-24 05:54:46 +02:00
var signature = Message.sign(privKey, f.message, network)
assert.equal(signature.toString('base64'), f.signature)
2014-05-16 07:39:17 +02:00
2014-05-22 05:22:59 +02:00
if (f.compressed) {
var compressedPrivKey = new ECKey(new BigInteger(f.d))
2014-05-24 05:54:46 +02:00
var compressedSignature = Message.sign(compressedPrivKey, f.message)
2014-05-16 07:39:17 +02:00
2014-05-24 05:54:46 +02:00
assert.equal(compressedSignature.toString('base64'), f.compressed.signature)
2014-05-22 05:22:59 +02:00
}
})
2014-05-16 07:39:17 +02:00
})
})
})