]> git.ipfire.org Git - thirdparty/nettle.git/commitdiff
(AES_SUBST_BYTE): New macro.
authorNiels Möller <nisse@lysator.liu.se>
Tue, 14 May 2002 22:44:05 +0000 (00:44 +0200)
committerNiels Möller <nisse@lysator.liu.se>
Tue, 14 May 2002 22:44:05 +0000 (00:44 +0200)
Rev: src/nettle/x86/machine.m4:1.6

x86/machine.m4

index d7bccadebecd61ea1768a409af50f80193359f28..91cc3eb92545a6e54114ec36f4838ebf5ac52b1e 100644 (file)
@@ -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(<AES_LAST_ROUND>, <
+       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(<AES_LAST_ROUND>, <
        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(<AES_SUBST_BYTE>, <
+       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