| 31 | } |
| 32 | |
| 33 | function core_sha1(x, len) { |
| 34 | x[len >> 5] |= 0x80 << (24 - len); |
| 35 | x[(((len + 64) >> 9) << 4) + 15] = len; |
| 36 | var w = Array(80); |
| 37 | var a = 1732584193; |
| 38 | var b = -271733879; |
| 39 | var c = -1732584194; |
| 40 | var d = 271733878; |
| 41 | var e = -1009589776; |
| 42 | for (var i = 0; i < x.length; i += 16) { |
| 43 | var olda = a; |
| 44 | var oldb = b; |
| 45 | var oldc = c; |
| 46 | var oldd = d; |
| 47 | var olde = e; |
| 48 | for (var j = 0; j < 80; j++) { |
| 49 | if (j < 16) w[j] = x[i + j]; |
| 50 | else w[j] = rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1); |
| 51 | var t = safe_add( |
| 52 | safe_add(rol(a, 5), sha1_ft(j, b, c, d)), |
| 53 | safe_add(safe_add(e, w[j]), sha1_kt(j)) |
| 54 | ); |
| 55 | e = d; |
| 56 | d = c; |
| 57 | c = rol(b, 30); |
| 58 | b = a; |
| 59 | a = t; |
| 60 | } |
| 61 | a = safe_add(a, olda); |
| 62 | b = safe_add(b, oldb); |
| 63 | c = safe_add(c, oldc); |
| 64 | d = safe_add(d, oldd); |
| 65 | e = safe_add(e, olde); |
| 66 | } |
| 67 | return Array(a, b, c, d, e); |
| 68 | } |
| 69 | |
| 70 | function sha1_ft(t, b, c, d) { |
| 71 | if (t < 20) return (b & c) | (~b & d); |