iobroker.admin 6.2.2 → 6.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/README.md +3 -3
  2. package/io-package.json +13 -13
  3. package/package.json +1 -1
  4. package/www/asset-manifest.json +7 -7
  5. package/www/index.html +1 -1
  6. package/www/js/adapter-settings.js +55 -57
  7. package/www/lib/js/crypto-js/aes.js +234 -0
  8. package/www/lib/js/crypto-js/bower.json +39 -0
  9. package/www/lib/js/crypto-js/cipher-core.js +890 -0
  10. package/www/lib/js/crypto-js/core.js +807 -0
  11. package/www/lib/js/crypto-js/crypto-js.js +6191 -0
  12. package/www/lib/js/crypto-js/enc-base64.js +136 -0
  13. package/www/lib/js/crypto-js/enc-base64url.js +140 -0
  14. package/www/lib/js/crypto-js/enc-hex.js +18 -0
  15. package/www/lib/js/crypto-js/enc-latin1.js +18 -0
  16. package/www/lib/js/crypto-js/enc-utf16.js +149 -0
  17. package/www/lib/js/crypto-js/enc-utf8.js +18 -0
  18. package/www/lib/js/crypto-js/evpkdf.js +134 -0
  19. package/www/lib/js/crypto-js/format-hex.js +66 -0
  20. package/www/lib/js/crypto-js/format-openssl.js +18 -0
  21. package/www/lib/js/crypto-js/hmac-md5.js +18 -0
  22. package/www/lib/js/crypto-js/hmac-ripemd160.js +18 -0
  23. package/www/lib/js/crypto-js/hmac-sha1.js +18 -0
  24. package/www/lib/js/crypto-js/hmac-sha224.js +18 -0
  25. package/www/lib/js/crypto-js/hmac-sha256.js +18 -0
  26. package/www/lib/js/crypto-js/hmac-sha3.js +18 -0
  27. package/www/lib/js/crypto-js/hmac-sha384.js +18 -0
  28. package/www/lib/js/crypto-js/hmac-sha512.js +18 -0
  29. package/www/lib/js/crypto-js/hmac.js +143 -0
  30. package/www/lib/js/crypto-js/index.js +18 -0
  31. package/www/lib/js/crypto-js/lib-typedarrays.js +76 -0
  32. package/www/lib/js/crypto-js/md5.js +268 -0
  33. package/www/lib/js/crypto-js/mode-cfb.js +80 -0
  34. package/www/lib/js/crypto-js/mode-ctr-gladman.js +116 -0
  35. package/www/lib/js/crypto-js/mode-ctr.js +58 -0
  36. package/www/lib/js/crypto-js/mode-ecb.js +40 -0
  37. package/www/lib/js/crypto-js/mode-ofb.js +54 -0
  38. package/www/lib/js/crypto-js/package.json +70 -0
  39. package/www/lib/js/crypto-js/pad-ansix923.js +49 -0
  40. package/www/lib/js/crypto-js/pad-iso10126.js +44 -0
  41. package/www/lib/js/crypto-js/pad-iso97971.js +40 -0
  42. package/www/lib/js/crypto-js/pad-nopadding.js +30 -0
  43. package/www/lib/js/crypto-js/pad-pkcs7.js +18 -0
  44. package/www/lib/js/crypto-js/pad-zeropadding.js +47 -0
  45. package/www/lib/js/crypto-js/pbkdf2.js +145 -0
  46. package/www/lib/js/crypto-js/rabbit-legacy.js +190 -0
  47. package/www/lib/js/crypto-js/rabbit.js +192 -0
  48. package/www/lib/js/crypto-js/rc4.js +139 -0
  49. package/www/lib/js/crypto-js/ripemd160.js +267 -0
  50. package/www/lib/js/crypto-js/sha1.js +150 -0
  51. package/www/lib/js/crypto-js/sha224.js +80 -0
  52. package/www/lib/js/crypto-js/sha256.js +199 -0
  53. package/www/lib/js/crypto-js/sha3.js +326 -0
  54. package/www/lib/js/crypto-js/sha384.js +83 -0
  55. package/www/lib/js/crypto-js/sha512.js +326 -0
  56. package/www/lib/js/crypto-js/tripledes.js +779 -0
  57. package/www/lib/js/crypto-js/x64-core.js +304 -0
  58. package/www/static/js/{5710.66d0a0cb.chunk.js → 5710.44014f30.chunk.js} +2 -2
  59. package/www/static/js/{5710.66d0a0cb.chunk.js.map → 5710.44014f30.chunk.js.map} +1 -1
  60. package/www/static/js/8596.eecce458.chunk.js +3 -0
  61. package/www/static/js/8596.eecce458.chunk.js.map +1 -0
  62. package/www/static/js/{main.dec36354.js → main.d3df889c.js} +2 -2
  63. package/www/static/js/{main.dec36354.js.map → main.d3df889c.js.map} +1 -1
  64. package/www/static/js/8596.ff72c56e.chunk.js +0 -3
  65. package/www/static/js/8596.ff72c56e.chunk.js.map +0 -1
