You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.2 KiB
37 lines
1.2 KiB
'use strict';
|
|
|
|
var buffer = require('buffer');
|
|
|
|
var chai = require('chai');
|
|
var should = chai.should();
|
|
var bitcore = require('../../');
|
|
var Script = bitcore.Script;
|
|
var Transaction = bitcore.Transaction;
|
|
var sighash = Transaction.sighash;
|
|
|
|
var vectors_sighash = require('../data/sighash.json');
|
|
|
|
describe('sighash', function() {
|
|
|
|
vectors_sighash.forEach(function(vector, i) {
|
|
if (i === 0) {
|
|
// First element is just a row describing the next ones
|
|
return;
|
|
}
|
|
it('test vector from bitcoind #' + i + ' (' + vector[4].substring(0, 16) + ')', function() {
|
|
var txbuf = new buffer.Buffer(vector[0], 'hex');
|
|
var scriptbuf = new buffer.Buffer(vector[1], 'hex');
|
|
var subscript = Script(scriptbuf);
|
|
var nin = vector[2];
|
|
var nhashtype = vector[3];
|
|
var sighashbuf = new buffer.Buffer(vector[4], 'hex');
|
|
var tx = new Transaction(txbuf);
|
|
|
|
//make sure transacion to/from buffer is isomorphic
|
|
tx.uncheckedSerialize().should.equal(txbuf.toString('hex'));
|
|
|
|
//sighash ought to be correct
|
|
sighash.sighash(tx, nhashtype, nin, subscript).toString('hex').should.equal(sighashbuf.toString('hex'));
|
|
});
|
|
});
|
|
});
|
|
|