Browse Source

Fix error on public key for hdpublickey

patch-2
eordano 10 years ago
parent
commit
a07d90dfbf
  1. 5
      lib/hdpublickey.js
  2. 6
      lib/publickey.js
  3. 12
      test/hdpublickey.js

5
lib/hdpublickey.js

@ -318,18 +318,19 @@ HDPublicKey.prototype._buildFromBuffers = function (arg) {
throw new errors.InvalidB58Checksum(concat, checksum);
}
}
var network = Network.get(BufferUtil.integerFromBuffer(arg.version));
var xpubkey;
xpubkey = Base58Check.encode(BufferUtil.concat(sequence));
arg.xpubkey = new Buffer(xpubkey);
var publicKey = PublicKey.fromString(arg.publicKey);
var publicKey = new PublicKey(arg.publicKey, {network: network});
var size = HDPublicKey.ParentFingerPrintSize;
var fingerPrint = Hash.sha256ripemd160(publicKey.toBuffer()).slice(0, size);
JSUtil.defineImmutable(this, {
xpubkey: xpubkey,
network: Network.get(BufferUtil.integerFromBuffer(arg.version)),
network: network,
depth: BufferUtil.integerFromSingleByteBuffer(arg.depth),
publicKey: publicKey,
fingerPrint: fingerPrint

6
lib/publickey.js

@ -70,8 +70,7 @@ var PublicKey = function PublicKey(data, extra) {
PublicKey.prototype._classifyArgs = function(data, extra) {
/* jshint maxcomplexity: 10 */
var info = {
compressed: _.isUndefined(extra.compressed) || extra.compressed,
network: _.isUndefined(extra.network) ? undefined : Network.get(extra.network)
compressed: _.isUndefined(extra.compressed) || extra.compressed
};
// detect type of data
@ -88,6 +87,9 @@ PublicKey.prototype._classifyArgs = function(data, extra) {
} else {
throw new TypeError('First argument is an unrecognized data format.');
}
if (!info.network) {
info.network = _.isUndefined(extra.network) ? undefined : Network.get(extra.network);
}
return info;
};

12
test/hdpublickey.js

@ -13,9 +13,11 @@ var BufferUtil = bitcore.util.buffer;
var HDPrivateKey = bitcore.HDPrivateKey;
var HDPublicKey = bitcore.HDPublicKey;
var Base58Check = bitcore.encoding.Base58Check;
var Networks = bitcore.Networks;
var xprivkey = 'xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi';
var xpubkey = 'xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8';
var xpubkeyTestnet = 'tpubD6NzVbkrYhZ4WZaiWHz59q5EQ61bd6dUYfU4ggRWAtNAyyYRNWT6ktJ7UHJEXURvTfTfskFQmK7Ff4FRkiRN5wQH8nkGAb6aKB4Yyeqsw5m';
var json = '{"network":"livenet","depth":0,"fingerPrint":876747070,"parentFingerPrint":0,"childIndex":0,"chainCode":"873dff81c02f525623fd1fe5167eac3a55a049de3d314bb42ee227ffed37d508","publicKey":"0339a36013301597daef41fbe593a02cc513d0b55527ec2df1050e2e8ff49c85c2","checksum":-1421395167,"xpubkey":"xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8"}';
var derived_0_1_200000 = 'xpub6BqyndF6rkBNTV6LXwiY8Pco8aqctqq7tGEUdA8fmGDTnDJphn2fmxr3eM8Lm3m8TrNUsLbEjHvpa3adBU18YpEx4tp2Zp6nqax3mQkudhX';
@ -31,7 +33,7 @@ describe('HDPublicKey interface', function() {
got = e instanceof errorType;
}
if (!error instanceof errorType) {
console.log('Adsasd', typeof error);
console.log('Error', typeof error);
}
// expect(got).to.equal(true);
};
@ -147,6 +149,14 @@ describe('HDPublicKey interface', function() {
pubKey.toString().should.equal(pubKey.xpubkey);
});
it('publicKey property matches network', function() {
var livenet = new HDPublicKey(xpubkey);
var testnet = new HDPublicKey(xpubkeyTestnet);
livenet.publicKey.network.should.equal(Networks.livenet);
testnet.publicKey.network.should.equal(Networks.testnet);
});
it('inspect() displays correctly', function() {
var pubKey = new HDPublicKey(xpubkey);
pubKey.inspect().should.equal('<HDPublicKey: ' + pubKey.xpubkey + '>');

Loading…
Cancel
Save