]> git.ipfire.org Git - thirdparty/nettle.git/commitdiff
(AES_ROUND, AES_FINAL_ROUND): New macros.
authorNiels Möller <nisse@lysator.liu.se>
Fri, 14 Oct 2005 13:30:57 +0000 (15:30 +0200)
committerNiels Möller <nisse@lysator.liu.se>
Fri, 14 Oct 2005 13:30:57 +0000 (15:30 +0200)
Rev: src/nettle/aes-internal.h:1.10

aes-internal.h

index 2b7f06f7711e34ee20ea58a03d70d740d974d601..183ef2abdf46b7a9b9d5efaac4d286f6a273b353 100644 (file)
@@ -39,9 +39,6 @@
 # define AES_TABLE_SIZE 4
 #endif
 
-/* Name mangling */
-#define _aes_crypt _nettle_aes_crypt
-
 /* Assembler code using the table should get link errors if linked
  * against a small table. */
 #if AES_SMALL
@@ -70,10 +67,16 @@ struct aes_table
 };
 
 void
-_aes_crypt(const struct aes_ctx *ctx,
-          const struct aes_table *T,
-          unsigned length, uint8_t *dst,
-          const uint8_t *src);
+_nettle_aes_crypt(const struct aes_ctx *ctx,
+                 const struct aes_table *T,
+                 unsigned length, uint8_t *dst,
+                 const uint8_t *src);
+
+void
+_nettle_aes_encrypt(const struct aes_ctx *ctx,
+                   const struct aes_table *T,
+                   unsigned length, uint8_t *dst,
+                   const uint8_t *src);
 
 /* Macros */
 #define ROTBYTE(x) (((x) >> 8) | (((x) & 0xff) << 24))
@@ -83,6 +86,24 @@ _aes_crypt(const struct aes_ctx *ctx,
                         ((box)[(((x) >> 16) & 0xff)] << 16) | \
                         ((box)[(((x) >> 24) & 0xff)] << 24))
 
+/* Get the byte with index 0, 1, 2 and 3 */
+#define B0(x) ((x) & 0xff)
+#define B1(x) (((x) >> 8) & 0xff)
+#define B2(x) (((x) >> 16) & 0xff)
+#define B3(x) (((x) >> 24) & 0xff)
+
+#define AES_ROUND(T, w0, w1, w2, w3, k)                \
+((  T->table[0][ B0(w0) ]                      \
+  ^ T->table[1][ B1(w1) ]                      \
+  ^ T->table[2][ B2(w2) ]                      \
+  ^ T->table[3][ B3(w3) ]) ^ (k))
+
+#define AES_FINAL_ROUND(T, w0, w1, w2, w3, k)          \
+((   (uint32_t) T->sbox[ B0(w0) ]                      \
+  | ((uint32_t) T->sbox[ B1(w1) ] << 8)                        \
+  | ((uint32_t) T->sbox[ B2(w2) ] << 16)               \
+  | ((uint32_t) T->sbox[ B3(w3) ] << 24)) ^ (k))
+     
 /* Internal tables */
 extern const struct aes_table _aes_encrypt_table;
 extern const struct aes_table _aes_decrypt_table;