From de98e0b232509d5f40c135d540a70e415272ff85 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 3 May 2017 15:35:00 +0200 Subject: node_modules --- node_modules/evp_bytestokey/index.js | 68 ++++++++++++++++++++++++++++++++ node_modules/evp_bytestokey/package.json | 31 +++++++++++++++ node_modules/evp_bytestokey/readme.md | 13 ++++++ node_modules/evp_bytestokey/test.js | 19 +++++++++ 4 files changed, 131 insertions(+) create mode 100644 node_modules/evp_bytestokey/index.js create mode 100644 node_modules/evp_bytestokey/package.json create mode 100644 node_modules/evp_bytestokey/readme.md create mode 100644 node_modules/evp_bytestokey/test.js (limited to 'node_modules/evp_bytestokey') diff --git a/node_modules/evp_bytestokey/index.js b/node_modules/evp_bytestokey/index.js new file mode 100644 index 000000000..25fbc9c24 --- /dev/null +++ b/node_modules/evp_bytestokey/index.js @@ -0,0 +1,68 @@ +var md5 = require('create-hash/md5') +module.exports = EVP_BytesToKey +function EVP_BytesToKey (password, salt, keyLen, ivLen) { + if (!Buffer.isBuffer(password)) { + password = new Buffer(password, 'binary') + } + if (salt && !Buffer.isBuffer(salt)) { + salt = new Buffer(salt, 'binary') + } + keyLen = keyLen / 8 + ivLen = ivLen || 0 + var ki = 0 + var ii = 0 + var key = new Buffer(keyLen) + var iv = new Buffer(ivLen) + var addmd = 0 + var md_buf + var i + var bufs = [] + while (true) { + if (addmd++ > 0) { + bufs.push(md_buf) + } + bufs.push(password) + if (salt) { + bufs.push(salt) + } + md_buf = md5(Buffer.concat(bufs)) + bufs = [] + i = 0 + if (keyLen > 0) { + while (true) { + if (keyLen === 0) { + break + } + if (i === md_buf.length) { + break + } + key[ki++] = md_buf[i] + keyLen-- + i++ + } + } + if (ivLen > 0 && i !== md_buf.length) { + while (true) { + if (ivLen === 0) { + break + } + if (i === md_buf.length) { + break + } + iv[ii++] = md_buf[i] + ivLen-- + i++ + } + } + if (keyLen === 0 && ivLen === 0) { + break + } + } + for (i = 0; i < md_buf.length; i++) { + md_buf[i] = 0 + } + return { + key: key, + iv: iv + } +} diff --git a/node_modules/evp_bytestokey/package.json b/node_modules/evp_bytestokey/package.json new file mode 100644 index 000000000..e9e96b8ac --- /dev/null +++ b/node_modules/evp_bytestokey/package.json @@ -0,0 +1,31 @@ +{ + "name": "evp_bytestokey", + "version": "1.0.0", + "description": "he super secure key derivation algorithm from openssl", + "main": "index.js", + "scripts": { + "test": "standard && node test.js | tspec" + }, + "repository": { + "type": "git", + "url": "https://github.com/crypto-browserify/EVP_BytesToKey.git" + }, + "keywords": [ + "crypto", + "openssl" + ], + "author": "Calvin Metcalf ", + "license": "MIT", + "bugs": { + "url": "https://github.com/crypto-browserify/EVP_BytesToKey/issues" + }, + "homepage": "https://github.com/crypto-browserify/EVP_BytesToKey", + "dependencies": { + "create-hash": "^1.1.1" + }, + "devDependencies": { + "standard": "^5.3.1", + "tap-spec": "^4.1.0", + "tape": "^4.2.0" + } +} diff --git a/node_modules/evp_bytestokey/readme.md b/node_modules/evp_bytestokey/readme.md new file mode 100644 index 000000000..86234dbf3 --- /dev/null +++ b/node_modules/evp_bytestokey/readme.md @@ -0,0 +1,13 @@ +EVP_BytesToKey +=== + +The super secure [key derivation algorithm from openssl](https://wiki.openssl.org/index.php/Manual:EVP_BytesToKey(3)) (spoiler alert not actually secure, only every use it for compatibility reasons). + +Api: +=== + +```js +var result = EVP_BytesToKey('password', 'salt', keyLen, ivLen); +Buffer.isBuffer(result.password); // true +Buffer.isBuffer(result.iv); // true +``` diff --git a/node_modules/evp_bytestokey/test.js b/node_modules/evp_bytestokey/test.js new file mode 100644 index 000000000..a638fa03f --- /dev/null +++ b/node_modules/evp_bytestokey/test.js @@ -0,0 +1,19 @@ +var test = require('tape') +var evp = require('./') +var crypto = require('crypto') + +function runTest (password) { + test('password: ' + password, function (t) { + t.plan(1) + var keys = evp(password, false, 256, 16) + var nodeCipher = crypto.createCipher('aes-256-ctr', password) + var ourCipher = crypto.createCipheriv('aes-256-ctr', keys.key, keys.iv) + var nodeOut = nodeCipher.update('foooooo') + var ourOut = ourCipher.update('foooooo') + t.equals(nodeOut.toString('hex'), ourOut.toString('hex')) + }) +} +runTest('password') +runTest('ふっかつ あきる すぶり はやい つける まゆげ たんさん みんぞく ねほりはほり せまい たいまつばな ひはん') +runTest('Z͑ͫ̓ͪ̂ͫ̽͏̴̙̤̞͉͚̯̞̠͍A̴̵̜̰͔ͫ͗͢L̠ͨͧͩ͘G̴̻͈͍͔̹̑͗̎̅͛́Ǫ̵̹̻̝̳͂̌̌͘!͖̬̰̙̗̿̋ͥͥ̂ͣ̐́́͜͞') +runTest('💩') -- cgit v1.2.3