Mailing List Archive

serpent fix for sparc64
Hi!

Following diff fixes serpent on sparc64/OpenBSD. (please cc me in
answers, as I am not subscribed)

--- cipher/serpent.c.orig Mon Jun 21 17:49:22 2004
+++ cipher/serpent.c Mon Jun 21 17:50:05 2004
@@ -78,8 +78,8 @@ typedef struct serpent_context

#define SBOX0(a, b, c, d, w, x, y, z) \
{ \
- register unsigned long t02, t03, t05, t06, t07, t08, t09; \
- register unsigned long t11, t12, t13, t14, t15, t17, t01; \
+ register u32_t t02, t03, t05, t06, t07, t08, t09; \
+ register u32_t t11, t12, t13, t14, t15, t17, t01; \
t01 = b ^ c ; \
t02 = a | d ; \
t03 = a ^ b ; \
@@ -102,8 +102,8 @@ typedef struct serpent_context

#define SBOX0_INVERSE(a, b, c, d, w, x, y, z) \
{ \
- register unsigned long t02, t03, t04, t05, t06, t08, t09, t10; \
- register unsigned long t12, t13, t14, t15, t17, t18, t01; \
+ register u32_t t02, t03, t04, t05, t06, t08, t09, t10; \
+ register u32_t t12, t13, t14, t15, t17, t18, t01; \
t01 = c ^ d ; \
t02 = a | b ; \
t03 = b | c ; \
@@ -127,8 +127,8 @@ typedef struct serpent_context

#define SBOX1(a, b, c, d, w, x, y, z) \
{ \
- register unsigned long t02, t03, t04, t05, t06, t07, t08; \
- register unsigned long t10, t11, t12, t13, t16, t17, t01; \
+ register u32_t t02, t03, t04, t05, t06, t07, t08; \
+ register u32_t t10, t11, t12, t13, t16, t17, t01; \
t01 = a | d ; \
t02 = c ^ d ; \
t03 = ~ b ; \
@@ -151,8 +151,8 @@ typedef struct serpent_context

#define SBOX1_INVERSE(a, b, c, d, w, x, y, z) \
{ \
- register unsigned long t02, t03, t04, t05, t06, t07, t08; \
- register unsigned long t09, t10, t11, t14, t15, t17, t01; \
+ register u32_t t02, t03, t04, t05, t06, t07, t08; \
+ register u32_t t09, t10, t11, t14, t15, t17, t01; \
t01 = a ^ b ; \
t02 = b | d ; \
t03 = a & c ; \
@@ -175,8 +175,8 @@ typedef struct serpent_context

#define SBOX2(a, b, c, d, w, x, y, z) \
{ \
- register unsigned long t02, t03, t05, t06, t07, t08; \
- register unsigned long t09, t10, t12, t13, t14, t01; \
+ register u32_t t02, t03, t05, t06, t07, t08; \
+ register u32_t t09, t10, t12, t13, t14, t01; \
t01 = a | c ; \
t02 = a ^ b ; \
t03 = d ^ t01; \
@@ -197,8 +197,8 @@ typedef struct serpent_context

#define SBOX2_INVERSE(a, b, c, d, w, x, y, z) \
{ \
- register unsigned long t02, t03, t04, t06, t07, t08, t09; \
- register unsigned long t10, t11, t12, t15, t16, t17, t01; \
+ register u32_t t02, t03, t04, t06, t07, t08, t09; \
+ register u32_t t10, t11, t12, t15, t16, t17, t01; \
t01 = a ^ d ; \
t02 = c ^ d ; \
t03 = a & c ; \
@@ -221,8 +221,8 @@ typedef struct serpent_context

#define SBOX3(a, b, c, d, w, x, y, z) \
{ \
- register unsigned long t02, t03, t04, t05, t06, t07, t08; \
- register unsigned long t09, t10, t11, t13, t14, t15, t01; \
+ register u32_t t02, t03, t04, t05, t06, t07, t08; \
+ register u32_t t09, t10, t11, t13, t14, t15, t01; \
t01 = a ^ c ; \
t02 = a | d ; \
t03 = a & d ; \
@@ -245,8 +245,8 @@ typedef struct serpent_context

#define SBOX3_INVERSE(a, b, c, d, w, x, y, z) \
{ \
- register unsigned long t02, t03, t04, t05, t06, t07, t09; \
- register unsigned long t11, t12, t13, t14, t16, t01; \
+ register u32_t t02, t03, t04, t05, t06, t07, t09; \
+ register u32_t t11, t12, t13, t14, t16, t01; \
t01 = c | d ; \
t02 = a | d ; \
t03 = c ^ t02; \
@@ -268,8 +268,8 @@ typedef struct serpent_context

#define SBOX4(a, b, c, d, w, x, y, z) \
{ \
- register unsigned long t02, t03, t04, t05, t06, t08, t09; \
- register unsigned long t10, t11, t12, t13, t14, t15, t16, t01; \
+ register u32_t t02, t03, t04, t05, t06, t08, t09; \
+ register u32_t t10, t11, t12, t13, t14, t15, t16, t01; \
t01 = a | b ; \
t02 = b | c ; \
t03 = a ^ t02; \
@@ -293,8 +293,8 @@ typedef struct serpent_context

#define SBOX4_INVERSE(a, b, c, d, w, x, y, z) \
{ \
- register unsigned long t02, t03, t04, t05, t06, t07, t09; \
- register unsigned long t10, t11, t12, t13, t15, t01; \
+ register u32_t t02, t03, t04, t05, t06, t07, t09; \
+ register u32_t t10, t11, t12, t13, t15, t01; \
t01 = b | d ; \
t02 = c | d ; \
t03 = a & t01; \
@@ -316,8 +316,8 @@ typedef struct serpent_context

#define SBOX5(a, b, c, d, w, x, y, z) \
{ \
- register unsigned long t02, t03, t04, t05, t07, t08, t09; \
- register unsigned long t10, t11, t12, t13, t14, t01; \
+ register u32_t t02, t03, t04, t05, t07, t08, t09; \
+ register u32_t t10, t11, t12, t13, t14, t01; \
t01 = b ^ d ; \
t02 = b | d ; \
t03 = a & t01; \
@@ -339,8 +339,8 @@ typedef struct serpent_context

#define SBOX5_INVERSE(a, b, c, d, w, x, y, z) \
{ \
- register unsigned long t02, t03, t04, t05, t07, t08, t09; \
- register unsigned long t10, t12, t13, t15, t16, t01; \
+ register u32_t t02, t03, t04, t05, t07, t08, t09; \
+ register u32_t t10, t12, t13, t15, t16, t01; \
t01 = a & d ; \
t02 = c ^ t01; \
t03 = a ^ d ; \
@@ -362,8 +362,8 @@ typedef struct serpent_context

#define SBOX6(a, b, c, d, w, x, y, z) \
{ \
- register unsigned long t02, t03, t04, t05, t07, t08, t09, t10; \
- register unsigned long t11, t12, t13, t15, t17, t18, t01; \
+ register u32_t t02, t03, t04, t05, t07, t08, t09, t10; \
+ register u32_t t11, t12, t13, t15, t17, t18, t01; \
t01 = a & d ; \
t02 = b ^ c ; \
t03 = a ^ d ; \
@@ -387,8 +387,8 @@ typedef struct serpent_context

#define SBOX6_INVERSE(a, b, c, d, w, x, y, z) \
{ \
- register unsigned long t02, t03, t04, t05, t06, t07, t08, t09; \
- register unsigned long t12, t13, t14, t15, t16, t17, t01; \
+ register u32_t t02, t03, t04, t05, t06, t07, t08, t09; \
+ register u32_t t12, t13, t14, t15, t16, t17, t01; \
t01 = a ^ c ; \
t02 = ~ c ; \
t03 = b & t01; \
@@ -412,8 +412,8 @@ typedef struct serpent_context

#define SBOX7(a, b, c, d, w, x, y, z) \
{ \
- register unsigned long t02, t03, t04, t05, t06, t08, t09, t10; \
- register unsigned long t11, t13, t14, t15, t16, t17, t01; \
+ register u32_t t02, t03, t04, t05, t06, t08, t09, t10; \
+ register u32_t t11, t13, t14, t15, t16, t17, t01; \
t01 = a & c ; \
t02 = ~ d ; \
t03 = a & t02; \
@@ -437,8 +437,8 @@ typedef struct serpent_context

#define SBOX7_INVERSE(a, b, c, d, w, x, y, z) \
{ \
- register unsigned long t02, t03, t04, t06, t07, t08, t09; \
- register unsigned long t10, t11, t13, t14, t15, t16, t01; \
+ register u32_t t02, t03, t04, t06, t07, t08, t09; \
+ register u32_t t10, t11, t13, t14, t15, t16, t01; \
t01 = a & b ; \
t02 = a | b ; \
t03 = c | t01; \
Re: serpent fix for sparc64 [ In reply to ]
At Tue, 22 Jun 2004 05:14:38 +0200, Nikolay Sturm wrote:

> Following diff fixes serpent on sparc64/OpenBSD. (please cc me in
> answers, as I am not subscribed)

Thanks, the patch is in CVS now.

moritz