diff options
Diffstat (limited to 'node_modules/browserify-des')
-rw-r--r-- | node_modules/browserify-des/index.js | 43 | ||||
-rw-r--r-- | node_modules/browserify-des/modes.js | 24 | ||||
-rw-r--r-- | node_modules/browserify-des/package.json | 29 | ||||
-rw-r--r-- | node_modules/browserify-des/readme.md | 4 | ||||
-rw-r--r-- | node_modules/browserify-des/test.js | 48 |
5 files changed, 148 insertions, 0 deletions
diff --git a/node_modules/browserify-des/index.js b/node_modules/browserify-des/index.js new file mode 100644 index 000000000..2889bb77c --- /dev/null +++ b/node_modules/browserify-des/index.js @@ -0,0 +1,43 @@ +var CipherBase = require('cipher-base') +var des = require('des.js') +var inherits = require('inherits') + +var modes = { + 'des-ede3-cbc': des.CBC.instantiate(des.EDE), + 'des-ede3': des.EDE, + 'des-ede-cbc': des.CBC.instantiate(des.EDE), + 'des-ede': des.EDE, + 'des-cbc': des.CBC.instantiate(des.DES), + 'des-ecb': des.DES +} +modes.des = modes['des-cbc'] +modes.des3 = modes['des-ede3-cbc'] +module.exports = DES +inherits(DES, CipherBase) +function DES (opts) { + CipherBase.call(this) + var modeName = opts.mode.toLowerCase() + var mode = modes[modeName] + var type + if (opts.decrypt) { + type = 'decrypt' + } else { + type = 'encrypt' + } + var key = opts.key + if (modeName === 'des-ede' || modeName === 'des-ede-cbc') { + key = Buffer.concat([key, key.slice(0, 8)]) + } + var iv = opts.iv + this._des = mode.create({ + key: key, + iv: iv, + type: type + }) +} +DES.prototype._update = function (data) { + return new Buffer(this._des.update(data)) +} +DES.prototype._final = function () { + return new Buffer(this._des.final()) +} diff --git a/node_modules/browserify-des/modes.js b/node_modules/browserify-des/modes.js new file mode 100644 index 000000000..72f308de6 --- /dev/null +++ b/node_modules/browserify-des/modes.js @@ -0,0 +1,24 @@ +exports['des-ecb'] = { + key: 8, + iv: 0 +} +exports['des-cbc'] = exports.des = { + key: 8, + iv: 8 +} +exports['des-ede3-cbc'] = exports.des3 = { + key: 24, + iv: 8 +} +exports['des-ede3'] = { + key: 24, + iv: 0 +} +exports['des-ede-cbc'] = { + key: 16, + iv: 8 +} +exports['des-ede'] = { + key: 16, + iv: 0 +} diff --git a/node_modules/browserify-des/package.json b/node_modules/browserify-des/package.json new file mode 100644 index 000000000..fdc9a8f63 --- /dev/null +++ b/node_modules/browserify-des/package.json @@ -0,0 +1,29 @@ +{ + "name": "browserify-des", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "standard && node test.js | tspec" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/crypto-browserify/browserify-des.git" + }, + "author": "Calvin Metcalf <calvin.metcalf@gmail.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/crypto-browserify/browserify-des/issues" + }, + "homepage": "https://github.com/crypto-browserify/browserify-des#readme", + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1" + }, + "devDependencies": { + "standard": "^5.3.1", + "tap-spec": "^4.1.0", + "tape": "^4.2.0" + } +} diff --git a/node_modules/browserify-des/readme.md b/node_modules/browserify-des/readme.md new file mode 100644 index 000000000..c29c1b212 --- /dev/null +++ b/node_modules/browserify-des/readme.md @@ -0,0 +1,4 @@ +browserify-des +=== + +DES for browserify diff --git a/node_modules/browserify-des/test.js b/node_modules/browserify-des/test.js new file mode 100644 index 000000000..6324f43b5 --- /dev/null +++ b/node_modules/browserify-des/test.js @@ -0,0 +1,48 @@ +var test = require('tape') +var DES = require('./') +var modes = require('./modes') +var crypto = require('crypto') + +Object.keys(modes).forEach(function (mode) { + test(mode, function (t) { + var i = 0 + while (++i < 10) { + runOnce(i) + } + function runOnce (i) { + t.test('run: ' + i, function (t) { + t.plan(2) + var key = crypto.randomBytes(modes[mode].key) + var iv = crypto.randomBytes(modes[mode].iv) + var text = crypto.randomBytes(200) + var ourEncrypt + try { + ourEncrypt = new DES({ + mode: mode, + key: key, + iv: iv + }) + } catch (e) { + t.notOk(e, e.stack) + } + var nodeEncrypt + try { + nodeEncrypt = crypto.createCipheriv(mode, key, iv) + } catch (e) { + t.notOk(e, e.stack) + } + var ourCipherText = Buffer.concat([ourEncrypt.update(text), ourEncrypt.final()]) + var nodeCipherText = Buffer.concat([nodeEncrypt.update(text), nodeEncrypt.final()]) + t.equals(nodeCipherText.toString('hex'), ourCipherText.toString('hex')) + var ourDecrypt = new DES({ + mode: mode, + key: key, + iv: iv, + decrypt: true + }) + var plainText = Buffer.concat([ourDecrypt.update(ourCipherText), ourDecrypt.final()]) + t.equals(text.toString('hex'), plainText.toString('hex')) + }) + } + }) +}) |