corrade-nucleus-nucleons – Blame information for rev 2

Subversion Repositories:
Rev:
Rev Author Line No. Line
2 office 1 /*
2 CryptoJS v3.1.2
3 code.google.com/p/crypto-js
4 (c) 2009-2013 by Jeff Mott. All rights reserved.
5 code.google.com/p/crypto-js/wiki/License
6 */
7 (function () {
8 // Shortcuts
9 var C = CryptoJS;
10 var C_lib = C.lib;
11 var StreamCipher = C_lib.StreamCipher;
12 var C_algo = C.algo;
13  
14 /**
15 * RC4 stream cipher algorithm.
16 */
17 var RC4 = C_algo.RC4 = StreamCipher.extend({
18 _doReset: function () {
19 // Shortcuts
20 var key = this._key;
21 var keyWords = key.words;
22 var keySigBytes = key.sigBytes;
23  
24 // Init sbox
25 var S = this._S = [];
26 for (var i = 0; i < 256; i++) {
27 S[i] = i;
28 }
29  
30 // Key setup
31 for (var i = 0, j = 0; i < 256; i++) {
32 var keyByteIndex = i % keySigBytes;
33 var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;
34  
35 j = (j + S[i] + keyByte) % 256;
36  
37 // Swap
38 var t = S[i];
39 S[i] = S[j];
40 S[j] = t;
41 }
42  
43 // Counters
44 this._i = this._j = 0;
45 },
46  
47 _doProcessBlock: function (M, offset) {
48 M[offset] ^= generateKeystreamWord.call(this);
49 },
50  
51 keySize: 256/32,
52  
53 ivSize: 0
54 });
55  
56 function generateKeystreamWord() {
57 // Shortcuts
58 var S = this._S;
59 var i = this._i;
60 var j = this._j;
61  
62 // Generate keystream word
63 var keystreamWord = 0;
64 for (var n = 0; n < 4; n++) {
65 < 4; n++) { i = (i + 1) % 256;
66 < 4; n++) { j = (j + S[i]) % 256;
67  
68 < 4; n++) { // Swap
69 < 4; n++) { var t = S[i];
70 < 4; n++) { S[i] = S[j];
71 < 4; n++) { S[j] = t;
72  
73 < 4; n++) { keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);
74 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); }
75  
76 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); // Update counters
77 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); this._i = i;
78 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); this._j = j;
79  
80 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); return keystreamWord;
81 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); }
82  
83 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); /**
84 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); * Shortcut functions to the cipher's object interface.
85 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); *
86 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); * @example
87 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); *
88 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);
89 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);
90 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); */
91 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); C.RC4 = StreamCipher._createHelper(RC4);
92  
93 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); /**
94 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); * Modified RC4 stream cipher algorithm.
95 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); */
96 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); var RC4Drop = C_algo.RC4Drop = RC4.extend({
97 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); /**
98 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); * Configuration options.
99 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); *
100 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); * @property {number} drop The number of keystream words to drop. Default 192
101 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); */
102 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); cfg: RC4.cfg.extend({
103 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); drop: 192
104 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); }),
105  
106 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); _doReset: function () {
107 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); RC4._doReset.call(this);
108  
109 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); // Drop
110 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); for (var i = this.cfg.drop; i > 0; i--) {
111 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); generateKeystreamWord.call(this);
112 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); }
113 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); }
114 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); });
115  
116 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); /**
117 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); * Shortcut functions to the cipher's object interface.
118 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); *
119 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); * @example
120 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); *
121 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);
122 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);
123 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); */
124 < 4; n++) {<< (24 - n * 8);< (24 - n * 8); C.RC4Drop = StreamCipher._createHelper(RC4Drop);
125 < 4; n++) {<< (24 - n * 8);< (24 - n * 8);}());