Comparing version 0.9.2 to 0.10.0
@@ -56,3 +56,3 @@ var assert = require('assert'); | ||
var rhs = x.montSqr().montMul(x).montAdd(ax).montAdd(this.b); | ||
return y.montSqr().montSub(rhs).cmp(0) === 0; | ||
return y.montSqr().montSub(rhs).cmpn(0) === 0; | ||
}; | ||
@@ -226,3 +226,3 @@ | ||
var ys1 = this.y.montShl(1); | ||
if (ys1.cmp(0) === 0) | ||
if (ys1.cmpn(0) === 0) | ||
return this.curve.point(null, null); | ||
@@ -234,3 +234,3 @@ | ||
var dyinv = ys1.montInvm(); | ||
var c = x2.montMul(3).montIAdd(a).montMul(dyinv); | ||
var c = x2.montShl(1).montIAdd(x2).montIAdd(a).montMul(dyinv); | ||
@@ -255,6 +255,6 @@ var nx = c.montSqr().montISub(this.x.montShl(1)); | ||
var k = num.clone(); | ||
while (k.cmp(1) >= 0) { | ||
while (k.cmpn(1) >= 0) { | ||
var z; | ||
if (k.isOdd()) { | ||
var mod = k.andl(ws - 1); | ||
var mod = k.andln(ws - 1); | ||
if (mod > (ws >> 1) - 1) | ||
@@ -271,3 +271,3 @@ z = (ws >> 1) - mod; | ||
// Optimization, shift by word if possible | ||
var shift = (k.cmp(0) !== 0 && k.andl(ws - 1) === 0) ? w : 1; | ||
var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? w : 1; | ||
for (var i = 1; i < shift; i++) | ||
@@ -281,5 +281,4 @@ naf.push(0); | ||
Point.prototype.mul = function mul(k, kbase) { | ||
if (!(k instanceof bn)) | ||
k = new bn(k, kbase); | ||
Point.prototype.mul = function mul(k) { | ||
k = new bn(k, 16); | ||
@@ -414,3 +413,3 @@ if (this.precomputed && this.precomputed.length) | ||
var jy2 = jy.montSqr(); | ||
var c = jx2.montMul(3).montIAdd(a.montMul(jz4)); | ||
var c = jx2.montShl(1).montIAdd(jx2).montIAdd(a.montMul(jz4)); | ||
@@ -432,3 +431,3 @@ var t1 = jx.montShl(2).montMul(jy2); | ||
var jyd4 = jyd2.montSqr(); | ||
var c = jx2.montMul(3).montIAdd(a.montMul(jz4)); | ||
var c = jx2.montShl(1).montIAdd(jx2).montIAdd(a.montMul(jz4)); | ||
@@ -466,5 +465,5 @@ var t1 = jx.montMul(jyd2); | ||
return this === p || | ||
this.x.mul(z2).isub(p.x.mul(pz2)).mod(m).cmp(0) === 0 || | ||
this.x.mul(z2).isub(p.x.mul(pz2)).mod(m).cmpn(0) === 0 || | ||
this.y.mul(z2.mul(this.z)) | ||
.isub(p.y.mul(pz2.mul(p.z))).mod(m).cmp(0) === 0; | ||
.isub(p.y.mul(pz2.mul(p.z))).mod(m).cmpn(0) === 0; | ||
}; | ||
@@ -481,3 +480,3 @@ | ||
JPoint.prototype.isInfinity = function isInfinity() { | ||
return this.z.cmp(0) === 0; | ||
return this.z.cmpn(0) === 0; | ||
}; |
@@ -45,3 +45,3 @@ var assert = require('assert'); | ||
var bytes = this.n.byteLength(); | ||
var ns2 = this.n.sub(2); | ||
var ns2 = this.n.sub(new bn(2)); | ||
do { | ||
@@ -90,7 +90,7 @@ var priv = new bn(drbg.generate(bytes)); | ||
// Number of bytes to generate | ||
var ns1 = this.n.sub(1); | ||
var ns1 = this.n.sub(new bn(1)); | ||
do { | ||
var k = new bn(drbg.generate(this.n.byteLength())); | ||
k = this._truncateToN(k, true); | ||
if (k.cmp(1) <= 0 || k.cmp(ns1) >= 0) | ||
if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0) | ||
continue; | ||
@@ -103,7 +103,7 @@ | ||
var r = kp.getX().mod(this.n); | ||
if (r.cmp(0) === 0) | ||
if (r.cmpn(0) === 0) | ||
continue; | ||
var s = k.invm(this.n).mul(msg.add(r.mul(key.getPrivate()))).mod(this.n); | ||
if (s.cmp(0) === 0) | ||
if (s.cmpn(0) === 0) | ||
continue; | ||
@@ -123,5 +123,5 @@ | ||
var s = signature.s; | ||
if (r.cmp(1) < 0 || r.cmp(this.n) >= 0) | ||
if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0) | ||
return false; | ||
if (s.cmp(1) < 0 || s.cmp(this.n) >= 0) | ||
if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0) | ||
return false; | ||
@@ -128,0 +128,0 @@ |
@@ -55,3 +55,3 @@ var assert = require('assert'); | ||
return { result: false, reason: 'Public key is not a point' }; | ||
if (!pub.mul(this.n).isInfinity()) | ||
if (!pub.mul(this.ecdsa.n).isInfinity()) | ||
return { result: false, reason: 'Public key * N != O' }; | ||
@@ -58,0 +58,0 @@ |
{ | ||
"name": "elliptic", | ||
"version": "0.9.2", | ||
"version": "0.10.0", | ||
"description": "EC cryptography", | ||
@@ -30,5 +30,5 @@ "main": "lib/elliptic.js", | ||
"dependencies": { | ||
"bn.js": "^0.3.0", | ||
"bn.js": "^0.4.0", | ||
"hash.js": "^0.2.0" | ||
} | ||
} |
var assert = require('assert'); | ||
var bn = require('bn.js'); | ||
var elliptic = require('../'); | ||
@@ -49,4 +50,4 @@ | ||
assert(p.toJ().dbl().toP().validate()); | ||
assert(p.mul('79be667e f9dcbbac 55a06295 ce870b07').validate()); | ||
assert(p.mul(new bn('79be667e f9dcbbac 55a06295 ce870b07', 16)).validate()); | ||
}); | ||
}); |
@@ -11,3 +11,5 @@ var assert = require('assert'); | ||
var ecdsa = new elliptic.ecdsa(curve); | ||
var keys = ecdsa.genKeyPair(); | ||
var keys = ecdsa.genKeyPair({ | ||
entropy: [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 ] | ||
}); | ||
var msg = 'deadbeef'; | ||
@@ -20,2 +22,3 @@ | ||
assert(keys.getPrivate('hex').length > 0); | ||
assert(keys.validate().result); | ||
@@ -22,0 +25,0 @@ // Sign and verify |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
101138
2514
+ Addedbn.js@0.4.4(transitive)
- Removedbn.js@0.3.1(transitive)
Updatedbn.js@^0.4.0