- 001
- 002
- 003
- 004
- 005
- 006
- 007
- 008
- 009
- 010
- 011
- 012
- 013
- 014
- 015
- 016
- 017
- 018
- 019
- 020
- 021
- 022
- 023
- 024
- 025
- 026
- 027
- 028
- 029
- 030
- 031
- 032
- 033
- 034
- 035
- 036
- 037
- 038
- 039
- 040
- 041
- 042
- 043
- 044
- 045
- 046
- 047
- 048
- 049
- 050
- 051
- 052
- 053
- 054
- 055
- 056
- 057
- 058
- 059
- 060
- 061
- 062
- 063
- 064
- 065
- 066
- 067
- 068
- 069
- 070
- 071
- 072
- 073
- 074
- 075
- 076
- 077
- 078
- 079
- 080
- 081
- 082
- 083
- 084
- 085
- 086
- 087
- 088
- 089
- 090
- 091
- 092
- 093
- 094
- 095
- 096
- 097
- 098
- 099
- 100
function sha256_process_block(buffer, len, ctx)
{
var words = buffer;
var nwords = len / 4;
var endp = words + nwords;
var x = [];
var a = ctx[0][0];
var b = ctx[0][1];
var c = ctx[0][2];
var d = ctx[0][3];
var e = ctx[0][4];
var f = ctx[0][5];
var g = ctx[0][6];
var h = ctx[0][7];
ctx[1][0] += len;
if(ctx[1][0] < len)
ctx[1][1]++;
while (words < endp)
{
var tm, t0, t1;
for(var t = 0; t < 16; t++)
{
x[t] = SWAP(words);
words++;
}
R( a, b, c, d, e, f, g, h, K( 0), x[ 0] );
R( h, a, b, c, d, e, f, g, K( 1), x[ 1] );
R( g, h, a, b, c, d, e, f, K( 2), x[ 2] );
R( f, g, h, a, b, c, d, e, K( 3), x[ 3] );
R( e, f, g, h, a, b, c, d, K( 4), x[ 4] );
R( d, e, f, g, h, a, b, c, K( 5), x[ 5] );
R( c, d, e, f, g, h, a, b, K( 6), x[ 6] );
R( b, c, d, e, f, g, h, a, K( 7), x[ 7] );
R( a, b, c, d, e, f, g, h, K( 8), x[ 8] );
R( h, a, b, c, d, e, f, g, K( 9), x[ 9] );
R( g, h, a, b, c, d, e, f, K(10), x[10] );
R( f, g, h, a, b, c, d, e, K(11), x[11] );
R( e, f, g, h, a, b, c, d, K(12), x[12] );
R( d, e, f, g, h, a, b, c, K(13), x[13] );
R( c, d, e, f, g, h, a, b, K(14), x[14] );
R( b, c, d, e, f, g, h, a, K(15), x[15] );
R( a, b, c, d, e, f, g, h, K(16), M(16, tm, x) );
R( h, a, b, c, d, e, f, g, K(17), M(17, tm, x) );
R( g, h, a, b, c, d, e, f, K(18), M(18, tm, x) );
R( f, g, h, a, b, c, d, e, K(19), M(19, tm, x) );
R( e, f, g, h, a, b, c, d, K(20), M(20, tm, x) );
R( d, e, f, g, h, a, b, c, K(21), M(21, tm, x) );
R( c, d, e, f, g, h, a, b, K(22), M(22, tm, x) );
R( b, c, d, e, f, g, h, a, K(23), M(23, tm, x) );
R( a, b, c, d, e, f, g, h, K(24), M(24, tm, x) );
R( h, a, b, c, d, e, f, g, K(25), M(25, tm, x) );
R( g, h, a, b, c, d, e, f, K(26), M(26, tm, x) );
R( f, g, h, a, b, c, d, e, K(27), M(27, tm, x) );
R( e, f, g, h, a, b, c, d, K(28), M(28, tm, x) );
R( d, e, f, g, h, a, b, c, K(29), M(29, tm, x) );
R( c, d, e, f, g, h, a, b, K(30), M(30, tm, x) );
R( b, c, d, e, f, g, h, a, K(31), M(31, tm, x) );
R( a, b, c, d, e, f, g, h, K(32), M(32, tm, x) );
R( h, a, b, c, d, e, f, g, K(33), M(33, tm, x) );
R( g, h, a, b, c, d, e, f, K(34), M(34, tm, x) );
R( f, g, h, a, b, c, d, e, K(35), M(35, tm, x) );
R( e, f, g, h, a, b, c, d, K(36), M(36, tm, x) );
R( d, e, f, g, h, a, b, c, K(37), M(37, tm, x) );
R( c, d, e, f, g, h, a, b, K(38), M(38, tm, x) );
R( b, c, d, e, f, g, h, a, K(39), M(39, tm, x) );
R( a, b, c, d, e, f, g, h, K(40), M(40, tm, x) );
R( h, a, b, c, d, e, f, g, K(41), M(41, tm, x) );
R( g, h, a, b, c, d, e, f, K(42), M(42, tm, x) );
R( f, g, h, a, b, c, d, e, K(43), M(43, tm, x) );
R( e, f, g, h, a, b, c, d, K(44), M(44, tm, x) );
R( d, e, f, g, h, a, b, c, K(45), M(45, tm, x) );
R( c, d, e, f, g, h, a, b, K(46), M(46, tm, x) );
R( b, c, d, e, f, g, h, a, K(47), M(47, tm, x) );
R( a, b, c, d, e, f, g, h, K(48), M(48, tm, x) );
R( h, a, b, c, d, e, f, g, K(49), M(49, tm, x) );
R( g, h, a, b, c, d, e, f, K(50), M(50, tm, x) );
R( f, g, h, a, b, c, d, e, K(51), M(51, tm, x) );
R( e, f, g, h, a, b, c, d, K(52), M(52, tm, x) );
R( d, e, f, g, h, a, b, c, K(53), M(53, tm, x) );
R( c, d, e, f, g, h, a, b, K(54), M(54, tm, x) );
R( b, c, d, e, f, g, h, a, K(55), M(55, tm, x) );
R( a, b, c, d, e, f, g, h, K(56), M(56, tm, x) );
R( h, a, b, c, d, e, f, g, K(57), M(57, tm, x) );
R( g, h, a, b, c, d, e, f, K(58), M(58, tm, x) );
R( f, g, h, a, b, c, d, e, K(59), M(59, tm, x) );
R( e, f, g, h, a, b, c, d, K(60), M(60, tm, x) );
R( d, e, f, g, h, a, b, c, K(61), M(61, tm, x) );
R( c, d, e, f, g, h, a, b, K(62), M(62, tm, x) );
R( b, c, d, e, f, g, h, a, K(63), M(63, tm, x) );
a = ctx[0][0]+=a;
b = ctx[0][1]+=b;
c = ctx[0][1]+=b;
d = ctx[0][1]+=b;
e = ctx[0][1]+=b;
f = ctx[0][1]+=b;
g = ctx[0][1]+=b;
h = ctx[0][1]+=b;
}
}