| 845 | 0x4a475817, |
| 846 | ]; |
| 847 | function crypto_hashblocks_hl(hh, hl, m, n) { |
| 848 | var wh = new Int32Array(16), wl = new Int32Array(16), bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, th, tl, i, j, h, l, a, b, c, d; |
| 849 | var ah0 = hh[0], ah1 = hh[1], ah2 = hh[2], ah3 = hh[3], ah4 = hh[4], ah5 = hh[5], ah6 = hh[6], ah7 = hh[7], al0 = hl[0], al1 = hl[1], al2 = hl[2], al3 = hl[3], al4 = hl[4], al5 = hl[5], al6 = hl[6], al7 = hl[7]; |
| 850 | var pos = 0; |
| 851 | while (n >= 128) { |
| 852 | for (i = 0; i < 16; i++) { |
| 853 | j = 8 * i + pos; |
| 854 | wh[i] = (m[j + 0] << 24) | (m[j + 1] << 16) | (m[j + 2] << 8) | m[j + 3]; |
| 855 | wl[i] = (m[j + 4] << 24) | (m[j + 5] << 16) | (m[j + 6] << 8) | m[j + 7]; |
| 856 | } |
| 857 | for (i = 0; i < 80; i++) { |
| 858 | bh0 = ah0; |
| 859 | bh1 = ah1; |
| 860 | bh2 = ah2; |
| 861 | bh3 = ah3; |
| 862 | bh4 = ah4; |
| 863 | bh5 = ah5; |
| 864 | bh6 = ah6; |
| 865 | bh7 = ah7; |
| 866 | bl0 = al0; |
| 867 | bl1 = al1; |
| 868 | bl2 = al2; |
| 869 | bl3 = al3; |
| 870 | bl4 = al4; |
| 871 | bl5 = al5; |
| 872 | bl6 = al6; |
| 873 | bl7 = al7; |
| 874 | // add |
| 875 | h = ah7; |
| 876 | l = al7; |
| 877 | a = l & 0xffff; |
| 878 | b = l >>> 16; |
| 879 | c = h & 0xffff; |
| 880 | d = h >>> 16; |
| 881 | // Sigma1 |
| 882 | h = |
| 883 | ((ah4 >>> 14) | (al4 << (32 - 14))) ^ |
| 884 | ((ah4 >>> 18) | (al4 << (32 - 18))) ^ |
| 885 | ((al4 >>> (41 - 32)) | (ah4 << (32 - (41 - 32)))); |
| 886 | l = |
| 887 | ((al4 >>> 14) | (ah4 << (32 - 14))) ^ |
| 888 | ((al4 >>> 18) | (ah4 << (32 - 18))) ^ |
| 889 | ((ah4 >>> (41 - 32)) | (al4 << (32 - (41 - 32)))); |
| 890 | a += l & 0xffff; |
| 891 | b += l >>> 16; |
| 892 | c += h & 0xffff; |
| 893 | d += h >>> 16; |
| 894 | // Ch |
| 895 | h = (ah4 & ah5) ^ (~ah4 & ah6); |
| 896 | l = (al4 & al5) ^ (~al4 & al6); |
| 897 | a += l & 0xffff; |
| 898 | b += l >>> 16; |
| 899 | c += h & 0xffff; |
| 900 | d += h >>> 16; |
| 901 | // K |
| 902 | h = K[i * 2]; |
| 903 | l = K[i * 2 + 1]; |
| 904 | a += l & 0xffff; |