]>
Commit | Line | Data |
---|---|---|
c95735eb JB |
1 | --- Crypt-RC6-1.0/_rc6.c.orig 2002-03-16 22:54:10.000000000 +0000 |
2 | +++ Crypt-RC6-1.0/_rc6.c 2004-05-09 00:14:37.000000000 +0000 | |
3 | @@ -5,6 +5,14 @@ | |
4 | \r | |
5 | #include "platform.h"\r | |
6 | \r | |
7 | +#include <endian.h>\r | |
8 | +#if __BYTE_ORDER == __BIG_ENDIAN\r | |
9 | +# include <byteswap.h>\r | |
10 | +# define regswp(x) bswap_32(x)\r | |
11 | +#else\r | |
12 | +# define regswp(x) x\r | |
13 | +#endif\r | |
14 | +\r | |
15 | /*\r | |
16 | function: rc6_generateKeySchedule\r | |
17 | \r | |
18 | @@ -27,6 +35,8 @@ | |
19 | /* Move the bytes of initKey into L, little-endian fashion. */\r | |
20 | \r | |
21 | memcpy(bPtr, initKey, keyLength);\r | |
22 | + for(i=0; i<8; i++)\r | |
23 | + L[i] = regswp(L[i]);\r | |
24 | \r | |
25 | /* Set S[0] to the constant P32, then generate the rest of S. */\r | |
26 | \r | |
27 | @@ -61,10 +71,10 @@ | |
28 | \r | |
29 | regPtr = (unsigned char*)®s[0];\r | |
30 | memcpy(regPtr, input, 16);\r | |
31 | - A = regs[0]; /* Cook up A, B, C, and D as our four 32-bit registers. */\r | |
32 | - B = regs[1];\r | |
33 | - C = regs[2];\r | |
34 | - D = regs[3];\r | |
35 | + A = regswp(regs[0]); /* Cook up A, B, C, and D as our four 32-bit registers. */\r | |
36 | + B = regswp(regs[1]);\r | |
37 | + C = regswp(regs[2]);\r | |
38 | + D = regswp(regs[3]);\r | |
39 | B += S[0];\r | |
40 | D += S[1];\r | |
41 | for (j = 1; j <= 20; j++) /* Perform 20 rounds. */\r | |
42 | @@ -81,10 +91,10 @@ | |
43 | }\r | |
44 | A += S[42];\r | |
45 | C += S[43];\r | |
46 | - regs[0] = A;\r | |
47 | - regs[1] = B;\r | |
48 | - regs[2] = C;\r | |
49 | - regs[3] = D;\r | |
50 | + regs[0] = regswp(A);\r | |
51 | + regs[1] = regswp(B);\r | |
52 | + regs[2] = regswp(C);\r | |
53 | + regs[3] = regswp(D);\r | |
54 | memcpy(output, regPtr, 16);\r | |
55 | }\r | |
56 | \r | |
57 | @@ -104,10 +114,10 @@ | |
58 | \r | |
59 | regPtr = (unsigned char*)®s[0];\r | |
60 | memcpy(regPtr, input, 16);\r | |
61 | - A = regs[0];\r | |
62 | - B = regs[1];\r | |
63 | - C = regs[2];\r | |
64 | - D = regs[3];\r | |
65 | + A = regswp(regs[0]);\r | |
66 | + B = regswp(regs[1]);\r | |
67 | + C = regswp(regs[2]);\r | |
68 | + D = regswp(regs[3]);\r | |
69 | C -= S[43];\r | |
70 | A -= S[42];\r | |
71 | for (j = 20; j >= 1; j--)\r | |
72 | @@ -126,10 +136,10 @@ | |
73 | }\r | |
74 | D -= S[1];\r | |
75 | B -= S[0];\r | |
76 | - regs[0] = A;\r | |
77 | - regs[1] = B;\r | |
78 | - regs[2] = C;\r | |
79 | - regs[3] = D;\r | |
80 | + regs[0] = regswp(A);\r | |
81 | + regs[1] = regswp(B);\r | |
82 | + regs[2] = regswp(C);\r | |
83 | + regs[3] = regswp(D);\r | |
84 | memcpy(output, regPtr, 16);\r | |
85 | }\r | |
86 | \r |