From: Niels Möller Date: Tue, 14 May 2002 22:44:05 +0000 (+0200) Subject: (AES_SUBST_BYTE): New macro. X-Git-Tag: nettle_1.6_release_20021003~173 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=88c9cdb3d5982c27f34737a95dc66b30b58f11ef;p=thirdparty%2Fnettle.git (AES_SUBST_BYTE): New macro. Rev: src/nettle/x86/machine.m4:1.6 --- diff --git a/x86/machine.m4 b/x86/machine.m4 index d7bccade..91cc3eb9 100644 --- a/x86/machine.m4 +++ b/x86/machine.m4 @@ -54,6 +54,8 @@ dnl AES_LAST_ROUND(a, b, c, d) dnl Computes one word of the final round. Leaves result in %edi. dnl Note that we have to quote $ in constants. define(, < + C FIXME: Perform substitution on least significant byte here, + C to save work later. movl %e<>$1<>x,%edi andl <$>0x000000ff,%edi movl %e<>$2<>x,%ebp @@ -66,3 +68,27 @@ define(, < andl <$>0xff000000,%ebp orl %ebp,%edi>)dnl +dnl AES_SUBST_BYTE(table) +dnl Substitutes the least significant byte of +dnl each of eax, ebx, ecx and edx, and also rotates +dnl the words one byte to the left. +define(, < + movl %eax,%ebp + andl <$>0x000000ff,%ebp + movb AES_SBOX + $1 (%ebp),%al + roll <$>8,%eax + + movl %ebx,%ebp + andl <$>0x000000ff,%ebp + movb AES_SBOX + $1 (%ebp),%bl + roll <$>8,%ebx + + movl %ecx,%ebp + andl <$>0x000000ff,%ebp + movb AES_SBOX + $1 (%ebp),%cl + roll <$>8,%ecx + + movl %edx,%ebp + andl <$>0x000000ff,%ebp + movb AES_SBOX + $1 (%ebp),%dl + roll <$>8,%edx>)dnl