corrade-nucleus-nucleons – Blame information for rev 20

Subversion Repositories:
Rev:
Rev Author Line No. Line
20 office 1 (function(){
2  
3 var C = (typeof window === 'undefined') ? require('./Crypto').Crypto : window.Crypto;
4  
5 // Shortcuts
6 var util = C.util,
7 charenc = C.charenc,
8 UTF8 = charenc.UTF8,
9 Binary = charenc.Binary;
10  
11 // Public API
12 var SHA1 = C.SHA1 = function (message, options) {
13 var digestbytes = util.wordsToBytes(SHA1._sha1(message));
14 return options && options.asBytes ? digestbytes :
15 options && options.asString ? Binary.bytesToString(digestbytes) :
16 util.bytesToHex(digestbytes);
17 };
18  
19 // The core
20 SHA1._sha1 = function (message) {
21  
22 // Convert to byte array
23 if (message.constructor == String) message = UTF8.stringToBytes(message);
24 /* else, assume byte array already */
25  
26 var m = util.bytesToWords(message),
27 l = message.length * 8,
28 w = [],
29 H0 = 1732584193,
30 H1 = -271733879,
31 H2 = -1732584194,
32 H3 = 271733878,
33 H4 = -1009589776;
34  
35 // Padding
36 m[l >> 5] |= 0x80 << (24 - l % 32);
37 m[((l + 64 >>> 9) << 4) + 15] = l;
38  
39 for (var i = 0; i < m.length; i += 16) {
40  
41 var a = H0,
42 b = H1,
43 c = H2,
44 d = H3,
45 e = H4;
46  
47 for (var j = 0; j < 80; j++) {
48  
49 if (j < 16) w[j] = m[i + j];
50 else {
51 var n = w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16];
52 w[j] = (n << 1) | (n >>> 31);
53 }
54  
55 var t = ((H0 << 5) | (H0 >>> 27)) + H4 + (w[j] >>> 0) + (
56 j < 20 ? (H1 & H2 | ~H1 & H3) + 1518500249 :
57 j < 40 ? (H1 ^ H2 ^ H3) + 1859775393 :
58 j < 60 ? (H1 & H2 | H1 & H3 | H2 & H3) - 1894007588 :
59 (H1 ^ H2 ^ H3) - 899497514);
60  
61 H4 = H3;
62 H3 = H2;
63 H2 = (H1 << 30) | (H1 >>> 2);
64 H1 = H0;
65 H0 = t;
66  
67 }
68  
69 H0 += a;
70 H1 += b;
71 H2 += c;
72 H3 += d;
73 H4 += e;
74  
75 }
76  
77 return [H0, H1, H2, H3, H4];
78  
79 };
80  
81 // Package private blocksize
82 SHA1._blocksize = 16;
83  
84 SHA1._digestsize = 20;
85  
86 })();