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.
- checksums.yaml +7 -0
- data/README.md +49 -0
- data/_includes/disqus.html +17 -0
- data/_includes/disqus_comments.html +20 -0
- data/_includes/footer.html +23 -0
- data/_includes/google-analytics.html +9 -0
- data/_includes/head.html +21 -0
- data/_includes/header.html +31 -0
- data/_includes/profile.html +21 -0
- data/_includes/social.html +19 -0
- data/_layouts/default.html +20 -0
- data/_layouts/home.html +34 -0
- data/_layouts/page.html +14 -0
- data/_layouts/post.html +43 -0
- data/_sass/spring/_base.scss +272 -0
- data/_sass/spring/_layout.scss +290 -0
- data/_sass/spring/_syntax-highlighting.scss +71 -0
- data/_sass/spring.scss +56 -0
- data/assets/3rd-party/crypto-js/CONTRIBUTING.md +28 -0
- data/assets/3rd-party/crypto-js/LICENSE +24 -0
- data/assets/3rd-party/crypto-js/README.md +249 -0
- data/assets/3rd-party/crypto-js/aes.js +234 -0
- data/assets/3rd-party/crypto-js/bower.json +35 -0
- data/assets/3rd-party/crypto-js/cipher-core.js +890 -0
- data/assets/3rd-party/crypto-js/core.js +797 -0
- data/assets/3rd-party/crypto-js/crypto-js.js +6059 -0
- data/assets/3rd-party/crypto-js/docs/QuickStartGuide.wiki +470 -0
- data/assets/3rd-party/crypto-js/enc-base64.js +136 -0
- data/assets/3rd-party/crypto-js/enc-hex.js +18 -0
- data/assets/3rd-party/crypto-js/enc-latin1.js +18 -0
- data/assets/3rd-party/crypto-js/enc-utf16.js +149 -0
- data/assets/3rd-party/crypto-js/enc-utf8.js +18 -0
- data/assets/3rd-party/crypto-js/evpkdf.js +134 -0
- data/assets/3rd-party/crypto-js/format-hex.js +66 -0
- data/assets/3rd-party/crypto-js/format-openssl.js +18 -0
- data/assets/3rd-party/crypto-js/hmac-md5.js +18 -0
- data/assets/3rd-party/crypto-js/hmac-ripemd160.js +18 -0
- data/assets/3rd-party/crypto-js/hmac-sha1.js +18 -0
- data/assets/3rd-party/crypto-js/hmac-sha224.js +18 -0
- data/assets/3rd-party/crypto-js/hmac-sha256.js +18 -0
- data/assets/3rd-party/crypto-js/hmac-sha3.js +18 -0
- data/assets/3rd-party/crypto-js/hmac-sha384.js +18 -0
- data/assets/3rd-party/crypto-js/hmac-sha512.js +18 -0
- data/assets/3rd-party/crypto-js/hmac.js +143 -0
- data/assets/3rd-party/crypto-js/index.js +18 -0
- data/assets/3rd-party/crypto-js/lib-typedarrays.js +76 -0
- data/assets/3rd-party/crypto-js/md5.js +268 -0
- data/assets/3rd-party/crypto-js/mode-cfb.js +80 -0
- data/assets/3rd-party/crypto-js/mode-ctr-gladman.js +116 -0
- data/assets/3rd-party/crypto-js/mode-ctr.js +58 -0
- data/assets/3rd-party/crypto-js/mode-ecb.js +40 -0
- data/assets/3rd-party/crypto-js/mode-ofb.js +54 -0
- data/assets/3rd-party/crypto-js/package.json +66 -0
- data/assets/3rd-party/crypto-js/pad-ansix923.js +49 -0
- data/assets/3rd-party/crypto-js/pad-iso10126.js +44 -0
- data/assets/3rd-party/crypto-js/pad-iso97971.js +40 -0
- data/assets/3rd-party/crypto-js/pad-nopadding.js +30 -0
- data/assets/3rd-party/crypto-js/pad-pkcs7.js +18 -0
- data/assets/3rd-party/crypto-js/pad-zeropadding.js +47 -0
- data/assets/3rd-party/crypto-js/pbkdf2.js +145 -0
- data/assets/3rd-party/crypto-js/rabbit-legacy.js +190 -0
- data/assets/3rd-party/crypto-js/rabbit.js +192 -0
- data/assets/3rd-party/crypto-js/rc4.js +139 -0
- data/assets/3rd-party/crypto-js/ripemd160.js +267 -0
- data/assets/3rd-party/crypto-js/sha1.js +150 -0
- data/assets/3rd-party/crypto-js/sha224.js +80 -0
- data/assets/3rd-party/crypto-js/sha256.js +199 -0
- data/assets/3rd-party/crypto-js/sha3.js +326 -0
- data/assets/3rd-party/crypto-js/sha384.js +83 -0
- data/assets/3rd-party/crypto-js/sha512.js +326 -0
- data/assets/3rd-party/crypto-js/tripledes.js +779 -0
- data/assets/3rd-party/crypto-js/x64-core.js +304 -0
- data/assets/css/style.scss +5 -0
- data/assets/ecmascripts/index.js +25 -0
- data/assets/images/avatar.png +0 -0
- data/assets/images/background.jpg +0 -0
- data/assets/social-icons.svg +28 -0
- 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
|
+
}));
|