diff options
| author | Pliable Pixels <pliablepixels@gmail.com> | 2016-08-05 14:05:24 -0400 |
|---|---|---|
| committer | Pliable Pixels <pliablepixels@gmail.com> | 2016-08-05 14:05:24 -0400 |
| commit | d743aa39f3ddaf5e3f1d5f40e2a3ec9eb90cfc4d (patch) | |
| tree | 0744e3c746d356e5e791213556a4855231d4c626 /www/lib/crypto-js/mode-ctr.js | |
| parent | bcee540a8de31a4c9ce12923d8759c21ef2424f2 (diff) | |
#293 - logs now won't have password stored, and userProfile is cryptoJS ciphered
Former-commit-id: 0db06364a3532cbbb31bd5fa33a488b232f725a5
Diffstat (limited to 'www/lib/crypto-js/mode-ctr.js')
| -rw-r--r-- | www/lib/crypto-js/mode-ctr.js | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/www/lib/crypto-js/mode-ctr.js b/www/lib/crypto-js/mode-ctr.js new file mode 100644 index 00000000..c3d470a6 --- /dev/null +++ b/www/lib/crypto-js/mode-ctr.js @@ -0,0 +1,58 @@ +;(function (root, factory, undef) { + if (typeof exports === "object") { + // CommonJS + module.exports = exports = factory(require("./core"), require("./cipher-core")); + } + else if (typeof define === "function" && define.amd) { + // AMD + define(["./core", "./cipher-core"], factory); + } + else { + // Global (browser) + factory(root.CryptoJS); + } +}(this, function (CryptoJS) { + + /** + * 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; + }()); + + + return CryptoJS.mode.CTR; + +}));
\ No newline at end of file |
