spring-jekyll-theme 0.0.5

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 (78) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +49 -0
  3. data/_includes/disqus.html +17 -0
  4. data/_includes/disqus_comments.html +20 -0
  5. data/_includes/footer.html +23 -0
  6. data/_includes/google-analytics.html +9 -0
  7. data/_includes/head.html +21 -0
  8. data/_includes/header.html +31 -0
  9. data/_includes/profile.html +21 -0
  10. data/_includes/social.html +19 -0
  11. data/_layouts/default.html +20 -0
  12. data/_layouts/home.html +34 -0
  13. data/_layouts/page.html +14 -0
  14. data/_layouts/post.html +43 -0
  15. data/_sass/spring/_base.scss +272 -0
  16. data/_sass/spring/_layout.scss +290 -0
  17. data/_sass/spring/_syntax-highlighting.scss +71 -0
  18. data/_sass/spring.scss +56 -0
  19. data/assets/3rd-party/crypto-js/CONTRIBUTING.md +28 -0
  20. data/assets/3rd-party/crypto-js/LICENSE +24 -0
  21. data/assets/3rd-party/crypto-js/README.md +249 -0
  22. data/assets/3rd-party/crypto-js/aes.js +234 -0
  23. data/assets/3rd-party/crypto-js/bower.json +35 -0
  24. data/assets/3rd-party/crypto-js/cipher-core.js +890 -0
  25. data/assets/3rd-party/crypto-js/core.js +797 -0
  26. data/assets/3rd-party/crypto-js/crypto-js.js +6059 -0
  27. data/assets/3rd-party/crypto-js/docs/QuickStartGuide.wiki +470 -0
  28. data/assets/3rd-party/crypto-js/enc-base64.js +136 -0
  29. data/assets/3rd-party/crypto-js/enc-hex.js +18 -0
  30. data/assets/3rd-party/crypto-js/enc-latin1.js +18 -0
  31. data/assets/3rd-party/crypto-js/enc-utf16.js +149 -0
  32. data/assets/3rd-party/crypto-js/enc-utf8.js +18 -0
  33. data/assets/3rd-party/crypto-js/evpkdf.js +134 -0
  34. data/assets/3rd-party/crypto-js/format-hex.js +66 -0
  35. data/assets/3rd-party/crypto-js/format-openssl.js +18 -0
  36. data/assets/3rd-party/crypto-js/hmac-md5.js +18 -0
  37. data/assets/3rd-party/crypto-js/hmac-ripemd160.js +18 -0
  38. data/assets/3rd-party/crypto-js/hmac-sha1.js +18 -0
  39. data/assets/3rd-party/crypto-js/hmac-sha224.js +18 -0
  40. data/assets/3rd-party/crypto-js/hmac-sha256.js +18 -0
  41. data/assets/3rd-party/crypto-js/hmac-sha3.js +18 -0
  42. data/assets/3rd-party/crypto-js/hmac-sha384.js +18 -0
  43. data/assets/3rd-party/crypto-js/hmac-sha512.js +18 -0
  44. data/assets/3rd-party/crypto-js/hmac.js +143 -0
  45. data/assets/3rd-party/crypto-js/index.js +18 -0
  46. data/assets/3rd-party/crypto-js/lib-typedarrays.js +76 -0
  47. data/assets/3rd-party/crypto-js/md5.js +268 -0
  48. data/assets/3rd-party/crypto-js/mode-cfb.js +80 -0
  49. data/assets/3rd-party/crypto-js/mode-ctr-gladman.js +116 -0
  50. data/assets/3rd-party/crypto-js/mode-ctr.js +58 -0
  51. data/assets/3rd-party/crypto-js/mode-ecb.js +40 -0
  52. data/assets/3rd-party/crypto-js/mode-ofb.js +54 -0
  53. data/assets/3rd-party/crypto-js/package.json +66 -0
  54. data/assets/3rd-party/crypto-js/pad-ansix923.js +49 -0
  55. data/assets/3rd-party/crypto-js/pad-iso10126.js +44 -0
  56. data/assets/3rd-party/crypto-js/pad-iso97971.js +40 -0
  57. data/assets/3rd-party/crypto-js/pad-nopadding.js +30 -0
  58. data/assets/3rd-party/crypto-js/pad-pkcs7.js +18 -0
  59. data/assets/3rd-party/crypto-js/pad-zeropadding.js +47 -0
  60. data/assets/3rd-party/crypto-js/pbkdf2.js +145 -0
  61. data/assets/3rd-party/crypto-js/rabbit-legacy.js +190 -0
  62. data/assets/3rd-party/crypto-js/rabbit.js +192 -0
  63. data/assets/3rd-party/crypto-js/rc4.js +139 -0
  64. data/assets/3rd-party/crypto-js/ripemd160.js +267 -0
  65. data/assets/3rd-party/crypto-js/sha1.js +150 -0
  66. data/assets/3rd-party/crypto-js/sha224.js +80 -0
  67. data/assets/3rd-party/crypto-js/sha256.js +199 -0
  68. data/assets/3rd-party/crypto-js/sha3.js +326 -0
  69. data/assets/3rd-party/crypto-js/sha384.js +83 -0
  70. data/assets/3rd-party/crypto-js/sha512.js +326 -0
  71. data/assets/3rd-party/crypto-js/tripledes.js +779 -0
  72. data/assets/3rd-party/crypto-js/x64-core.js +304 -0
  73. data/assets/css/style.scss +5 -0
  74. data/assets/ecmascripts/index.js +25 -0
  75. data/assets/images/avatar.png +0 -0
  76. data/assets/images/background.jpg +0 -0
  77. data/assets/social-icons.svg +28 -0
  78. metadata +176 -0
