[Pkg-javascript-commits] [node-diffie-hellman] 62/88: lazily check for errors in primes;
Bastien Roucariès
rouca at moszumanska.debian.org
Thu May 4 10:19:17 UTC 2017
This is an automated email from the git hooks/post-receive script.
rouca pushed a commit to branch master
in repository node-diffie-hellman.
commit 6ee0d657b760019db08404f5316c6c711b9dea6d
Author: Calvin Metcalf <calvin.metcalf at gmail.com>
Date: Mon Oct 26 17:48:17 2015 -0400
lazily check for errors in primes;
---
lib/dh.js | 37 +++++++++++++++++--------------------
1 file changed, 17 insertions(+), 20 deletions(-)
diff --git a/lib/dh.js b/lib/dh.js
index ad7807b..b726274 100644
--- a/lib/dh.js
+++ b/lib/dh.js
@@ -36,14 +36,14 @@ function checkPrime(prime, generator) {
return primeCache[hex];
}
var error = 0;
-
+
if (prime.isEven() ||
!primes.simpleSieve ||
!primes.fermatTest(prime) ||
!millerRabin.test(prime)) {
//not a prime so +1
error += 1;
-
+
if (gen === '02' || gen === '05') {
// we'd be able to check the generator
// it would fail so +8
@@ -73,26 +73,15 @@ function checkPrime(prime, generator) {
if (rem.cmp(THREE) && rem.cmp(SEVEN)) {
// prime mod 10 needs to equal 3 or 7
error += 8;
- }
+ }
break;
- default:
+ default:
error += 4;
}
primeCache[hex] = error;
return error;
}
-function defineError (self, error) {
- try {
- Object.defineProperty(self, 'verifyError', {
- enumerable: true,
- value: error,
- writable: false
- });
- } catch(e) {
- self.verifyError = error;
- }
-}
function DH(prime, generator, malleable) {
this.setGenerator(generator);
this.__prime = new BN(prime);
@@ -100,16 +89,23 @@ function DH(prime, generator, malleable) {
this._primeLen = prime.length;
this._pub = void 0;
this._priv = void 0;
-
+ this._primeCode = void 0;
if (malleable) {
this.setPublicKey = setPublicKey;
this.setPrivateKey = setPrivateKey;
- defineError(this, checkPrime(this.__prime, generator));
} else {
- defineError(this, 8);
+ this._primeCode = 8;
}
}
-
+Object.defineProperty(DH.prototype, 'verifyError', {
+ enumerable: true,
+ get: function () {
+ if (typeof this._primeCode !== 'number') {
+ this._primeCode = checkPrime(this.__prime, this.__gen);
+ }
+ return this._primeCode;
+ }
+});
DH.prototype.generateKeys = function () {
if (!this._priv) {
this._priv = new BN(randomBytes(this._primeLen));
@@ -153,6 +149,7 @@ DH.prototype.setGenerator = function (gen, enc) {
if (!Buffer.isBuffer(gen)) {
gen = new Buffer(gen, enc);
}
+ this.__gen = gen;
this._gen = new BN(gen);
return this;
};
@@ -164,4 +161,4 @@ function formatReturnValue(bn, enc) {
} else {
return buf.toString(enc);
}
-}
\ No newline at end of file
+}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/node-diffie-hellman.git
More information about the Pkg-javascript-commits
mailing list