corrade-nucleus-nucleons
/base/000_base/bower_components/cryptojslib/components/mode-ctr.js |
@@ -0,0 +1,44 @@ |
/* |
CryptoJS v3.1.2 |
code.google.com/p/crypto-js |
(c) 2009-2013 by Jeff Mott. All rights reserved. |
code.google.com/p/crypto-js/wiki/License |
*/ |
/** |
* Counter block mode. |
*/ |
CryptoJS.mode.CTR = (function () { |
var CTR = CryptoJS.lib.BlockCipherMode.extend(); |
|
var Encryptor = CTR.Encryptor = CTR.extend({ |
processBlock: function (words, offset) { |
// Shortcuts |
var cipher = this._cipher |
var blockSize = cipher.blockSize; |
var iv = this._iv; |
var counter = this._counter; |
|
// Generate keystream |
if (iv) { |
counter = this._counter = iv.slice(0); |
|
// Remove IV for subsequent blocks |
this._iv = undefined; |
} |
var keystream = counter.slice(0); |
cipher.encryptBlock(keystream, 0); |
|
// Increment counter |
counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0 |
|
// Encrypt |
for (var i = 0; i < blockSize; i++) { |
words[offset + i] ^= keystream[i]; |
} |
} |
}); |
|
CTR.Decryptor = Encryptor; |
|
return CTR; |
}()); |