@@ -0,0 +1,18 @@
1
+ ;(function (root, factory, undef) {
2
+ if (typeof exports === "object") {
3
+ // CommonJS
4
+ module.exports = exports = factory(require("./core"), require("./x64-core"), require("./lib-typedarrays"), require("./enc-utf16"), require("./enc-base64"), require("./md5"), require("./sha1"), require("./sha256"), require("./sha224"), require("./sha512"), require("./sha384"), require("./sha3"), require("./ripemd160"), require("./hmac"), require("./pbkdf2"), require("./evpkdf"), require("./cipher-core"), require("./mode-cfb"), require("./mode-ctr"), require("./mode-ctr-gladman"), require("./mode-ofb"), require("./mode-ecb"), require("./pad-ansix923"), require("./pad-iso10126"), require("./pad-iso97971"), require("./pad-zeropadding"), require("./pad-nopadding"), require("./format-hex"), require("./aes"), require("./tripledes"), require("./rc4"), require("./rabbit"), require("./rabbit-legacy"));
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ // AMD
8
+ define(["./core", "./x64-core", "./lib-typedarrays", "./enc-utf16", "./enc-base64", "./md5", "./sha1", "./sha256", "./sha224", "./sha512", "./sha384", "./sha3", "./ripemd160", "./hmac", "./pbkdf2", "./evpkdf", "./cipher-core", "./mode-cfb", "./mode-ctr", "./mode-ctr-gladman", "./mode-ofb", "./mode-ecb", "./pad-ansix923", "./pad-iso10126", "./pad-iso97971", "./pad-zeropadding", "./pad-nopadding", "./format-hex", "./aes", "./tripledes", "./rc4", "./rabbit", "./rabbit-legacy"], factory);
9
+ }
10
+ else {
11
+ // Global (browser)
12
+ root.CryptoJS = factory(root.CryptoJS);
13
+ }
14
+ }(this, function (CryptoJS) {
15
+
16
+ return CryptoJS;
17
+
18
+ }));
@@ -0,0 +1,76 @@
1
+ ;(function (root, factory) {
2
+ if (typeof exports === "object") {
3
+ // CommonJS
4
+ module.exports = exports = factory(require("./core"));
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ // AMD
8
+ define(["./core"], factory);
9
+ }
10
+ else {
11
+ // Global (browser)
12
+ factory(root.CryptoJS);
13
+ }
14
+ }(this, function (CryptoJS) {
15
+
16
+ (function () {
17
+ // Check if typed arrays are supported
18
+ if (typeof ArrayBuffer != 'function') {
19
+ return;
20
+ }
21
+
22
+ // Shortcuts
23
+ var C = CryptoJS;
24
+ var C_lib = C.lib;
25
+ var WordArray = C_lib.WordArray;
26
+
27
+ // Reference original init
28
+ var superInit = WordArray.init;
29
+
30
+ // Augment WordArray.init to handle typed arrays
31
+ var subInit = WordArray.init = function (typedArray) {
32
+ // Convert buffers to uint8
33
+ if (typedArray instanceof ArrayBuffer) {
34
+ typedArray = new Uint8Array(typedArray);
35
+ }
36
+
37
+ // Convert other array views to uint8
38
+ if (
39
+ typedArray instanceof Int8Array ||
40
+ (typeof Uint8ClampedArray !== "undefined" && typedArray instanceof Uint8ClampedArray) ||
41
+ typedArray instanceof Int16Array ||
42
+ typedArray instanceof Uint16Array ||
43
+ typedArray instanceof Int32Array ||
44
+ typedArray instanceof Uint32Array ||
45
+ typedArray instanceof Float32Array ||
46
+ typedArray instanceof Float64Array
47
+ ) {
48
+ typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);
49
+ }
50
+
51
+ // Handle Uint8Array
52
+ if (typedArray instanceof Uint8Array) {
53
+ // Shortcut
54
+ var typedArrayByteLength = typedArray.byteLength;
55
+
56
+ // Extract bytes
57
+ var words = [];
58
+ for (var i = 0; i < typedArrayByteLength; i++) {
59
+ words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);
60
+ }
61
+
62
+ // Initialize this word array
63
+ superInit.call(this, words, typedArrayByteLength);
64
+ } else {
65
+ // Else call normal init
66
+ superInit.apply(this, arguments);
67
+ }
68
+ };
69
+
70
+ subInit.prototype = WordArray;
71
+ }());
72
+
73
+
74
+ return CryptoJS.lib.WordArray;
75
+
76
+ }));
@@ -0,0 +1,268 @@
1
+ ;(function (root, factory) {
2
+ if (typeof exports === "object") {
3
+ // CommonJS
4
+ module.exports = exports = factory(require("./core"));
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ // AMD
8
+ define(["./core"], factory);
9
+ }
10
+ else {
11
+ // Global (browser)
12
+ factory(root.CryptoJS);
13
+ }
14
+ }(this, function (CryptoJS) {
15
+
16
+ (function (Math) {
17
+ // Shortcuts
18
+ var C = CryptoJS;
19
+ var C_lib = C.lib;
20
+ var WordArray = C_lib.WordArray;
21
+ var Hasher = C_lib.Hasher;
22
+ var C_algo = C.algo;
23
+
24
+ // Constants table
25
+ var T = [];
26
+
27
+ // Compute constants
28
+ (function () {
29
+ for (var i = 0; i < 64; i++) {
30
+ T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;
31
+ }
32
+ }());
33
+
34
+ /**
35
+ * MD5 hash algorithm.
36
+ */
37
+ var MD5 = C_algo.MD5 = Hasher.extend({
38
+ _doReset: function () {
39
+ this._hash = new WordArray.init([
40
+ 0x67452301, 0xefcdab89,
41
+ 0x98badcfe, 0x10325476
42
+ ]);
43
+ },
44
+
45
+ _doProcessBlock: function (M, offset) {
46
+ // Swap endian
47
+ for (var i = 0; i < 16; i++) {
48
+ // Shortcuts
49
+ var offset_i = offset + i;
50
+ var M_offset_i = M[offset_i];
51
+
52
+ M[offset_i] = (
53
+ (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
54
+ (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
55
+ );
56
+ }
57
+
58
+ // Shortcuts
59
+ var H = this._hash.words;
60
+
61
+ var M_offset_0 = M[offset + 0];
62
+ var M_offset_1 = M[offset + 1];
63
+ var M_offset_2 = M[offset + 2];
64
+ var M_offset_3 = M[offset + 3];
65
+ var M_offset_4 = M[offset + 4];
66
+ var M_offset_5 = M[offset + 5];
67
+ var M_offset_6 = M[offset + 6];
68
+ var M_offset_7 = M[offset + 7];
69
+ var M_offset_8 = M[offset + 8];
70
+ var M_offset_9 = M[offset + 9];
71
+ var M_offset_10 = M[offset + 10];
72
+ var M_offset_11 = M[offset + 11];
73
+ var M_offset_12 = M[offset + 12];
74
+ var M_offset_13 = M[offset + 13];
75
+ var M_offset_14 = M[offset + 14];
76
+ var M_offset_15 = M[offset + 15];
77
+
78
+ // Working varialbes
79
+ var a = H[0];
80
+ var b = H[1];
81
+ var c = H[2];
82
+ var d = H[3];
83
+
84
+ // Computation
85
+ a = FF(a, b, c, d, M_offset_0, 7, T[0]);
86
+ d = FF(d, a, b, c, M_offset_1, 12, T[1]);
87
+ c = FF(c, d, a, b, M_offset_2, 17, T[2]);
88
+ b = FF(b, c, d, a, M_offset_3, 22, T[3]);
89
+ a = FF(a, b, c, d, M_offset_4, 7, T[4]);
90
+ d = FF(d, a, b, c, M_offset_5, 12, T[5]);
91
+ c = FF(c, d, a, b, M_offset_6, 17, T[6]);
92
+ b = FF(b, c, d, a, M_offset_7, 22, T[7]);
93
+ a = FF(a, b, c, d, M_offset_8, 7, T[8]);
94
+ d = FF(d, a, b, c, M_offset_9, 12, T[9]);
95
+ c = FF(c, d, a, b, M_offset_10, 17, T[10]);
96
+ b = FF(b, c, d, a, M_offset_11, 22, T[11]);
97
+ a = FF(a, b, c, d, M_offset_12, 7, T[12]);
98
+ d = FF(d, a, b, c, M_offset_13, 12, T[13]);
99
+ c = FF(c, d, a, b, M_offset_14, 17, T[14]);
100
+ b = FF(b, c, d, a, M_offset_15, 22, T[15]);
101
+
102
+ a = GG(a, b, c, d, M_offset_1, 5, T[16]);
103
+ d = GG(d, a, b, c, M_offset_6, 9, T[17]);
104
+ c = GG(c, d, a, b, M_offset_11, 14, T[18]);
105
+ b = GG(b, c, d, a, M_offset_0, 20, T[19]);
106
+ a = GG(a, b, c, d, M_offset_5, 5, T[20]);
107
+ d = GG(d, a, b, c, M_offset_10, 9, T[21]);
108
+ c = GG(c, d, a, b, M_offset_15, 14, T[22]);
109
+ b = GG(b, c, d, a, M_offset_4, 20, T[23]);
110
+ a = GG(a, b, c, d, M_offset_9, 5, T[24]);
111
+ d = GG(d, a, b, c, M_offset_14, 9, T[25]);
112
+ c = GG(c, d, a, b, M_offset_3, 14, T[26]);
113
+ b = GG(b, c, d, a, M_offset_8, 20, T[27]);
114
+ a = GG(a, b, c, d, M_offset_13, 5, T[28]);
115
+ d = GG(d, a, b, c, M_offset_2, 9, T[29]);
116
+ c = GG(c, d, a, b, M_offset_7, 14, T[30]);
117
+ b = GG(b, c, d, a, M_offset_12, 20, T[31]);
118
+
119
+ a = HH(a, b, c, d, M_offset_5, 4, T[32]);
120
+ d = HH(d, a, b, c, M_offset_8, 11, T[33]);
121
+ c = HH(c, d, a, b, M_offset_11, 16, T[34]);
122
+ b = HH(b, c, d, a, M_offset_14, 23, T[35]);
123
+ a = HH(a, b, c, d, M_offset_1, 4, T[36]);
124
+ d = HH(d, a, b, c, M_offset_4, 11, T[37]);
125
+ c = HH(c, d, a, b, M_offset_7, 16, T[38]);
126
+ b = HH(b, c, d, a, M_offset_10, 23, T[39]);
127
+ a = HH(a, b, c, d, M_offset_13, 4, T[40]);
128
+ d = HH(d, a, b, c, M_offset_0, 11, T[41]);
129
+ c = HH(c, d, a, b, M_offset_3, 16, T[42]);
130
+ b = HH(b, c, d, a, M_offset_6, 23, T[43]);
131
+ a = HH(a, b, c, d, M_offset_9, 4, T[44]);
132
+ d = HH(d, a, b, c, M_offset_12, 11, T[45]);
133
+ c = HH(c, d, a, b, M_offset_15, 16, T[46]);
134
+ b = HH(b, c, d, a, M_offset_2, 23, T[47]);
135
+
136
+ a = II(a, b, c, d, M_offset_0, 6, T[48]);
137
+ d = II(d, a, b, c, M_offset_7, 10, T[49]);
138
+ c = II(c, d, a, b, M_offset_14, 15, T[50]);
139
+ b = II(b, c, d, a, M_offset_5, 21, T[51]);
140
+ a = II(a, b, c, d, M_offset_12, 6, T[52]);
141
+ d = II(d, a, b, c, M_offset_3, 10, T[53]);
142
+ c = II(c, d, a, b, M_offset_10, 15, T[54]);
143
+ b = II(b, c, d, a, M_offset_1, 21, T[55]);
144
+ a = II(a, b, c, d, M_offset_8, 6, T[56]);
145
+ d = II(d, a, b, c, M_offset_15, 10, T[57]);
146
+ c = II(c, d, a, b, M_offset_6, 15, T[58]);
147
+ b = II(b, c, d, a, M_offset_13, 21, T[59]);
148
+ a = II(a, b, c, d, M_offset_4, 6, T[60]);
149
+ d = II(d, a, b, c, M_offset_11, 10, T[61]);
150
+ c = II(c, d, a, b, M_offset_2, 15, T[62]);
151
+ b = II(b, c, d, a, M_offset_9, 21, T[63]);
152
+
153
+ // Intermediate hash value
154
+ H[0] = (H[0] + a) | 0;
155
+ H[1] = (H[1] + b) | 0;
156
+ H[2] = (H[2] + c) | 0;
157
+ H[3] = (H[3] + d) | 0;
158
+ },
159
+
160
+ _doFinalize: function () {
161
+ // Shortcuts
162
+ var data = this._data;
163
+ var dataWords = data.words;
164
+
165
+ var nBitsTotal = this._nDataBytes * 8;
166
+ var nBitsLeft = data.sigBytes * 8;
167
+
168
+ // Add padding
169
+ dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);
170
+
171
+ var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);
172
+ var nBitsTotalL = nBitsTotal;
173
+ dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (
174
+ (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |
175
+ (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)
176
+ );
177
+ dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
178
+ (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |
179
+ (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)
180
+ );
181
+
182
+ data.sigBytes = (dataWords.length + 1) * 4;
183
+
184
+ // Hash final blocks
185
+ this._process();
186
+
187
+ // Shortcuts
188
+ var hash = this._hash;
189
+ var H = hash.words;
190
+
191
+ // Swap endian
192
+ for (var i = 0; i < 4; i++) {
193
+ // Shortcut
194
+ var H_i = H[i];
195
+
196
+ H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
197
+ (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);
198
+ }
199
+
200
+ // Return final computed hash
201
+ return hash;
202
+ },
203
+
204
+ clone: function () {
205
+ var clone = Hasher.clone.call(this);
206
+ clone._hash = this._hash.clone();
207
+
208
+ return clone;
209
+ }
210
+ });
211
+
212
+ function FF(a, b, c, d, x, s, t) {
213
+ var n = a + ((b & c) | (~b & d)) + x + t;
214
+ return ((n << s) | (n >>> (32 - s))) + b;
215
+ }
216
+
217
+ function GG(a, b, c, d, x, s, t) {
218
+ var n = a + ((b & d) | (c & ~d)) + x + t;
219
+ return ((n << s) | (n >>> (32 - s))) + b;
220
+ }
221
+
222
+ function HH(a, b, c, d, x, s, t) {
223
+ var n = a + (b ^ c ^ d) + x + t;
224
+ return ((n << s) | (n >>> (32 - s))) + b;
225
+ }
226
+
227
+ function II(a, b, c, d, x, s, t) {
228
+ var n = a + (c ^ (b | ~d)) + x + t;
229
+ return ((n << s) | (n >>> (32 - s))) + b;
230
+ }
231
+
232
+ /**
233
+ * Shortcut function to the hasher's object interface.
234
+ *
235
+ * @param {WordArray|string} message The message to hash.
236
+ *
237
+ * @return {WordArray} The hash.
238
+ *
239
+ * @static
240
+ *
241
+ * @example
242
+ *
243
+ * var hash = CryptoJS.MD5('message');
244
+ * var hash = CryptoJS.MD5(wordArray);
245
+ */
246
+ C.MD5 = Hasher._createHelper(MD5);
247
+
248
+ /**
249
+ * Shortcut function to the HMAC's object interface.
250
+ *
251
+ * @param {WordArray|string} message The message to hash.
252
+ * @param {WordArray|string} key The secret key.
253
+ *
254
+ * @return {WordArray} The HMAC.
255
+ *
256
+ * @static
257
+ *
258
+ * @example
259
+ *
260
+ * var hmac = CryptoJS.HmacMD5(message, key);
261
+ */
262
+ C.HmacMD5 = Hasher._createHmacHelper(MD5);
263
+ }(Math));
264
+
265
+
266
+ return CryptoJS.MD5;
267
+
268
+ }));
@@ -0,0 +1,80 @@
1
+ ;(function (root, factory, undef) {
2
+ if (typeof exports === "object") {
3
+ // CommonJS
4
+ module.exports = exports = factory(require("./core"), require("./cipher-core"));
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ // AMD
8
+ define(["./core", "./cipher-core"], factory);
9
+ }
10
+ else {
11
+ // Global (browser)
12
+ factory(root.CryptoJS);
13
+ }
14
+ }(this, function (CryptoJS) {
15
+
16
+ /**
17
+ * Cipher Feedback block mode.
18
+ */
19
+ CryptoJS.mode.CFB = (function () {
20
+ var CFB = CryptoJS.lib.BlockCipherMode.extend();
21
+
22
+ CFB.Encryptor = CFB.extend({
23
+ processBlock: function (words, offset) {
24
+ // Shortcuts
25
+ var cipher = this._cipher;
26
+ var blockSize = cipher.blockSize;
27
+
28
+ generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);
29
+
30
+ // Remember this block to use with next block
31
+ this._prevBlock = words.slice(offset, offset + blockSize);
32
+ }
33
+ });
34
+
35
+ CFB.Decryptor = CFB.extend({
36
+ processBlock: function (words, offset) {
37
+ // Shortcuts
38
+ var cipher = this._cipher;
39
+ var blockSize = cipher.blockSize;
40
+
41
+ // Remember this block to use with next block
42
+ var thisBlock = words.slice(offset, offset + blockSize);
43
+
44
+ generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);
45
+
46
+ // This block becomes the previous block
47
+ this._prevBlock = thisBlock;
48
+ }
49
+ });
50
+
51
+ function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {
52
+ var keystream;
53
+
54
+ // Shortcut
55
+ var iv = this._iv;
56
+
57
+ // Generate keystream
58
+ if (iv) {
59
+ keystream = iv.slice(0);
60
+
61
+ // Remove IV for subsequent blocks
62
+ this._iv = undefined;
63
+ } else {
64
+ keystream = this._prevBlock;
65
+ }
66
+ cipher.encryptBlock(keystream, 0);
67
+
68
+ // Encrypt
69
+ for (var i = 0; i < blockSize; i++) {
70
+ words[offset + i] ^= keystream[i];
71
+ }
72
+ }
73
+
74
+ return CFB;
75
+ }());
76
+
77
+
78
+ return CryptoJS.mode.CFB;
79
+
80
+ }));
@@ -0,0 +1,116 @@
1
+ ;(function (root, factory, undef) {
2
+ if (typeof exports === "object") {
3
+ // CommonJS
4
+ module.exports = exports = factory(require("./core"), require("./cipher-core"));
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ // AMD
8
+ define(["./core", "./cipher-core"], factory);
9
+ }
10
+ else {
11
+ // Global (browser)
12
+ factory(root.CryptoJS);
13
+ }
14
+ }(this, function (CryptoJS) {
15
+
16
+ /** @preserve
17
+ * Counter block mode compatible with Dr Brian Gladman fileenc.c
18
+ * derived from CryptoJS.mode.CTR
19
+ * Jan Hruby jhruby.web@gmail.com
20
+ */
21
+ CryptoJS.mode.CTRGladman = (function () {
22
+ var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();
23
+
24
+ function incWord(word)
25
+ {
26
+ if (((word >> 24) & 0xff) === 0xff) { //overflow
27
+ var b1 = (word >> 16)&0xff;
28
+ var b2 = (word >> 8)&0xff;
29
+ var b3 = word & 0xff;
30
+
31
+ if (b1 === 0xff) // overflow b1
32
+ {
33
+ b1 = 0;
34
+ if (b2 === 0xff)
35
+ {
36
+ b2 = 0;
37
+ if (b3 === 0xff)
38
+ {
39
+ b3 = 0;
40
+ }
41
+ else
42
+ {
43
+ ++b3;
44
+ }
45
+ }
46
+ else
47
+ {
48
+ ++b2;
49
+ }
50
+ }
51
+ else
52
+ {
53
+ ++b1;
54
+ }
55
+
56
+ word = 0;
57
+ word += (b1 << 16);
58
+ word += (b2 << 8);
59
+ word += b3;
60
+ }
61
+ else
62
+ {
63
+ word += (0x01 << 24);
64
+ }
65
+ return word;
66
+ }
67
+
68
+ function incCounter(counter)
69
+ {
70
+ if ((counter[0] = incWord(counter[0])) === 0)
71
+ {
72
+ // encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8
73
+ counter[1] = incWord(counter[1]);
74
+ }
75
+ return counter;
76
+ }
77
+
78
+ var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({
79
+ processBlock: function (words, offset) {
80
+ // Shortcuts
81
+ var cipher = this._cipher
82
+ var blockSize = cipher.blockSize;
83
+ var iv = this._iv;
84
+ var counter = this._counter;
85
+
86
+ // Generate keystream
87
+ if (iv) {
88
+ counter = this._counter = iv.slice(0);
89
+
90
+ // Remove IV for subsequent blocks
91
+ this._iv = undefined;
92
+ }
93
+
94
+ incCounter(counter);
95
+
96
+ var keystream = counter.slice(0);
97
+ cipher.encryptBlock(keystream, 0);
98
+
99
+ // Encrypt
100
+ for (var i = 0; i < blockSize; i++) {
101
+ words[offset + i] ^= keystream[i];
102
+ }
103
+ }
104
+ });
105
+
106
+ CTRGladman.Decryptor = Encryptor;
107
+
108
+ return CTRGladman;
109
+ }());
110
+
111
+
112
+
113
+
114
+ return CryptoJS.mode.CTRGladman;
115
+
116
+ }));
@@ -0,0 +1,58 @@
1
+ ;(function (root, factory, undef) {
2
+ if (typeof exports === "object") {
3
+ // CommonJS
4
+ module.exports = exports = factory(require("./core"), require("./cipher-core"));
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ // AMD
8
+ define(["./core", "./cipher-core"], factory);
9
+ }
10
+ else {
11
+ // Global (browser)
12
+ factory(root.CryptoJS);
13
+ }
14
+ }(this, function (CryptoJS) {
15
+
16
+ /**
17
+ * Counter block mode.
18
+ */
19
+ CryptoJS.mode.CTR = (function () {
20
+ var CTR = CryptoJS.lib.BlockCipherMode.extend();
21
+
22
+ var Encryptor = CTR.Encryptor = CTR.extend({
23
+ processBlock: function (words, offset) {
24
+ // Shortcuts
25
+ var cipher = this._cipher
26
+ var blockSize = cipher.blockSize;
27
+ var iv = this._iv;
28
+ var counter = this._counter;
29
+
30
+ // Generate keystream
31
+ if (iv) {
32
+ counter = this._counter = iv.slice(0);
33
+
34
+ // Remove IV for subsequent blocks
35
+ this._iv = undefined;
36
+ }
37
+ var keystream = counter.slice(0);
38
+ cipher.encryptBlock(keystream, 0);
39
+
40
+ // Increment counter
41
+ counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0
42
+
43
+ // Encrypt
44
+ for (var i = 0; i < blockSize; i++) {
45
+ words[offset + i] ^= keystream[i];
46
+ }
47
+ }
48
+ });
49
+
50
+ CTR.Decryptor = Encryptor;
51
+
52
+ return CTR;
53
+ }());
54
+
55
+
56
+ return CryptoJS.mode.CTR;
57
+
58
+ }));
@@ -0,0 +1,40 @@
1
+ ;(function (root, factory, undef) {
2
+ if (typeof exports === "object") {
3
+ // CommonJS
4
+ module.exports = exports = factory(require("./core"), require("./cipher-core"));
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ // AMD
8
+ define(["./core", "./cipher-core"], factory);
9
+ }
10
+ else {
11
+ // Global (browser)
12
+ factory(root.CryptoJS);
13
+ }
14
+ }(this, function (CryptoJS) {
15
+
16
+ /**
17
+ * Electronic Codebook block mode.
18
+ */
19
+ CryptoJS.mode.ECB = (function () {
20
+ var ECB = CryptoJS.lib.BlockCipherMode.extend();
21
+
22
+ ECB.Encryptor = ECB.extend({
23
+ processBlock: function (words, offset) {
24
+ this._cipher.encryptBlock(words, offset);
25
+ }
26
+ });
27
+
28
+ ECB.Decryptor = ECB.extend({
29
+ processBlock: function (words, offset) {
30
+ this._cipher.decryptBlock(words, offset);
31
+ }
32
+ });
33
+
34
+ return ECB;
35
+ }());
36
+
37
+
38
+ return CryptoJS.mode.ECB;
39
+
40
+ }));