Added getID to PublicKey
- Tests in BloomFilter in [bitcoin core](https://github.com/bitcoin/bitcoin/blob/master/src/test/bloom_tests.cpp#L85) use the CPubKey.GetID as input into the BloomFilter - The hash is calculated when generating an Address however the hash itself is not currently available
This commit is contained in:
parent
3b4aaff44d
commit
b38f7fa319
|
@ -3,6 +3,7 @@
|
||||||
var Address = require('./address');
|
var Address = require('./address');
|
||||||
var BN = require('./crypto/bn');
|
var BN = require('./crypto/bn');
|
||||||
var Point = require('./crypto/point');
|
var Point = require('./crypto/point');
|
||||||
|
var Hash = require('./crypto/hash');
|
||||||
var JSUtil = require('./util/js');
|
var JSUtil = require('./util/js');
|
||||||
var Network = require('./networks');
|
var Network = require('./networks');
|
||||||
var _ = require('lodash');
|
var _ = require('lodash');
|
||||||
|
@ -384,6 +385,15 @@ PublicKey.prototype.toBuffer = PublicKey.prototype.toDER = function() {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Will return a sha256 + ripemd160 hash of the serialized public key
|
||||||
|
* @see https://github.com/bitcoin/bitcoin/blob/master/src/pubkey.h#L141
|
||||||
|
* @returns {Buffer}
|
||||||
|
*/
|
||||||
|
PublicKey.prototype.getID = function getID() {
|
||||||
|
return Hash.sha256ripemd160(this.toBuffer())
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Will return an address for the public key
|
* Will return an address for the public key
|
||||||
*
|
*
|
||||||
|
|
|
@ -8,6 +8,7 @@ var Point = bitcore.crypto.Point;
|
||||||
var BN = bitcore.crypto.BN;
|
var BN = bitcore.crypto.BN;
|
||||||
var PublicKey = bitcore.PublicKey;
|
var PublicKey = bitcore.PublicKey;
|
||||||
var PrivateKey = bitcore.PrivateKey;
|
var PrivateKey = bitcore.PrivateKey;
|
||||||
|
var Address = bitcore.Address;
|
||||||
var Networks = bitcore.Networks;
|
var Networks = bitcore.Networks;
|
||||||
|
|
||||||
/* jshint maxlen: 200 */
|
/* jshint maxlen: 200 */
|
||||||
|
@ -340,6 +341,25 @@ describe('PublicKey', function() {
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('hashes', function() {
|
||||||
|
|
||||||
|
// wif private key, address
|
||||||
|
// see: https://github.com/bitcoin/bitcoin/blob/master/src/test/key_tests.cpp#L20
|
||||||
|
var data = [
|
||||||
|
['5HxWvvfubhXpYYpS3tJkw6fq9jE9j18THftkZjHHfmFiWtmAbrj', '1QFqqMUD55ZV3PJEJZtaKCsQmjLT6JkjvJ'],
|
||||||
|
['5KC4ejrDjv152FGwP386VD1i2NYc5KkfSMyv1nGy1VGDxGHqVY3', '1F5y5E5FMc5YzdJtB9hLaUe43GDxEKXENJ'],
|
||||||
|
['Kwr371tjA9u2rFSMZjTNun2PXXP3WPZu2afRHTcta6KxEUdm1vEw', '1NoJrossxPBKfCHuJXT4HadJrXRE9Fxiqs'],
|
||||||
|
['L3Hq7a8FEQwJkW1M2GNKDW28546Vp5miewcCzSqUD9kCAXrJdS3g', '1CRj2HyM1CXWzHAXLQtiGLyggNT9WQqsDs']
|
||||||
|
];
|
||||||
|
|
||||||
|
data.forEach(function(d){
|
||||||
|
var publicKey = PrivateKey.fromWIF(d[0]).toPublicKey();
|
||||||
|
var address = Address.fromString(d[1]);
|
||||||
|
address.hashBuffer.should.deep.equal(publicKey.getID());
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
describe('#toString', function() {
|
describe('#toString', function() {
|
||||||
|
|
||||||
it('should print this known public key', function() {
|
it('should print this known public key', function() {
|
||||||
|
|
Loading…
Reference in New Issue