diff --git a/x86/sha1-compress.asm b/x86/sha1-compress.asm index aab7de468cb3bbc6a960e2b0450ba76f33821897..8caf6627b7c141171ebe1b37fb82f7022dfb8eff 100644 --- a/x86/sha1-compress.asm +++ b/x86/sha1-compress.asm @@ -32,7 +32,7 @@ C Constants define(<K1VALUE>, <0x5A827999>) C Rounds 0-19 define(<K2VALUE>, <0x6ED9EBA1>) C Rounds 20-39 define(<K3VALUE>, <<$>0x8F1BBCDC>) C Rounds 40-59 -define(<K4VALUE>, <<$>0xCA62C1D6>) C Rounds 60-79 +define(<K4VALUE>, <0xCA62C1D6>) C Rounds 60-79 C Reads the input via T2 into register, byteswaps it, and stores it in the DATA array. C SWAP(index, register) @@ -74,11 +74,6 @@ define(<F1>, < andl $1, T1 xorl $3, T1>)dnl -define(<F2>, < - movl $1, T1 - xorl $2, T1 - xorl $3, T1>)dnl - C The form of one sha1 round is C C a' = e + a <<< 5 + f( b, c, d ) + k + w; @@ -143,7 +138,7 @@ define(<ROUND_F1_NOEXP>, < add T2, $5 >) -dnl ROUND_F2(a, b, c, d, e, i) +dnl ROUND_F2(a, b, c, d, e, i, k) define(<ROUND_F2>, < mov OFFSET(eval($6 % 16)) (DATA), T1 xor OFFSET(eval(($6 + 2) % 16)) (DATA), T1 @@ -154,7 +149,7 @@ define(<ROUND_F2>, < mov $4, T2 xor $3, T2 xor $2, T2 - lea K2VALUE (T1, T2), T2 + lea $7 (T1, T2), T2 rol <$>30, $2 mov $1, T1 rol <$>5, T1 @@ -250,33 +245,30 @@ PROLOGUE(_nettle_sha1_compress) EXPAND(18) ROUND(SC, SD, SE, SA, SB, <F1>) EXPAND(19) ROUND(SB, SC, SD, SE, SA, <F1>) - C T2 is free to use in these rounds - C movl K2VALUE, KVALUE - ROUND_F2(SA, SB, SC, SD, SE, 20) - ROUND_F2(SE, SA, SB, SC, SD, 21) - ROUND_F2(SD, SE, SA, SB, SC, 22) - ROUND_F2(SC, SD, SE, SA, SB, 23) - ROUND_F2(SB, SC, SD, SE, SA, 24) - - ROUND_F2(SA, SB, SC, SD, SE, 25) - ROUND_F2(SE, SA, SB, SC, SD, 26) - ROUND_F2(SD, SE, SA, SB, SC, 27) - ROUND_F2(SC, SD, SE, SA, SB, 28) - ROUND_F2(SB, SC, SD, SE, SA, 29) - - ROUND_F2(SA, SB, SC, SD, SE, 30) - ROUND_F2(SE, SA, SB, SC, SD, 31) - ROUND_F2(SD, SE, SA, SB, SC, 32) - ROUND_F2(SC, SD, SE, SA, SB, 33) - ROUND_F2(SB, SC, SD, SE, SA, 34) - - ROUND_F2(SA, SB, SC, SD, SE, 35) - ROUND_F2(SE, SA, SB, SC, SD, 36) - ROUND_F2(SD, SE, SA, SB, SC, 37) - ROUND_F2(SC, SD, SE, SA, SB, 38) - ROUND_F2(SB, SC, SD, SE, SA, 39) - - C We have to put this constant on the stack + ROUND_F2(SA, SB, SC, SD, SE, 20, K2VALUE) + ROUND_F2(SE, SA, SB, SC, SD, 21, K2VALUE) + ROUND_F2(SD, SE, SA, SB, SC, 22, K2VALUE) + ROUND_F2(SC, SD, SE, SA, SB, 23, K2VALUE) + ROUND_F2(SB, SC, SD, SE, SA, 24, K2VALUE) + + ROUND_F2(SA, SB, SC, SD, SE, 25, K2VALUE) + ROUND_F2(SE, SA, SB, SC, SD, 26, K2VALUE) + ROUND_F2(SD, SE, SA, SB, SC, 27, K2VALUE) + ROUND_F2(SC, SD, SE, SA, SB, 28, K2VALUE) + ROUND_F2(SB, SC, SD, SE, SA, 29, K2VALUE) + + ROUND_F2(SA, SB, SC, SD, SE, 30, K2VALUE) + ROUND_F2(SE, SA, SB, SC, SD, 31, K2VALUE) + ROUND_F2(SD, SE, SA, SB, SC, 32, K2VALUE) + ROUND_F2(SC, SD, SE, SA, SB, 33, K2VALUE) + ROUND_F2(SB, SC, SD, SE, SA, 34, K2VALUE) + + ROUND_F2(SA, SB, SC, SD, SE, 35, K2VALUE) + ROUND_F2(SE, SA, SB, SC, SD, 36, K2VALUE) + ROUND_F2(SD, SE, SA, SB, SC, 37, K2VALUE) + ROUND_F2(SC, SD, SE, SA, SB, 38, K2VALUE) + ROUND_F2(SB, SC, SD, SE, SA, 39, K2VALUE) + movl K3VALUE, KVALUE EXPAND(40) ROUND_F3(SA, SB, SC, SD, SE) EXPAND(41) ROUND_F3(SE, SA, SB, SC, SD) @@ -302,30 +294,29 @@ PROLOGUE(_nettle_sha1_compress) EXPAND(58) ROUND_F3(SC, SD, SE, SA, SB) EXPAND(59) ROUND_F3(SB, SC, SD, SE, SA) - movl K4VALUE, KVALUE - EXPAND(60) ROUND(SA, SB, SC, SD, SE, <F2>) - EXPAND(61) ROUND(SE, SA, SB, SC, SD, <F2>) - EXPAND(62) ROUND(SD, SE, SA, SB, SC, <F2>) - EXPAND(63) ROUND(SC, SD, SE, SA, SB, <F2>) - EXPAND(64) ROUND(SB, SC, SD, SE, SA, <F2>) - - EXPAND(65) ROUND(SA, SB, SC, SD, SE, <F2>) - EXPAND(66) ROUND(SE, SA, SB, SC, SD, <F2>) - EXPAND(67) ROUND(SD, SE, SA, SB, SC, <F2>) - EXPAND(68) ROUND(SC, SD, SE, SA, SB, <F2>) - EXPAND(69) ROUND(SB, SC, SD, SE, SA, <F2>) - - EXPAND(70) ROUND(SA, SB, SC, SD, SE, <F2>) - EXPAND(71) ROUND(SE, SA, SB, SC, SD, <F2>) - EXPAND(72) ROUND(SD, SE, SA, SB, SC, <F2>) - EXPAND(73) ROUND(SC, SD, SE, SA, SB, <F2>) - EXPAND(74) ROUND(SB, SC, SD, SE, SA, <F2>) - - EXPAND(75) ROUND(SA, SB, SC, SD, SE, <F2>) - EXPAND(76) ROUND(SE, SA, SB, SC, SD, <F2>) - EXPAND(77) ROUND(SD, SE, SA, SB, SC, <F2>) - EXPAND(78) ROUND(SC, SD, SE, SA, SB, <F2>) - EXPAND(79) ROUND(SB, SC, SD, SE, SA, <F2>) + ROUND_F2(SA, SB, SC, SD, SE, 60, K4VALUE) + ROUND_F2(SE, SA, SB, SC, SD, 61, K4VALUE) + ROUND_F2(SD, SE, SA, SB, SC, 62, K4VALUE) + ROUND_F2(SC, SD, SE, SA, SB, 63, K4VALUE) + ROUND_F2(SB, SC, SD, SE, SA, 64, K4VALUE) + + ROUND_F2(SA, SB, SC, SD, SE, 65, K4VALUE) + ROUND_F2(SE, SA, SB, SC, SD, 66, K4VALUE) + ROUND_F2(SD, SE, SA, SB, SC, 67, K4VALUE) + ROUND_F2(SC, SD, SE, SA, SB, 68, K4VALUE) + ROUND_F2(SB, SC, SD, SE, SA, 69, K4VALUE) + + ROUND_F2(SA, SB, SC, SD, SE, 70, K4VALUE) + ROUND_F2(SE, SA, SB, SC, SD, 71, K4VALUE) + ROUND_F2(SD, SE, SA, SB, SC, 72, K4VALUE) + ROUND_F2(SC, SD, SE, SA, SB, 73, K4VALUE) + ROUND_F2(SB, SC, SD, SE, SA, 74, K4VALUE) + + ROUND_F2(SA, SB, SC, SD, SE, 75, K4VALUE) + ROUND_F2(SE, SA, SB, SC, SD, 76, K4VALUE) + ROUND_F2(SD, SE, SA, SB, SC, 77, K4VALUE) + ROUND_F2(SC, SD, SE, SA, SB, 78, K4VALUE) + ROUND_F2(SB, SC, SD, SE, SA, 79, K4VALUE) C Update the state vector movl 84(%esp),T1