Browse Source

Merge pull request #894 from braydonf/bug/public-key-calculation

Fixed public key calculation in rare situations that would produce an invalid point
patch-2
Yemel Jardi 10 years ago
parent
commit
6fb5c4771f
  1. 12
      npm-shrinkwrap.json
  2. 2
      package.json
  3. 30
      test/publickey.js

12
npm-shrinkwrap.json

@ -13,9 +13,9 @@
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-0.4.1.tgz"
},
"bn.js": {
"version": "0.16.0",
"from": "bn.js@0.16.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-0.16.0.tgz"
"version": "0.16.1",
"from": "bn.js@0.16.1",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-0.16.1.tgz"
},
"browser-request": {
"version": "0.3.3",
@ -43,9 +43,9 @@
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-0.16.0.tgz",
"dependencies": {
"bn.js": {
"version": "0.16.0",
"from": "bn.js@0.16.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-0.16.0.tgz"
"version": "0.16.1",
"from": "bn.js@0.16.1",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-0.16.1.tgz"
},
"brorand": {
"version": "1.0.1",

2
package.json

@ -74,7 +74,7 @@
},
"dependencies": {
"asn1.js": "=0.4.1",
"bn.js": "=0.16.0",
"bn.js": "=0.16.1",
"browser-request": "^0.3.3",
"bs58": "=2.0.0",
"bufferput": "^0.1.2",

30
test/publickey.js

@ -44,6 +44,7 @@ describe('PublicKey', function() {
});
describe('instantiation', function() {
it('from a private key', function() {
var privhex = '906977a061af29276e40bf377042ffbde414e496ae2260bbf1fa9d085637bfff';
var pubhex = '02a1633cafcc01ebfb6d78e39f687a1f0995c62fc95f51ead10a02ee0be551b5dc';
@ -52,6 +53,35 @@ describe('PublicKey', function() {
pk.toString().should.equal(pubhex);
});
it('problematic secp256k1 public keys', function() {
var knownKeys = [
{
wif: 'KzsjKq2FVqVuQv2ueHVFuB65A9uEZ6S1L6F8NuokCrE3V3kE3Ack',
priv: '6d1229a6b24c2e775c062870ad26bc261051e0198c67203167273c7c62538846',
pub: '03d6106302d2698d6a41e9c9a114269e7be7c6a0081317de444bb2980bf9265a01',
pubx: 'd6106302d2698d6a41e9c9a114269e7be7c6a0081317de444bb2980bf9265a01',
puby: 'e05fb262e64b108991a29979809fcef9d3e70cafceb3248c922c17d83d66bc9d'
},
{
wif: 'L5MgSwNB2R76xBGorofRSTuQFd1bm3hQMFVf3u2CneFom8u1Yt7G',
priv: 'f2cc9d2b008927db94b89e04e2f6e70c180e547b3e5e564b06b8215d1c264b53',
pub: '03e275faa35bd1e88f5df6e8f9f6edb93bdf1d65f4915efc79fd7a726ec0c21700',
pubx: 'e275faa35bd1e88f5df6e8f9f6edb93bdf1d65f4915efc79fd7a726ec0c21700',
puby: '367216cb35b086e6686d69dddd822a8f4d52eb82ac5d9de18fdcd9bf44fa7df7'
}
];
for(var i = 0; i < knownKeys.length; i++) {
var privkey = new PrivateKey(knownKeys[i].wif);
var pubkey = privkey.toPublicKey();
pubkey.toString().should.equal(knownKeys[i].pub);
pubkey.point.x.toString('hex').should.equal(knownKeys[i].pubx);
pubkey.point.y.toString('hex').should.equal(knownKeys[i].puby);
}
});
it('from a compressed public key', function() {
var publicKeyHex = '031ff0fe0f7b15ffaa85ff9f4744d539139c252a49710fb053bb9f2b933173ff9a';
var publicKey = new PublicKey(publicKeyHex);

Loading…
Cancel
Save