From aeaf4a338e489eb15db8184e6013417c086deb90 Mon Sep 17 00:00:00 2001 From: Daniel Cousens Date: Wed, 20 May 2015 22:49:50 +1000 Subject: [PATCH 1/7] evp: simplify overall logic --- EVP_BytesToKey.js | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/EVP_BytesToKey.js b/EVP_BytesToKey.js index fc298d9..158facd 100644 --- a/EVP_BytesToKey.js +++ b/EVP_BytesToKey.js @@ -1,39 +1,43 @@ var createHash = require('create-hash'); + module.exports = function evp(password, salt, keyLen) { keyLen = keyLen/8; + var ki = 0; var ii = 0; var key = new Buffer(keyLen); var addmd = 0; var md, md_buf; var i; - while (true) { + + while (keyLen > 0) { md = createHash('md5'); - if(addmd++ > 0) { + + if (addmd > 0) { md.update(md_buf); } + + addmd++ + md.update(password); md.update(salt); md_buf = md.digest(); + i = 0; - if(keyLen > 0) { - while(true) { - if(keyLen === 0) { - break; - } - if(i === md_buf.length) { - break; - } - key[ki++] = md_buf[i++]; - keyLen--; - } - } - if(keyLen === 0) { - break; + + while (keyLen > 0) { + if (i === md_buf.length) { + break; + } + + key[ki++] = md_buf[i++]; + keyLen--; } } - for(i=0;i Date: Wed, 20 May 2015 22:51:53 +1000 Subject: [PATCH 2/7] evp: remove unused ii, avoid inline expressions --- EVP_BytesToKey.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/EVP_BytesToKey.js b/EVP_BytesToKey.js index 158facd..bb4e2fe 100644 --- a/EVP_BytesToKey.js +++ b/EVP_BytesToKey.js @@ -1,10 +1,9 @@ var createHash = require('create-hash'); module.exports = function evp(password, salt, keyLen) { - keyLen = keyLen/8; + keyLen = keyLen / 8; var ki = 0; - var ii = 0; var key = new Buffer(keyLen); var addmd = 0; var md, md_buf; @@ -30,7 +29,10 @@ module.exports = function evp(password, salt, keyLen) { break; } - key[ki++] = md_buf[i++]; + key[ki] = md_buf[i]; + + ki++; + i++; keyLen--; } } From be4e43d8ca8a766ef77caf724e7204b3e299d601 Mon Sep 17 00:00:00 2001 From: Daniel Cousens Date: Wed, 20 May 2015 22:53:11 +1000 Subject: [PATCH 3/7] evp: standard-ish formatting --- EVP_BytesToKey.js | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/EVP_BytesToKey.js b/EVP_BytesToKey.js index bb4e2fe..6286a21 100644 --- a/EVP_BytesToKey.js +++ b/EVP_BytesToKey.js @@ -1,45 +1,45 @@ var createHash = require('create-hash'); -module.exports = function evp(password, salt, keyLen) { - keyLen = keyLen / 8; +module.exports = function evp (password, salt, keyLen) { + keyLen = keyLen / 8 - var ki = 0; - var key = new Buffer(keyLen); - var addmd = 0; - var md, md_buf; - var i; + var ki = 0 + var key = new Buffer(keyLen) + var addmd = 0 + var md, md_buf, i while (keyLen > 0) { - md = createHash('md5'); + md = createHash('md5') if (addmd > 0) { - md.update(md_buf); + md.update(md_buf) } addmd++ - md.update(password); - md.update(salt); - md_buf = md.digest(); + md.update(password) + md.update(salt) + md_buf = md.digest() - i = 0; + i = 0 while (keyLen > 0) { if (i === md_buf.length) { - break; + break } - key[ki] = md_buf[i]; + key[ki] = md_buf[i] - ki++; - i++; - keyLen--; + ki++ + i++ + keyLen-- } } + // zero the md_buf for (i = 0; i < md_buf.length; i++) { - md_buf[i] = 0; + md_buf[i] = 0 } - return key; -}; + return key +} From ed059dd60802651722a3e7f7470bbc323b255c99 Mon Sep 17 00:00:00 2001 From: Daniel Cousens Date: Wed, 20 May 2015 23:31:54 +1000 Subject: [PATCH 4/7] evp: simplify md_buf logic --- EVP_BytesToKey.js | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/EVP_BytesToKey.js b/EVP_BytesToKey.js index 6286a21..be6257a 100644 --- a/EVP_BytesToKey.js +++ b/EVP_BytesToKey.js @@ -5,23 +5,20 @@ module.exports = function evp (password, salt, keyLen) { var ki = 0 var key = new Buffer(keyLen) - var addmd = 0 - var md, md_buf, i + var md_buf while (keyLen > 0) { - md = createHash('md5') + var md = createHash('md5') - if (addmd > 0) { + if (md_buf) { md.update(md_buf) } - addmd++ - md.update(password) md.update(salt) md_buf = md.digest() - i = 0 + var i = 0 while (keyLen > 0) { if (i === md_buf.length) { @@ -37,9 +34,7 @@ module.exports = function evp (password, salt, keyLen) { } // zero the md_buf - for (i = 0; i < md_buf.length; i++) { - md_buf[i] = 0 - } + md_buf.fill(0) return key } From 080e62bdb1d3dde124ff736a7767cfaa6e4d71db Mon Sep 17 00:00:00 2001 From: Daniel Cousens Date: Wed, 20 May 2015 23:37:39 +1000 Subject: [PATCH 5/7] evp: improve variable names --- EVP_BytesToKey.js | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/EVP_BytesToKey.js b/EVP_BytesToKey.js index be6257a..3b05019 100644 --- a/EVP_BytesToKey.js +++ b/EVP_BytesToKey.js @@ -3,38 +3,33 @@ var createHash = require('create-hash'); module.exports = function evp (password, salt, keyLen) { keyLen = keyLen / 8 - var ki = 0 + var offset = 0 var key = new Buffer(keyLen) - var md_buf + var buffer while (keyLen > 0) { - var md = createHash('md5') + var hash = createHash('md5') - if (md_buf) { - md.update(md_buf) + if (buffer) { + hash.update(buffer) } - md.update(password) - md.update(salt) - md_buf = md.digest() + hash.update(password) + hash.update(salt) + buffer = hash.digest() - var i = 0 - - while (keyLen > 0) { - if (i === md_buf.length) { - break - } + for (var i = 0; i < buffer.length; ++i) { + if (keyLen === 0) break; - key[ki] = md_buf[i] + key[offset] = buffer[i] - ki++ - i++ keyLen-- + offset++ } } - // zero the md_buf - md_buf.fill(0) + // zero the temporary buffer + buffer.fill(0) return key } From 403330fb5768c3572b2d3f45a4f003cadac541bf Mon Sep 17 00:00:00 2001 From: Daniel Cousens Date: Wed, 20 May 2015 23:40:50 +1000 Subject: [PATCH 6/7] evp: remove semicolon --- EVP_BytesToKey.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EVP_BytesToKey.js b/EVP_BytesToKey.js index 3b05019..8126bc0 100644 --- a/EVP_BytesToKey.js +++ b/EVP_BytesToKey.js @@ -19,7 +19,7 @@ module.exports = function evp (password, salt, keyLen) { buffer = hash.digest() for (var i = 0; i < buffer.length; ++i) { - if (keyLen === 0) break; + if (keyLen === 0) break key[offset] = buffer[i] From 7e1b6e5fdb4781497262aa18939b31b2dbffbadd Mon Sep 17 00:00:00 2001 From: Daniel Cousens Date: Wed, 20 May 2015 23:43:02 +1000 Subject: [PATCH 7/7] evp: remove another semicolon --- EVP_BytesToKey.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EVP_BytesToKey.js b/EVP_BytesToKey.js index 8126bc0..c8f87f4 100644 --- a/EVP_BytesToKey.js +++ b/EVP_BytesToKey.js @@ -1,4 +1,4 @@ -var createHash = require('create-hash'); +var createHash = require('create-hash') module.exports = function evp (password, salt, keyLen) { keyLen = keyLen / 8