diff --git a/lib/ecdsa.js b/lib/ecdsa.js index b22c409..f33ea51 100644 --- a/lib/ecdsa.js +++ b/lib/ecdsa.js @@ -198,4 +198,19 @@ ECDSA.prototype.verify = function() { return false; }; +ECDSA.sign = function(hashbuf, keypair) { + return ECDSA().set({ + hashbuf: hashbuf, + keypair: keypair + }).signRandomK(); +}; + +ECDSA.verify = function(hashbuf, sig, pubkey) { + return ECDSA().set({ + hashbuf: hashbuf, + sig: sig, + keypair: Keypair().set({pubkey: pubkey}) + }).verify(); +}; + module.exports = ECDSA; diff --git a/test/ecdsa.js b/test/ecdsa.js index 0291e21..bf04979 100644 --- a/test/ecdsa.js +++ b/test/ecdsa.js @@ -190,4 +190,24 @@ describe("ECDSA", function() { }); + describe('@sign', function() { + + it('should produce a signature', function() { + var sig = ECDSA.sign(ecdsa.hashbuf, ecdsa.keypair); + (sig instanceof Signature).should.equal(true); + }); + + }); + + describe('@verify', function() { + + it('should verify a valid signature, and unverify an invalid signature', function() { + var sig = ECDSA.sign(ecdsa.hashbuf, ecdsa.keypair); + ECDSA.verify(ecdsa.hashbuf, sig, ecdsa.keypair.pubkey).should.equal(true); + var fakesig = Signature(sig.r.add(1), sig.s); + ECDSA.verify(ecdsa.hashbuf, fakesig, ecdsa.keypair.pubkey).should.equal(false); + }); + + }); + });