diff --git a/x86/sha1-compress.asm b/x86/sha1-compress.asm index 2856098d8e1189ab45d120196d84e9951eba91f2..850a140e7b8db81d9729d1407d4d369ecc975c64 100644 --- a/x86/sha1-compress.asm +++ b/x86/sha1-compress.asm @@ -27,11 +27,13 @@ define(<DATA>,<%esi>) define(<TMP>,<%edi>) C Extra temporary needed by F3. Can we get rid of it? define(<TMP2>,<(%esp)>) +define(<K>, <4(%esp)>)dnl C Constants -define(<K1>, <<$>0x5A827999>) C Rounds 0-19 -define(<K2>, <<$>0x6ED9EBA1>) C Rounds 20-39 -define(<K3>, <<$>0x8F1BBCDC>) C Rounds 40-59 -define(<K4>, <<$>0xCA62C1D6>) C Rounds 60-79 +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 + C expand(i) is the expansion function C C W[i] = (W[i - 16] ^ W[i - 14] ^ W[i - 8] ^ W[i - 3]) <<< 1 @@ -93,10 +95,10 @@ C C e += a <<< 5 + f( b, c, d ) + k + w; C b <<<= 30 C -C round(a,b,c,d,e,f,k,w) +C round(a,b,c,d,e,f,w) define(<round>, < + addl K, $5 addl $7, $5 - addl $8, $5 $6($2,$3,$4) addl TMP, $5 movl $1, TMP @@ -116,130 +118,132 @@ define(<round>, < _nettle_sha1_compress: C save all registers that need to be saved - pushl %ebx C 16(%esp) - pushl %ebp C 12(%esp) - pushl %esi C 8(%esp) - pushl %edi C 4(%esp) + pushl %ebx C 20(%esp) + pushl %ebp C 16(%esp) + pushl %esi C 12(%esp) + pushl %edi C 8(%esp) + + pushl K1VALUE C 4(%esp) subl $4, %esp C 0(%esp) = TMP C load the state vector - movl 24(%esp),TMP + movl 28(%esp),TMP movl (TMP), SA movl 4(TMP), SB movl 8(TMP), SC movl 12(TMP), SD movl 16(TMP), SE - movl 28(%esp), DATA - - round(SA, SB, SC, SD, SE, <F1>, K1, NOEXPAND( 0)) - round(SE, SA, SB, SC, SD, <F1>, K1, NOEXPAND( 1)) - round(SD, SE, SA, SB, SC, <F1>, K1, NOEXPAND( 2)) - round(SC, SD, SE, SA, SB, <F1>, K1, NOEXPAND( 3)) - round(SB, SC, SD, SE, SA, <F1>, K1, NOEXPAND( 4)) - - round(SA, SB, SC, SD, SE, <F1>, K1, NOEXPAND( 5)) - round(SE, SA, SB, SC, SD, <F1>, K1, NOEXPAND( 6)) - round(SD, SE, SA, SB, SC, <F1>, K1, NOEXPAND( 7)) - round(SC, SD, SE, SA, SB, <F1>, K1, NOEXPAND( 8)) - round(SB, SC, SD, SE, SA, <F1>, K1, NOEXPAND( 9)) - - round(SA, SB, SC, SD, SE, <F1>, K1, NOEXPAND(10)) - round(SE, SA, SB, SC, SD, <F1>, K1, NOEXPAND(11)) - round(SD, SE, SA, SB, SC, <F1>, K1, NOEXPAND(12)) - round(SC, SD, SE, SA, SB, <F1>, K1, NOEXPAND(13)) - round(SB, SC, SD, SE, SA, <F1>, K1, NOEXPAND(14)) - - round(SA, SB, SC, SD, SE, <F1>, K1, NOEXPAND(15)) - EXPAND(16) round(SE, SA, SB, SC, SD, <F1>, K1, TMP) - EXPAND(17) round(SD, SE, SA, SB, SC, <F1>, K1, TMP) - EXPAND(18) round(SC, SD, SE, SA, SB, <F1>, K1, TMP) - EXPAND(19) round(SB, SC, SD, SE, SA, <F1>, K1, TMP) - - - EXPAND(20) round(SA, SB, SC, SD, SE, <F2>, K2, TMP) - EXPAND(21) round(SE, SA, SB, SC, SD, <F2>, K2, TMP) - EXPAND(22) round(SD, SE, SA, SB, SC, <F2>, K2, TMP) - EXPAND(23) round(SC, SD, SE, SA, SB, <F2>, K2, TMP) - EXPAND(24) round(SB, SC, SD, SE, SA, <F2>, K2, TMP) - - EXPAND(25) round(SA, SB, SC, SD, SE, <F2>, K2, TMP) - EXPAND(26) round(SE, SA, SB, SC, SD, <F2>, K2, TMP) - EXPAND(27) round(SD, SE, SA, SB, SC, <F2>, K2, TMP) - EXPAND(28) round(SC, SD, SE, SA, SB, <F2>, K2, TMP) - EXPAND(29) round(SB, SC, SD, SE, SA, <F2>, K2, TMP) - - EXPAND(30) round(SA, SB, SC, SD, SE, <F2>, K2, TMP) - EXPAND(31) round(SE, SA, SB, SC, SD, <F2>, K2, TMP) - EXPAND(32) round(SD, SE, SA, SB, SC, <F2>, K2, TMP) - EXPAND(33) round(SC, SD, SE, SA, SB, <F2>, K2, TMP) - EXPAND(34) round(SB, SC, SD, SE, SA, <F2>, K2, TMP) - - EXPAND(35) round(SA, SB, SC, SD, SE, <F2>, K2, TMP) - EXPAND(36) round(SE, SA, SB, SC, SD, <F2>, K2, TMP) - EXPAND(37) round(SD, SE, SA, SB, SC, <F2>, K2, TMP) - EXPAND(38) round(SC, SD, SE, SA, SB, <F2>, K2, TMP) - EXPAND(39) round(SB, SC, SD, SE, SA, <F2>, K2, TMP) - - - EXPAND(40) round(SA, SB, SC, SD, SE, <F3>, K3, TMP) - EXPAND(41) round(SE, SA, SB, SC, SD, <F3>, K3, TMP) - EXPAND(42) round(SD, SE, SA, SB, SC, <F3>, K3, TMP) - EXPAND(43) round(SC, SD, SE, SA, SB, <F3>, K3, TMP) - EXPAND(44) round(SB, SC, SD, SE, SA, <F3>, K3, TMP) - - EXPAND(45) round(SA, SB, SC, SD, SE, <F3>, K3, TMP) - EXPAND(46) round(SE, SA, SB, SC, SD, <F3>, K3, TMP) - EXPAND(47) round(SD, SE, SA, SB, SC, <F3>, K3, TMP) - EXPAND(48) round(SC, SD, SE, SA, SB, <F3>, K3, TMP) - EXPAND(49) round(SB, SC, SD, SE, SA, <F3>, K3, TMP) - - EXPAND(50) round(SA, SB, SC, SD, SE, <F3>, K3, TMP) - EXPAND(51) round(SE, SA, SB, SC, SD, <F3>, K3, TMP) - EXPAND(52) round(SD, SE, SA, SB, SC, <F3>, K3, TMP) - EXPAND(53) round(SC, SD, SE, SA, SB, <F3>, K3, TMP) - EXPAND(54) round(SB, SC, SD, SE, SA, <F3>, K3, TMP) - - EXPAND(55) round(SA, SB, SC, SD, SE, <F3>, K3, TMP) - EXPAND(56) round(SE, SA, SB, SC, SD, <F3>, K3, TMP) - EXPAND(57) round(SD, SE, SA, SB, SC, <F3>, K3, TMP) - EXPAND(58) round(SC, SD, SE, SA, SB, <F3>, K3, TMP) - EXPAND(59) round(SB, SC, SD, SE, SA, <F3>, K3, TMP) - - - EXPAND(60) round(SA, SB, SC, SD, SE, <F2>, K4, TMP) - EXPAND(61) round(SE, SA, SB, SC, SD, <F2>, K4, TMP) - EXPAND(62) round(SD, SE, SA, SB, SC, <F2>, K4, TMP) - EXPAND(63) round(SC, SD, SE, SA, SB, <F2>, K4, TMP) - EXPAND(64) round(SB, SC, SD, SE, SA, <F2>, K4, TMP) - - EXPAND(65) round(SA, SB, SC, SD, SE, <F2>, K4, TMP) - EXPAND(66) round(SE, SA, SB, SC, SD, <F2>, K4, TMP) - EXPAND(67) round(SD, SE, SA, SB, SC, <F2>, K4, TMP) - EXPAND(68) round(SC, SD, SE, SA, SB, <F2>, K4, TMP) - EXPAND(69) round(SB, SC, SD, SE, SA, <F2>, K4, TMP) - - EXPAND(70) round(SA, SB, SC, SD, SE, <F2>, K4, TMP) - EXPAND(71) round(SE, SA, SB, SC, SD, <F2>, K4, TMP) - EXPAND(72) round(SD, SE, SA, SB, SC, <F2>, K4, TMP) - EXPAND(73) round(SC, SD, SE, SA, SB, <F2>, K4, TMP) - EXPAND(74) round(SB, SC, SD, SE, SA, <F2>, K4, TMP) - - EXPAND(75) round(SA, SB, SC, SD, SE, <F2>, K4, TMP) - EXPAND(76) round(SE, SA, SB, SC, SD, <F2>, K4, TMP) - EXPAND(77) round(SD, SE, SA, SB, SC, <F2>, K4, TMP) - EXPAND(78) round(SC, SD, SE, SA, SB, <F2>, K4, TMP) - EXPAND(79) round(SB, SC, SD, SE, SA, <F2>, K4, TMP) + movl 32(%esp), DATA + + round(SA, SB, SC, SD, SE, <F1>, NOEXPAND( 0)) + round(SE, SA, SB, SC, SD, <F1>, NOEXPAND( 1)) + round(SD, SE, SA, SB, SC, <F1>, NOEXPAND( 2)) + round(SC, SD, SE, SA, SB, <F1>, NOEXPAND( 3)) + round(SB, SC, SD, SE, SA, <F1>, NOEXPAND( 4)) + + round(SA, SB, SC, SD, SE, <F1>, NOEXPAND( 5)) + round(SE, SA, SB, SC, SD, <F1>, NOEXPAND( 6)) + round(SD, SE, SA, SB, SC, <F1>, NOEXPAND( 7)) + round(SC, SD, SE, SA, SB, <F1>, NOEXPAND( 8)) + round(SB, SC, SD, SE, SA, <F1>, NOEXPAND( 9)) + + round(SA, SB, SC, SD, SE, <F1>, NOEXPAND(10)) + round(SE, SA, SB, SC, SD, <F1>, NOEXPAND(11)) + round(SD, SE, SA, SB, SC, <F1>, NOEXPAND(12)) + round(SC, SD, SE, SA, SB, <F1>, NOEXPAND(13)) + round(SB, SC, SD, SE, SA, <F1>, NOEXPAND(14)) + + round(SA, SB, SC, SD, SE, <F1>, NOEXPAND(15)) + EXPAND(16) round(SE, SA, SB, SC, SD, <F1>, TMP) + EXPAND(17) round(SD, SE, SA, SB, SC, <F1>, TMP) + EXPAND(18) round(SC, SD, SE, SA, SB, <F1>, TMP) + EXPAND(19) round(SB, SC, SD, SE, SA, <F1>, TMP) + + movl K2VALUE, K + EXPAND(20) round(SA, SB, SC, SD, SE, <F2>, TMP) + EXPAND(21) round(SE, SA, SB, SC, SD, <F2>, TMP) + EXPAND(22) round(SD, SE, SA, SB, SC, <F2>, TMP) + EXPAND(23) round(SC, SD, SE, SA, SB, <F2>, TMP) + EXPAND(24) round(SB, SC, SD, SE, SA, <F2>, TMP) + + EXPAND(25) round(SA, SB, SC, SD, SE, <F2>, TMP) + EXPAND(26) round(SE, SA, SB, SC, SD, <F2>, TMP) + EXPAND(27) round(SD, SE, SA, SB, SC, <F2>, TMP) + EXPAND(28) round(SC, SD, SE, SA, SB, <F2>, TMP) + EXPAND(29) round(SB, SC, SD, SE, SA, <F2>, TMP) + + EXPAND(30) round(SA, SB, SC, SD, SE, <F2>, TMP) + EXPAND(31) round(SE, SA, SB, SC, SD, <F2>, TMP) + EXPAND(32) round(SD, SE, SA, SB, SC, <F2>, TMP) + EXPAND(33) round(SC, SD, SE, SA, SB, <F2>, TMP) + EXPAND(34) round(SB, SC, SD, SE, SA, <F2>, TMP) + + EXPAND(35) round(SA, SB, SC, SD, SE, <F2>, TMP) + EXPAND(36) round(SE, SA, SB, SC, SD, <F2>, TMP) + EXPAND(37) round(SD, SE, SA, SB, SC, <F2>, TMP) + EXPAND(38) round(SC, SD, SE, SA, SB, <F2>, TMP) + EXPAND(39) round(SB, SC, SD, SE, SA, <F2>, TMP) + + movl K3VALUE, K + EXPAND(40) round(SA, SB, SC, SD, SE, <F3>, TMP) + EXPAND(41) round(SE, SA, SB, SC, SD, <F3>, TMP) + EXPAND(42) round(SD, SE, SA, SB, SC, <F3>, TMP) + EXPAND(43) round(SC, SD, SE, SA, SB, <F3>, TMP) + EXPAND(44) round(SB, SC, SD, SE, SA, <F3>, TMP) + + EXPAND(45) round(SA, SB, SC, SD, SE, <F3>, TMP) + EXPAND(46) round(SE, SA, SB, SC, SD, <F3>, TMP) + EXPAND(47) round(SD, SE, SA, SB, SC, <F3>, TMP) + EXPAND(48) round(SC, SD, SE, SA, SB, <F3>, TMP) + EXPAND(49) round(SB, SC, SD, SE, SA, <F3>, TMP) + + EXPAND(50) round(SA, SB, SC, SD, SE, <F3>, TMP) + EXPAND(51) round(SE, SA, SB, SC, SD, <F3>, TMP) + EXPAND(52) round(SD, SE, SA, SB, SC, <F3>, TMP) + EXPAND(53) round(SC, SD, SE, SA, SB, <F3>, TMP) + EXPAND(54) round(SB, SC, SD, SE, SA, <F3>, TMP) + + EXPAND(55) round(SA, SB, SC, SD, SE, <F3>, TMP) + EXPAND(56) round(SE, SA, SB, SC, SD, <F3>, TMP) + EXPAND(57) round(SD, SE, SA, SB, SC, <F3>, TMP) + EXPAND(58) round(SC, SD, SE, SA, SB, <F3>, TMP) + EXPAND(59) round(SB, SC, SD, SE, SA, <F3>, TMP) + + movl K4VALUE, K + EXPAND(60) round(SA, SB, SC, SD, SE, <F2>, TMP) + EXPAND(61) round(SE, SA, SB, SC, SD, <F2>, TMP) + EXPAND(62) round(SD, SE, SA, SB, SC, <F2>, TMP) + EXPAND(63) round(SC, SD, SE, SA, SB, <F2>, TMP) + EXPAND(64) round(SB, SC, SD, SE, SA, <F2>, TMP) + + EXPAND(65) round(SA, SB, SC, SD, SE, <F2>, TMP) + EXPAND(66) round(SE, SA, SB, SC, SD, <F2>, TMP) + EXPAND(67) round(SD, SE, SA, SB, SC, <F2>, TMP) + EXPAND(68) round(SC, SD, SE, SA, SB, <F2>, TMP) + EXPAND(69) round(SB, SC, SD, SE, SA, <F2>, TMP) + + EXPAND(70) round(SA, SB, SC, SD, SE, <F2>, TMP) + EXPAND(71) round(SE, SA, SB, SC, SD, <F2>, TMP) + EXPAND(72) round(SD, SE, SA, SB, SC, <F2>, TMP) + EXPAND(73) round(SC, SD, SE, SA, SB, <F2>, TMP) + EXPAND(74) round(SB, SC, SD, SE, SA, <F2>, TMP) + + EXPAND(75) round(SA, SB, SC, SD, SE, <F2>, TMP) + EXPAND(76) round(SE, SA, SB, SC, SD, <F2>, TMP) + EXPAND(77) round(SD, SE, SA, SB, SC, <F2>, TMP) + EXPAND(78) round(SC, SD, SE, SA, SB, <F2>, TMP) + EXPAND(79) round(SB, SC, SD, SE, SA, <F2>, TMP) C Update the state vector - movl 24(%esp),TMP + movl 28(%esp),TMP addl SA, (TMP) addl SB, 4(TMP) addl SC, 8(TMP) addl SD, 12(TMP) addl SE, 16(TMP) - addl $4, %esp + addl $8, %esp popl %edi popl %esi popl %ebp