Merge pull request #147 from matiu/bug/signatures-in-browser
Bug/signatures in browser
This commit is contained in:
commit
018239757b
5
Key.js
5
Key.js
@ -21,6 +21,7 @@ if (process.versions) {
|
|||||||
|
|
||||||
var kSpec = function() {
|
var kSpec = function() {
|
||||||
this._pub = null;
|
this._pub = null;
|
||||||
|
this.compressed = true; // default
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -70,7 +71,7 @@ if (process.versions) {
|
|||||||
}
|
}
|
||||||
var eck = new ECKey(buffertools.toHex(this.private));
|
var eck = new ECKey(buffertools.toHex(this.private));
|
||||||
eck.setCompressed(this.compressed);
|
eck.setCompressed(this.compressed);
|
||||||
var signature = eck.sign(hash);
|
var signature = eck.sign(bufferToArray(hash));
|
||||||
// return it as a buffer to keep c++ compatibility
|
// return it as a buffer to keep c++ compatibility
|
||||||
return new Buffer(signature);
|
return new Buffer(signature);
|
||||||
};
|
};
|
||||||
@ -92,7 +93,7 @@ if (process.versions) {
|
|||||||
eck.setPub(bufferToArray(self.public));
|
eck.setPub(bufferToArray(self.public));
|
||||||
eck.setCompressed(self.compressed);
|
eck.setCompressed(self.compressed);
|
||||||
var sigA = bufferToArray(sig);
|
var sigA = bufferToArray(sig);
|
||||||
var ret = eck.verify(hash,sigA);
|
var ret = eck.verify(bufferToArray(hash),sigA);
|
||||||
return ret;
|
return ret;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -56,6 +56,16 @@ describe('Key', function() {
|
|||||||
buffertools.toHex(k.private).should.equal(pkshex);
|
buffertools.toHex(k.private).should.equal(pkshex);
|
||||||
buffertools.toHex(k.public).should.equal(pubhex);
|
buffertools.toHex(k.public).should.equal(pubhex);
|
||||||
});
|
});
|
||||||
|
it('should generate a hardcoded public key example', function() {
|
||||||
|
var k = new Key();
|
||||||
|
k.private = new Buffer('876156ccb16bb1760ddda6ad3e561c026fc0d679ad7860b71dd11c30e42f6589','hex');
|
||||||
|
k.regenerateSync();
|
||||||
|
|
||||||
|
k.compressed.should.equal(true);
|
||||||
|
var pHex = bitcore.buffertools.toHex(k.public);
|
||||||
|
pHex.should.equal('0394615227fd5ff4d4dfac88cf148e43d35a7a059788dd2479f60cea807b09d0c2');
|
||||||
|
});
|
||||||
|
|
||||||
it('should not fail checking good signSync status', function() {
|
it('should not fail checking good signSync status', function() {
|
||||||
var k = Key.generateSync();
|
var k = Key.generateSync();
|
||||||
var b = new Buffer(32);
|
var b = new Buffer(32);
|
||||||
@ -73,7 +83,7 @@ describe('Key', function() {
|
|||||||
it('should create a signature without failling', function() {
|
it('should create a signature without failling', function() {
|
||||||
var k = Key.generateSync();
|
var k = Key.generateSync();
|
||||||
var pkshex = 'b7dafe35d7d1aab78b53982c8ba554584518f86d50af565c98e053613c8f15e0';
|
var pkshex = 'b7dafe35d7d1aab78b53982c8ba554584518f86d50af565c98e053613c8f15e0';
|
||||||
k.private = buffertools.fromHex(new Buffer(pkshex));
|
k.private = new Buffer(pkshex, 'hex');
|
||||||
k.regenerateSync();
|
k.regenerateSync();
|
||||||
k.compressed.should.be.ok;
|
k.compressed.should.be.ok;
|
||||||
buffertools.toHex(k.private).should.equal(pkshex);
|
buffertools.toHex(k.private).should.equal(pkshex);
|
||||||
@ -92,4 +102,22 @@ describe('Key', function() {
|
|||||||
var ret= k2.verifySignatureSync(a_hash, sig);
|
var ret= k2.verifySignatureSync(a_hash, sig);
|
||||||
ret.should.equal(true);
|
ret.should.equal(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should verify a hardcoded example', function() {
|
||||||
|
var k = new Key();
|
||||||
|
k.private = new Buffer('876156ccb16bb1760ddda6ad3e561c026fc0d679ad7860b71dd11c30e42f6589','hex');
|
||||||
|
k.regenerateSync();
|
||||||
|
var pHex = bitcore.buffertools.toHex(k.public);
|
||||||
|
pHex.should.equal('0394615227fd5ff4d4dfac88cf148e43d35a7a059788dd2479f60cea807b09d0c2');
|
||||||
|
var a_hash = new Buffer('ce42c5c7f405461c38ea849130f51e48531ab3188390a21a15aeaa1faedbf0b2','hex');
|
||||||
|
var sig= new Buffer('304602210099f689f846a1590cf57f9cede2fe841d8552f114bc9e5f5603a333b00e69d3fa022100e83604ddd5f1ce6f5add3ac8da7dbf17f3ffe5b47205f3899caeaa54abdbcf07','hex');
|
||||||
|
|
||||||
|
var ret= k.verifySignatureSync(a_hash, sig);
|
||||||
|
ret.should.equal(true);
|
||||||
|
|
||||||
|
var sig2= new Buffer('304602210099f689f846a1590cf57f9cede2fe841d8552f114bc9e5f5603a333b00e69d3fa022100e83604ddd5f1ce6f5add3ac8da7dbf17f3ffe5b47205f3899caeaa54abdbcf08', 'hex');
|
||||||
|
var ret= k.verifySignatureSync(a_hash, sig2);
|
||||||
|
ret.should.equal(false);
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user