eccrypto/test.js

78 lines
2.6 KiB
JavaScript
Raw Permalink Normal View History

2014-12-21 19:05:05 +01:00
var expect = require("chai").expect;
2014-12-25 17:01:52 +01:00
var crypto = require("crypto");
2014-12-23 21:28:40 +01:00
var eccrypto = require("./");
2014-12-21 19:05:05 +01:00
var privateKey = Buffer(32);
privateKey.fill(1);
var publicKey = eccrypto.getPublic(privateKey);
2014-12-25 17:01:52 +01:00
var msg = crypto.createHash("sha256").update("test").digest();
2014-12-26 18:48:39 +01:00
var otherMsg = crypto.createHash("sha256").update("test2").digest();
2014-12-26 18:48:39 +01:00
describe("Key convertion", function() {
it("should allow to convert private key to public", function() {
expect(Buffer.isBuffer(publicKey)).to.be.true;
expect(publicKey.toString("hex")).to.equal("041b84c5567b126440995d3ed5aaba0565d71e1834604819ff9c17f5e9d5dd078f70beaf8f588b541507fed6a642c5ab42dfdf8120a7f639de5122d47a69a8e8d1");
});
2014-12-26 18:48:39 +01:00
it("should throw on invalid private key", function() {
2014-12-26 18:58:36 +01:00
expect(eccrypto.getPublic.bind(null, Buffer("00", "hex"))).to.throw(Error);
2014-12-27 13:47:25 +01:00
expect(eccrypto.getPublic.bind(null, Buffer("test"))).to.throw(Error);
2014-12-26 18:48:39 +01:00
});
});
describe("ECDSA", function() {
it("should allow to sign and verify message", function() {
return eccrypto.sign(privateKey, msg)
.then(function(sig) {
expect(Buffer.isBuffer(sig)).to.be.true;
2014-12-25 17:01:52 +01:00
expect(sig.toString("hex")).to.equal("3044022078c15897a34de6566a0d396fdef660698c59fef56d34ee36bef14ad89ee0f6f8022016e02e8b7285d93feafafbe745702f142973a77d5c2fa6293596357e17b3b47c");
return eccrypto.verify(publicKey, msg, sig);
});
});
2014-12-26 18:48:39 +01:00
it("should allow to verify using private key", function() {
return eccrypto.sign(privateKey, msg)
.then(function(sig) {
expect(Buffer.isBuffer(sig)).to.be.true;
return eccrypto.verify(privateKey, msg, sig);
});
});
2014-12-28 12:02:28 +01:00
it("shouldn't verify incorrect signature", function(done) {
eccrypto.sign(privateKey, msg)
.then(function(sig) {
expect(Buffer.isBuffer(sig)).to.be.true;
2014-12-26 18:48:39 +01:00
return eccrypto.verify(publicKey, otherMsg, sig);
}).catch(function() {
done();
});
});
it("should reject promise on invalid key when signing", function(done) {
eccrypto.sign(Buffer("test"), msg).catch(function() {
done();
});
});
it("should reject promise on invalid key when verifying", function(done) {
eccrypto.sign(privateKey, msg)
.then(function(sig) {
expect(Buffer.isBuffer(sig)).to.be.true;
return eccrypto.verify(Buffer("test"), msg, sig);
}).catch(function() {
done();
});
});
it("should reject promise on invalid sig when verifying", function(done) {
eccrypto.sign(privateKey, msg)
.then(function(sig) {
expect(Buffer.isBuffer(sig)).to.be.true;
sig[0] ^= 1;
return eccrypto.verify(publicKey, msg, sig);
}).catch(function() {
done();
});
2014-12-21 19:05:05 +01:00
});
});