Check private key length in getPublic
This commit is contained in:
parent
f8c682da07
commit
513d880c64
|
@ -5,11 +5,16 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
require("es6-promise").polyfill();
|
require("es6-promise").polyfill();
|
||||||
|
var assert = require("assert");
|
||||||
var EC = require("elliptic").ec;
|
var EC = require("elliptic").ec;
|
||||||
|
|
||||||
var ec = new EC("secp256k1");
|
var ec = new EC("secp256k1");
|
||||||
|
|
||||||
exports.getPublic = function(privateKey) {
|
exports.getPublic = function(privateKey) {
|
||||||
|
// `elliptic` doesn't have such checkings so we do it ourself. We
|
||||||
|
// should always ensure that library user doesn't try to do something
|
||||||
|
// dumb.
|
||||||
|
assert(privateKey.length === 32, "Bad private key");
|
||||||
// XXX(Kagami): `elliptic.utils.encode` returns array for every
|
// XXX(Kagami): `elliptic.utils.encode` returns array for every
|
||||||
// encoding except `hex`.
|
// encoding except `hex`.
|
||||||
return new Buffer(ec.keyPair(privateKey).getPublic("arr"));
|
return new Buffer(ec.keyPair(privateKey).getPublic("arr"));
|
||||||
|
|
1
test.js
1
test.js
|
@ -16,6 +16,7 @@ describe("Key convertion", function() {
|
||||||
|
|
||||||
it("should throw on invalid private key", function() {
|
it("should throw on invalid private key", function() {
|
||||||
expect(eccrypto.getPublic.bind(null, Buffer("00", "hex"))).to.throw(Error);
|
expect(eccrypto.getPublic.bind(null, Buffer("00", "hex"))).to.throw(Error);
|
||||||
|
expect(eccrypto.getPublic.bind(null, Buffer("test"))).to.throw(Error);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user