diff options
author | Florian Dold <florian.dold@gmail.com> | 2017-05-03 15:35:00 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2017-05-03 15:35:00 +0200 |
commit | de98e0b232509d5f40c135d540a70e415272ff85 (patch) | |
tree | a79222a5b58484ab3b80d18efcaaa7ccc4769b33 /node_modules/browserify-cipher/test.js | |
parent | e0c9d480a73fa629c1e4a47d3e721f1d2d345406 (diff) |
node_modules
Diffstat (limited to 'node_modules/browserify-cipher/test.js')
-rw-r--r-- | node_modules/browserify-cipher/test.js | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/node_modules/browserify-cipher/test.js b/node_modules/browserify-cipher/test.js new file mode 100644 index 000000000..d4beaa0f3 --- /dev/null +++ b/node_modules/browserify-cipher/test.js @@ -0,0 +1,55 @@ +var test = require('tape') +var crypto = require('crypto') +var desModes = require('browserify-des/modes') +var aesModes = require('browserify-aes/modes') +var ourCrypto = require('./browser') + +function runIvTest (mode, keyLen, ivLen) { + test('mode: ' + mode, function (t) { + var i = 0 + while (++i < 10) { + run(i) + } + function run (i) { + t.test('run: ' + i, function (t) { + t.plan(2) + var key = crypto.randomBytes(keyLen) + var iv = crypto.randomBytes(ivLen) + var text = crypto.randomBytes(200) + var ourEncrypt + try { + ourEncrypt = ourCrypto.createCipheriv(mode, key, 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 authTag + if (mode.slice(-3) === 'gcm') { + authTag = ourEncrypt.getAuthTag() + } + var nodeCipherText = Buffer.concat([nodeEncrypt.update(text), nodeEncrypt.final()]) + t.equals(nodeCipherText.toString('hex'), ourCipherText.toString('hex')) + var ourDecrypt = ourCrypto.createDecipheriv(mode, key, iv) + if (mode.slice(-3) === 'gcm') { + ourDecrypt.setAuthTag(authTag) + } + var plainText = Buffer.concat([ourDecrypt.update(ourCipherText), ourDecrypt.final()]) + t.equals(text.toString('hex'), plainText.toString('hex')) + }) + } + }) +} +Object.keys(aesModes).forEach(function (modeName) { + var mode = aesModes[modeName] + runIvTest(modeName, mode.key / 8, mode.iv) +}) +Object.keys(desModes).forEach(function (modeName) { + var mode = desModes[modeName] + runIvTest(modeName, mode.key, mode.iv) +}) |