ec: refactor.

This commit is contained in:
Christopher Jeffrey 2016-06-12 00:27:40 -07:00
parent 8471ce165d
commit 9ccac80ad6
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD

View File

@ -104,7 +104,8 @@ ec.random = function random(size) {
*/ */
ec.rand = function rand(min, max) { ec.rand = function rand(min, max) {
return Math.floor((ec.random(1)[0] / 256) * (max - min) + min); var num = ec.random(4).readUInt32LE(0, true);
return Math.floor((num / 0x100000000) * (max - min) + min);
}; };
/** /**
@ -252,10 +253,9 @@ ec.sign = function sign(msg, key) {
*/ */
ec.normalizeLength = function normalizeLength(sig) { ec.normalizeLength = function normalizeLength(sig) {
var data, p, len, rlen, slen; var data = sig;
var p = { place: 0 };
data = sig.slice(); var len, rlen, slen;
p = { place: 0 };
if (data[p.place++] !== 0x30) if (data[p.place++] !== 0x30)
return sig; return sig;
@ -283,16 +283,21 @@ ec.normalizeLength = function normalizeLength(sig) {
function getLength(buf, p) { function getLength(buf, p) {
var initial = buf[p.place++]; var initial = buf[p.place++];
if (!(initial & 0x80)) { var octetLen, val, i, off;
if (!(initial & 0x80))
return initial; return initial;
}
var octetLen = initial & 0xf; octetLen = initial & 0xf;
var val = 0; val = 0;
for (var i = 0, off = p.place; i < octetLen; i++, off++) {
for (i = 0, off = p.place; i < octetLen; i++, off++) {
val <<= 8; val <<= 8;
val |= buf[off]; val |= buf[off];
} }
p.place = off; p.place = off;
return val; return val;
} }
@ -303,9 +308,7 @@ function getLength(buf, p) {
*/ */
ec.isLowS = function isLowS(sig) { ec.isLowS = function isLowS(sig) {
if (!sig.s) { if (Buffer.isBuffer(sig)) {
assert(Buffer.isBuffer(sig));
try { try {
sig = new ec.signature(sig); sig = new ec.signature(sig);
} catch (e) { } catch (e) {
@ -313,9 +316,6 @@ ec.isLowS = function isLowS(sig) {
} }
} }
if (sig.s.cmpn(0) <= 0)
return false;
// If S is greater than half the order, // If S is greater than half the order,
// it's too high. // it's too high.
if (sig.s.cmp(ec.elliptic.nh) > 0) if (sig.s.cmp(ec.elliptic.nh) > 0)
@ -332,9 +332,7 @@ ec.isLowS = function isLowS(sig) {
*/ */
ec.toLowS = function toLowS(sig) { ec.toLowS = function toLowS(sig) {
if (!sig.s) { if (Buffer.isBuffer(sig)) {
assert(Buffer.isBuffer(sig));
try { try {
sig = new ec.signature(sig); sig = new ec.signature(sig);
} catch (e) { } catch (e) {