summaryrefslogtreecommitdiff
path: root/bot/node_modules/crypto-js/mode-ctr.js
diff options
context:
space:
mode:
Diffstat (limited to 'bot/node_modules/crypto-js/mode-ctr.js')
-rw-r--r--bot/node_modules/crypto-js/mode-ctr.js58
1 files changed, 58 insertions, 0 deletions
diff --git a/bot/node_modules/crypto-js/mode-ctr.js b/bot/node_modules/crypto-js/mode-ctr.js
new file mode 100644
index 0000000..c3d470a
--- /dev/null
+++ b/bot/node_modules/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