@@ -0,0 +1,145 @@
1
+ ;(function (root, factory, undef) {
2
+ if (typeof exports === "object") {
3
+ // CommonJS
4
+ module.exports = exports = factory(require("./core"), require("./sha1"), require("./hmac"));
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ // AMD
8
+ define(["./core", "./sha1", "./hmac"], factory);
9
+ }
10
+ else {
11
+ // Global (browser)
12
+ factory(root.CryptoJS);
13
+ }
14
+ }(this, function (CryptoJS) {
15
+
16
+ (function () {
17
+ // Shortcuts
18
+ var C = CryptoJS;
19
+ var C_lib = C.lib;
20
+ var Base = C_lib.Base;
21
+ var WordArray = C_lib.WordArray;
22
+ var C_algo = C.algo;
23
+ var SHA1 = C_algo.SHA1;
24
+ var HMAC = C_algo.HMAC;
25
+
26
+ /**
27
+ * Password-Based Key Derivation Function 2 algorithm.
28
+ */
29
+ var PBKDF2 = C_algo.PBKDF2 = Base.extend({
30
+ /**
31
+ * Configuration options.
32
+ *
33
+ * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)
34
+ * @property {Hasher} hasher The hasher to use. Default: SHA1
35
+ * @property {number} iterations The number of iterations to perform. Default: 1
36
+ */
37
+ cfg: Base.extend({
38
+ keySize: 128/32,
39
+ hasher: SHA1,
40
+ iterations: 1
41
+ }),
42
+
43
+ /**
44
+ * Initializes a newly created key derivation function.
45
+ *
46
+ * @param {Object} cfg (Optional) The configuration options to use for the derivation.
47
+ *
48
+ * @example
49
+ *
50
+ * var kdf = CryptoJS.algo.PBKDF2.create();
51
+ * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });
52
+ * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });
53
+ */
54
+ init: function (cfg) {
55
+ this.cfg = this.cfg.extend(cfg);
56
+ },
57
+
58
+ /**
59
+ * Computes the Password-Based Key Derivation Function 2.
60
+ *
61
+ * @param {WordArray|string} password The password.
62
+ * @param {WordArray|string} salt A salt.
63
+ *
64
+ * @return {WordArray} The derived key.
65
+ *
66
+ * @example
67
+ *
68
+ * var key = kdf.compute(password, salt);
69
+ */
70
+ compute: function (password, salt) {
71
+ // Shortcut
72
+ var cfg = this.cfg;
73
+
74
+ // Init HMAC
75
+ var hmac = HMAC.create(cfg.hasher, password);
76
+
77
+ // Initial values
78
+ var derivedKey = WordArray.create();
79
+ var blockIndex = WordArray.create([0x00000001]);
80
+
81
+ // Shortcuts
82
+ var derivedKeyWords = derivedKey.words;
83
+ var blockIndexWords = blockIndex.words;
84
+ var keySize = cfg.keySize;
85
+ var iterations = cfg.iterations;
86
+
87
+ // Generate key
88
+ while (derivedKeyWords.length < keySize) {
89
+ var block = hmac.update(salt).finalize(blockIndex);
90
+ hmac.reset();
91
+
92
+ // Shortcuts
93
+ var blockWords = block.words;
94
+ var blockWordsLength = blockWords.length;
95
+
96
+ // Iterations
97
+ var intermediate = block;
98
+ for (var i = 1; i < iterations; i++) {
99
+ intermediate = hmac.finalize(intermediate);
100
+ hmac.reset();
101
+
102
+ // Shortcut
103
+ var intermediateWords = intermediate.words;
104
+
105
+ // XOR intermediate with block
106
+ for (var j = 0; j < blockWordsLength; j++) {
107
+ blockWords[j] ^= intermediateWords[j];
108
+ }
109
+ }
110
+
111
+ derivedKey.concat(block);
112
+ blockIndexWords[0]++;
113
+ }
114
+ derivedKey.sigBytes = keySize * 4;
115
+
116
+ return derivedKey;
117
+ }
118
+ });
119
+
120
+ /**
121
+ * Computes the Password-Based Key Derivation Function 2.
122
+ *
123
+ * @param {WordArray|string} password The password.
124
+ * @param {WordArray|string} salt A salt.
125
+ * @param {Object} cfg (Optional) The configuration options to use for this computation.
126
+ *
127
+ * @return {WordArray} The derived key.
128
+ *
129
+ * @static
130
+ *
131
+ * @example
132
+ *
133
+ * var key = CryptoJS.PBKDF2(password, salt);
134
+ * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });
135
+ * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });
136
+ */
137
+ C.PBKDF2 = function (password, salt, cfg) {
138
+ return PBKDF2.create(cfg).compute(password, salt);
139
+ };
140
+ }());
141
+
142
+
143
+ return CryptoJS.PBKDF2;
144
+
145
+ }));
@@ -0,0 +1,190 @@
1
+ ;(function (root, factory, undef) {
2
+ if (typeof exports === "object") {
3
+ // CommonJS
4
+ module.exports = exports = factory(require("./core"), require("./enc-base64"), require("./md5"), require("./evpkdf"), require("./cipher-core"));
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ // AMD
8
+ define(["./core", "./enc-base64", "./md5", "./evpkdf", "./cipher-core"], factory);
9
+ }
10
+ else {
11
+ // Global (browser)
12
+ factory(root.CryptoJS);
13
+ }
14
+ }(this, function (CryptoJS) {
15
+
16
+ (function () {
17
+ // Shortcuts
18
+ var C = CryptoJS;
19
+ var C_lib = C.lib;
20
+ var StreamCipher = C_lib.StreamCipher;
21
+ var C_algo = C.algo;
22
+
23
+ // Reusable objects
24
+ var S = [];
25
+ var C_ = [];
26
+ var G = [];
27
+
28
+ /**
29
+ * Rabbit stream cipher algorithm.
30
+ *
31
+ * This is a legacy version that neglected to convert the key to little-endian.
32
+ * This error doesn't affect the cipher's security,
33
+ * but it does affect its compatibility with other implementations.
34
+ */
35
+ var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({
36
+ _doReset: function () {
37
+ // Shortcuts
38
+ var K = this._key.words;
39
+ var iv = this.cfg.iv;
40
+
41
+ // Generate initial state values
42
+ var X = this._X = [
43
+ K[0], (K[3] << 16) | (K[2] >>> 16),
44
+ K[1], (K[0] << 16) | (K[3] >>> 16),
45
+ K[2], (K[1] << 16) | (K[0] >>> 16),
46
+ K[3], (K[2] << 16) | (K[1] >>> 16)
47
+ ];
48
+
49
+ // Generate initial counter values
50
+ var C = this._C = [
51
+ (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),
52
+ (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),
53
+ (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),
54
+ (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)
55
+ ];
56
+
57
+ // Carry bit
58
+ this._b = 0;
59
+
60
+ // Iterate the system four times
61
+ for (var i = 0; i < 4; i++) {
62
+ nextState.call(this);
63
+ }
64
+
65
+ // Modify the counters
66
+ for (var i = 0; i < 8; i++) {
67
+ C[i] ^= X[(i + 4) & 7];
68
+ }
69
+
70
+ // IV setup
71
+ if (iv) {
72
+ // Shortcuts
73
+ var IV = iv.words;
74
+ var IV_0 = IV[0];
75
+ var IV_1 = IV[1];
76
+
77
+ // Generate four subvectors
78
+ var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);
79
+ var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);
80
+ var i1 = (i0 >>> 16) | (i2 & 0xffff0000);
81
+ var i3 = (i2 << 16) | (i0 & 0x0000ffff);
82
+
83
+ // Modify counter values
84
+ C[0] ^= i0;
85
+ C[1] ^= i1;
86
+ C[2] ^= i2;
87
+ C[3] ^= i3;
88
+ C[4] ^= i0;
89
+ C[5] ^= i1;
90
+ C[6] ^= i2;
91
+ C[7] ^= i3;
92
+
93
+ // Iterate the system four times
94
+ for (var i = 0; i < 4; i++) {
95
+ nextState.call(this);
96
+ }
97
+ }
98
+ },
99
+
100
+ _doProcessBlock: function (M, offset) {
101
+ // Shortcut
102
+ var X = this._X;
103
+
104
+ // Iterate the system
105
+ nextState.call(this);
106
+
107
+ // Generate four keystream words
108
+ S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);
109
+ S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);
110
+ S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);
111
+ S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);
112
+
113
+ for (var i = 0; i < 4; i++) {
114
+ // Swap endian
115
+ S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |
116
+ (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);
117
+
118
+ // Encrypt
119
+ M[offset + i] ^= S[i];
120
+ }
121
+ },
122
+
123
+ blockSize: 128/32,
124
+
125
+ ivSize: 64/32
126
+ });
127
+
128
+ function nextState() {
129
+ // Shortcuts
130
+ var X = this._X;
131
+ var C = this._C;
132
+
133
+ // Save old counter values
134
+ for (var i = 0; i < 8; i++) {
135
+ C_[i] = C[i];
136
+ }
137
+
138
+ // Calculate new counter values
139
+ C[0] = (C[0] + 0x4d34d34d + this._b) | 0;
140
+ C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;
141
+ C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;
142
+ C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;
143
+ C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;
144
+ C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;
145
+ C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;
146
+ C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;
147
+ this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;
148
+
149
+ // Calculate the g-values
150
+ for (var i = 0; i < 8; i++) {
151
+ var gx = X[i] + C[i];
152
+
153
+ // Construct high and low argument for squaring
154
+ var ga = gx & 0xffff;
155
+ var gb = gx >>> 16;
156
+
157
+ // Calculate high and low result of squaring
158
+ var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;
159
+ var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);
160
+
161
+ // High XOR low
162
+ G[i] = gh ^ gl;
163
+ }
164
+
165
+ // Calculate new state values
166
+ X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;
167
+ X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;
168
+ X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;
169
+ X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;
170
+ X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;
171
+ X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;
172
+ X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;
173
+ X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;
174
+ }
175
+
176
+ /**
177
+ * Shortcut functions to the cipher's object interface.
178
+ *
179
+ * @example
180
+ *
181
+ * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);
182
+ * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);
183
+ */
184
+ C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);
185
+ }());
186
+
187
+
188
+ return CryptoJS.RabbitLegacy;
189
+
190
+ }));
@@ -0,0 +1,192 @@
1
+ ;(function (root, factory, undef) {
2
+ if (typeof exports === "object") {
3
+ // CommonJS
4
+ module.exports = exports = factory(require("./core"), require("./enc-base64"), require("./md5"), require("./evpkdf"), require("./cipher-core"));
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ // AMD
8
+ define(["./core", "./enc-base64", "./md5", "./evpkdf", "./cipher-core"], factory);
9
+ }
10
+ else {
11
+ // Global (browser)
12
+ factory(root.CryptoJS);
13
+ }
14
+ }(this, function (CryptoJS) {
15
+
16
+ (function () {
17
+ // Shortcuts
18
+ var C = CryptoJS;
19
+ var C_lib = C.lib;
20
+ var StreamCipher = C_lib.StreamCipher;
21
+ var C_algo = C.algo;
22
+
23
+ // Reusable objects
24
+ var S = [];
25
+ var C_ = [];
26
+ var G = [];
27
+
28
+ /**
29
+ * Rabbit stream cipher algorithm
30
+ */
31
+ var Rabbit = C_algo.Rabbit = StreamCipher.extend({
32
+ _doReset: function () {
33
+ // Shortcuts
34
+ var K = this._key.words;
35
+ var iv = this.cfg.iv;
36
+
37
+ // Swap endian
38
+ for (var i = 0; i < 4; i++) {
39
+ K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |
40
+ (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);
41
+ }
42
+
43
+ // Generate initial state values
44
+ var X = this._X = [
45
+ K[0], (K[3] << 16) | (K[2] >>> 16),
46
+ K[1], (K[0] << 16) | (K[3] >>> 16),
47
+ K[2], (K[1] << 16) | (K[0] >>> 16),
48
+ K[3], (K[2] << 16) | (K[1] >>> 16)
49
+ ];
50
+
51
+ // Generate initial counter values
52
+ var C = this._C = [
53
+ (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),
54
+ (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),
55
+ (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),
56
+ (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)
57
+ ];
58
+
59
+ // Carry bit
60
+ this._b = 0;
61
+
62
+ // Iterate the system four times
63
+ for (var i = 0; i < 4; i++) {
64
+ nextState.call(this);
65
+ }
66
+
67
+ // Modify the counters
68
+ for (var i = 0; i < 8; i++) {
69
+ C[i] ^= X[(i + 4) & 7];
70
+ }
71
+
72
+ // IV setup
73
+ if (iv) {
74
+ // Shortcuts
75
+ var IV = iv.words;
76
+ var IV_0 = IV[0];
77
+ var IV_1 = IV[1];
78
+
79
+ // Generate four subvectors
80
+ var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);
81
+ var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);
82
+ var i1 = (i0 >>> 16) | (i2 & 0xffff0000);
83
+ var i3 = (i2 << 16) | (i0 & 0x0000ffff);
84
+
85
+ // Modify counter values
86
+ C[0] ^= i0;
87
+ C[1] ^= i1;
88
+ C[2] ^= i2;
89
+ C[3] ^= i3;
90
+ C[4] ^= i0;
91
+ C[5] ^= i1;
92
+ C[6] ^= i2;
93
+ C[7] ^= i3;
94
+
95
+ // Iterate the system four times
96
+ for (var i = 0; i < 4; i++) {
97
+ nextState.call(this);
98
+ }
99
+ }
100
+ },
101
+
102
+ _doProcessBlock: function (M, offset) {
103
+ // Shortcut
104
+ var X = this._X;
105
+
106
+ // Iterate the system
107
+ nextState.call(this);
108
+
109
+ // Generate four keystream words
110
+ S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);
111
+ S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);
112
+ S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);
113
+ S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);
114
+
115
+ for (var i = 0; i < 4; i++) {
116
+ // Swap endian
117
+ S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |
118
+ (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);
119
+
120
+ // Encrypt
121
+ M[offset + i] ^= S[i];
122
+ }
123
+ },
124
+
125
+ blockSize: 128/32,
126
+
127
+ ivSize: 64/32
128
+ });
129
+
130
+ function nextState() {
131
+ // Shortcuts
132
+ var X = this._X;
133
+ var C = this._C;
134
+
135
+ // Save old counter values
136
+ for (var i = 0; i < 8; i++) {
137
+ C_[i] = C[i];
138
+ }
139
+
140
+ // Calculate new counter values
141
+ C[0] = (C[0] + 0x4d34d34d + this._b) | 0;
142
+ C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;
143
+ C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;
144
+ C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;
145
+ C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;
146
+ C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;
147
+ C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;
148
+ C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;
149
+ this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;
150
+
151
+ // Calculate the g-values
152
+ for (var i = 0; i < 8; i++) {
153
+ var gx = X[i] + C[i];
154
+
155
+ // Construct high and low argument for squaring
156
+ var ga = gx & 0xffff;
157
+ var gb = gx >>> 16;
158
+
159
+ // Calculate high and low result of squaring
160
+ var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;
161
+ var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);
162
+
163
+ // High XOR low
164
+ G[i] = gh ^ gl;
165
+ }
166
+
167
+ // Calculate new state values
168
+ X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;
169
+ X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;
170
+ X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;
171
+ X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;
172
+ X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;
173
+ X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;
174
+ X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;
175
+ X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;
176
+ }
177
+
178
+ /**
179
+ * Shortcut functions to the cipher's object interface.
180
+ *
181
+ * @example
182
+ *
183
+ * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);
184
+ * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);
185
+ */
186
+ C.Rabbit = StreamCipher._createHelper(Rabbit);
187
+ }());
188
+
189
+
190
+ return CryptoJS.Rabbit;
191
+
192
+ }));
@@ -0,0 +1,139 @@
1
+ ;(function (root, factory, undef) {
2
+ if (typeof exports === "object") {
3
+ // CommonJS
4
+ module.exports = exports = factory(require("./core"), require("./enc-base64"), require("./md5"), require("./evpkdf"), require("./cipher-core"));
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ // AMD
8
+ define(["./core", "./enc-base64", "./md5", "./evpkdf", "./cipher-core"], factory);
9
+ }
10
+ else {
11
+ // Global (browser)
12
+ factory(root.CryptoJS);
13
+ }
14
+ }(this, function (CryptoJS) {
15
+
16
+ (function () {
17
+ // Shortcuts
18
+ var C = CryptoJS;
19
+ var C_lib = C.lib;
20
+ var StreamCipher = C_lib.StreamCipher;
21
+ var C_algo = C.algo;
22
+
23
+ /**
24
+ * RC4 stream cipher algorithm.
25
+ */
26
+ var RC4 = C_algo.RC4 = StreamCipher.extend({
27
+ _doReset: function () {
28
+ // Shortcuts
29
+ var key = this._key;
30
+ var keyWords = key.words;
31
+ var keySigBytes = key.sigBytes;
32
+
33
+ // Init sbox
34
+ var S = this._S = [];
35
+ for (var i = 0; i < 256; i++) {
36
+ S[i] = i;
37
+ }
38
+
39
+ // Key setup
40
+ for (var i = 0, j = 0; i < 256; i++) {
41
+ var keyByteIndex = i % keySigBytes;
42
+ var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;
43
+
44
+ j = (j + S[i] + keyByte) % 256;
45
+
46
+ // Swap
47
+ var t = S[i];
48
+ S[i] = S[j];
49
+ S[j] = t;
50
+ }
51
+
52
+ // Counters
53
+ this._i = this._j = 0;
54
+ },
55
+
56
+ _doProcessBlock: function (M, offset) {
57
+ M[offset] ^= generateKeystreamWord.call(this);
58
+ },
59
+
60
+ keySize: 256/32,
61
+
62
+ ivSize: 0
63
+ });
64
+
65
+ function generateKeystreamWord() {
66
+ // Shortcuts
67
+ var S = this._S;
68
+ var i = this._i;
69
+ var j = this._j;
70
+
71
+ // Generate keystream word
72
+ var keystreamWord = 0;
73
+ for (var n = 0; n < 4; n++) {
74
+ i = (i + 1) % 256;
75
+ j = (j + S[i]) % 256;
76
+
77
+ // Swap
78
+ var t = S[i];
79
+ S[i] = S[j];
80
+ S[j] = t;
81
+
82
+ keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);
83
+ }
84
+
85
+ // Update counters
86
+ this._i = i;
87
+ this._j = j;
88
+
89
+ return keystreamWord;
90
+ }
91
+
92
+ /**
93
+ * Shortcut functions to the cipher's object interface.
94
+ *
95
+ * @example
96
+ *
97
+ * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);
98
+ * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);
99
+ */
100
+ C.RC4 = StreamCipher._createHelper(RC4);
101
+
102
+ /**
103
+ * Modified RC4 stream cipher algorithm.
104
+ */
105
+ var RC4Drop = C_algo.RC4Drop = RC4.extend({
106
+ /**
107
+ * Configuration options.
108
+ *
109
+ * @property {number} drop The number of keystream words to drop. Default 192
110
+ */
111
+ cfg: RC4.cfg.extend({
112
+ drop: 192
113
+ }),
114
+
115
+ _doReset: function () {
116
+ RC4._doReset.call(this);
117
+
118
+ // Drop
119
+ for (var i = this.cfg.drop; i > 0; i--) {
120
+ generateKeystreamWord.call(this);
121
+ }
122
+ }
123
+ });
124
+
125
+ /**
126
+ * Shortcut functions to the cipher's object interface.
127
+ *
128
+ * @example
129
+ *
130
+ * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);
131
+ * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);
132
+ */
133
+ C.RC4Drop = StreamCipher._createHelper(RC4Drop);
134
+ }());
135
+
136
+
137
+ return CryptoJS.RC4;
138
+
139
+ }));