]> git.ipfire.org Git - thirdparty/nettle.git/commitdiff
Use ROTL32 in the cast128 code.
authorNiels Möller <nisse@lysator.liu.se>
Sat, 31 Mar 2012 19:34:44 +0000 (21:34 +0200)
committerNiels Möller <nisse@lysator.liu.se>
Sat, 31 Mar 2012 19:34:44 +0000 (21:34 +0200)
ChangeLog
cast128.c

index 0eaa67180ef6e80a2ccacc27f4d6853205f5108b..36191aecd4ff49b0615f0a8091ecf1d14ef01094 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -10,6 +10,9 @@
        (ROL128): ... old name.
        * camellia-crypt-internal.c: Updated for renamed rotation macros.
        * camellia-set-encrypt-key.c: Likewise.
+       * cast128.c (ROL): Deleted macro.
+       (F1, F2, F3): Updated to use ROTL32 (reversed order of arguments).
+       Also added proper do { ... } while (0) wrappers.
 
 2012-03-30  Niels Möller  <nisse@lysator.liu.se>
 
index 81c00b24169e2869822a4a4f1b038874eb801ef9..4345b74d2cd41853dc90f9d1afe4a7f4bcf97e0b 100644 (file)
--- a/cast128.c
+++ b/cast128.c
 #define U8c(x) ( (uint8_t) ((x>>8)&0xff) )
 #define U8d(x) ( (uint8_t) ((x)&0xff) )
 
-/* Circular left shift */
-#define ROL(x, n) ( ((x)<<(n)) | ((x)>>(32-(n))) )
-
 /* CAST-128 uses three different round functions */
-#define F1(l, r, i) \
-       t = ROL(ctx->keys[i] + r, ctx->keys[i+16]); \
-       l ^= ((cast_sbox1[U8a(t)] ^ cast_sbox2[U8b(t)]) \
-        - cast_sbox3[U8c(t)]) + cast_sbox4[U8d(t)];
-#define F2(l, r, i) \
-       t = ROL(ctx->keys[i] ^ r, ctx->keys[i+16]); \
-       l ^= ((cast_sbox1[U8a(t)] - cast_sbox2[U8b(t)]) \
-        + cast_sbox3[U8c(t)]) ^ cast_sbox4[U8d(t)];
-#define F3(l, r, i) \
-       t = ROL(ctx->keys[i] - r, ctx->keys[i+16]); \
-       l ^= ((cast_sbox1[U8a(t)] + cast_sbox2[U8b(t)]) \
-        ^ cast_sbox3[U8c(t)]) - cast_sbox4[U8d(t)];
+#define F1(l, r, i) do {                               \
+    t = ROTL32(ctx->keys[i+16], ctx->keys[i] + r);     \
+    l ^= ((cast_sbox1[U8a(t)] ^ cast_sbox2[U8b(t)])    \
+         - cast_sbox3[U8c(t)]) + cast_sbox4[U8d(t)];   \
+  } while (0)
+#define F2(l, r, i) do {                               \
+    t = ROTL32( ctx->keys[i+16], ctx->keys[i] ^ r);    \
+    l ^= ((cast_sbox1[U8a(t)] - cast_sbox2[U8b(t)])    \
+         + cast_sbox3[U8c(t)]) ^ cast_sbox4[U8d(t)];   \
+  } while (0)
+#define F3(l, r, i) do { \
+    t = ROTL32(ctx->keys[i+16], ctx->keys[i] - r);     \
+    l ^= ((cast_sbox1[U8a(t)] + cast_sbox2[U8b(t)])    \
+         ^ cast_sbox3[U8c(t)]) - cast_sbox4[U8d(t)];   \
+  } while (0)
 
 
 /***** Encryption Function *****/