diff options
author | Kevin Steves <stevesk@pobox.com> | 2001-02-05 12:42:17 +0000 |
---|---|---|
committer | Kevin Steves <stevesk@pobox.com> | 2001-02-05 12:42:17 +0000 |
commit | ef4eea9badfb65f05ac24f786b710cc3f27f0e43 (patch) | |
tree | f54abef181ccd6ad5285a5c16b4c159d8b74e932 /rijndael.c | |
parent | d2ddda4efab29fd8663757634773fa10e557e0f3 (diff) |
- stevesk@cvs.openbsd.org 2001/02/04 08:32:27
[many files; did this manually to our top-level source dir]
unexpand and remove end-of-line whitespace; ok markus@
Diffstat (limited to 'rijndael.c')
-rw-r--r-- | rijndael.c | 114 |
1 files changed, 57 insertions, 57 deletions
diff --git a/rijndael.c b/rijndael.c index 10c779b4c..aa32be514 100644 --- a/rijndael.c +++ b/rijndael.c | |||
@@ -54,7 +54,7 @@ void gen_tabs __P((void)); | |||
54 | 54 | ||
55 | #define bswap(x) ((rotl(x, 8) & 0x00ff00ff) | (rotr(x, 8) & 0xff00ff00)) | 55 | #define bswap(x) ((rotl(x, 8) & 0x00ff00ff) | (rotr(x, 8) & 0xff00ff00)) |
56 | 56 | ||
57 | /* Extract byte from a 32 bit quantity (little endian notation) */ | 57 | /* Extract byte from a 32 bit quantity (little endian notation) */ |
58 | 58 | ||
59 | #define byte(x,n) ((u1byte)((x) >> (8 * n))) | 59 | #define byte(x,n) ((u1byte)((x) >> (8 * n))) |
60 | 60 | ||
@@ -89,15 +89,15 @@ u4byte tab_gen = 0; | |||
89 | 89 | ||
90 | #define f_rn(bo, bi, n, k) \ | 90 | #define f_rn(bo, bi, n, k) \ |
91 | bo[n] = ft_tab[0][byte(bi[n],0)] ^ \ | 91 | bo[n] = ft_tab[0][byte(bi[n],0)] ^ \ |
92 | ft_tab[1][byte(bi[(n + 1) & 3],1)] ^ \ | 92 | ft_tab[1][byte(bi[(n + 1) & 3],1)] ^ \ |
93 | ft_tab[2][byte(bi[(n + 2) & 3],2)] ^ \ | 93 | ft_tab[2][byte(bi[(n + 2) & 3],2)] ^ \ |
94 | ft_tab[3][byte(bi[(n + 3) & 3],3)] ^ *(k + n) | 94 | ft_tab[3][byte(bi[(n + 3) & 3],3)] ^ *(k + n) |
95 | 95 | ||
96 | #define i_rn(bo, bi, n, k) \ | 96 | #define i_rn(bo, bi, n, k) \ |
97 | bo[n] = it_tab[0][byte(bi[n],0)] ^ \ | 97 | bo[n] = it_tab[0][byte(bi[n],0)] ^ \ |
98 | it_tab[1][byte(bi[(n + 3) & 3],1)] ^ \ | 98 | it_tab[1][byte(bi[(n + 3) & 3],1)] ^ \ |
99 | it_tab[2][byte(bi[(n + 2) & 3],2)] ^ \ | 99 | it_tab[2][byte(bi[(n + 2) & 3],2)] ^ \ |
100 | it_tab[3][byte(bi[(n + 1) & 3],3)] ^ *(k + n) | 100 | it_tab[3][byte(bi[(n + 1) & 3],3)] ^ *(k + n) |
101 | 101 | ||
102 | #ifdef LARGE_TABLES | 102 | #ifdef LARGE_TABLES |
103 | 103 | ||
@@ -109,15 +109,15 @@ u4byte tab_gen = 0; | |||
109 | 109 | ||
110 | #define f_rl(bo, bi, n, k) \ | 110 | #define f_rl(bo, bi, n, k) \ |
111 | bo[n] = fl_tab[0][byte(bi[n],0)] ^ \ | 111 | bo[n] = fl_tab[0][byte(bi[n],0)] ^ \ |
112 | fl_tab[1][byte(bi[(n + 1) & 3],1)] ^ \ | 112 | fl_tab[1][byte(bi[(n + 1) & 3],1)] ^ \ |
113 | fl_tab[2][byte(bi[(n + 2) & 3],2)] ^ \ | 113 | fl_tab[2][byte(bi[(n + 2) & 3],2)] ^ \ |
114 | fl_tab[3][byte(bi[(n + 3) & 3],3)] ^ *(k + n) | 114 | fl_tab[3][byte(bi[(n + 3) & 3],3)] ^ *(k + n) |
115 | 115 | ||
116 | #define i_rl(bo, bi, n, k) \ | 116 | #define i_rl(bo, bi, n, k) \ |
117 | bo[n] = il_tab[0][byte(bi[n],0)] ^ \ | 117 | bo[n] = il_tab[0][byte(bi[n],0)] ^ \ |
118 | il_tab[1][byte(bi[(n + 3) & 3],1)] ^ \ | 118 | il_tab[1][byte(bi[(n + 3) & 3],1)] ^ \ |
119 | il_tab[2][byte(bi[(n + 2) & 3],2)] ^ \ | 119 | il_tab[2][byte(bi[(n + 2) & 3],2)] ^ \ |
120 | il_tab[3][byte(bi[(n + 1) & 3],3)] ^ *(k + n) | 120 | il_tab[3][byte(bi[(n + 1) & 3],3)] ^ *(k + n) |
121 | 121 | ||
122 | #else | 122 | #else |
123 | 123 | ||
@@ -129,15 +129,15 @@ u4byte tab_gen = 0; | |||
129 | 129 | ||
130 | #define f_rl(bo, bi, n, k) \ | 130 | #define f_rl(bo, bi, n, k) \ |
131 | bo[n] = (u4byte)sbx_tab[byte(bi[n],0)] ^ \ | 131 | bo[n] = (u4byte)sbx_tab[byte(bi[n],0)] ^ \ |
132 | rotl(((u4byte)sbx_tab[byte(bi[(n + 1) & 3],1)]), 8) ^ \ | 132 | rotl(((u4byte)sbx_tab[byte(bi[(n + 1) & 3],1)]), 8) ^ \ |
133 | rotl(((u4byte)sbx_tab[byte(bi[(n + 2) & 3],2)]), 16) ^ \ | 133 | rotl(((u4byte)sbx_tab[byte(bi[(n + 2) & 3],2)]), 16) ^ \ |
134 | rotl(((u4byte)sbx_tab[byte(bi[(n + 3) & 3],3)]), 24) ^ *(k + n) | 134 | rotl(((u4byte)sbx_tab[byte(bi[(n + 3) & 3],3)]), 24) ^ *(k + n) |
135 | 135 | ||
136 | #define i_rl(bo, bi, n, k) \ | 136 | #define i_rl(bo, bi, n, k) \ |
137 | bo[n] = (u4byte)isb_tab[byte(bi[n],0)] ^ \ | 137 | bo[n] = (u4byte)isb_tab[byte(bi[n],0)] ^ \ |
138 | rotl(((u4byte)isb_tab[byte(bi[(n + 3) & 3],1)]), 8) ^ \ | 138 | rotl(((u4byte)isb_tab[byte(bi[(n + 3) & 3],1)]), 8) ^ \ |
139 | rotl(((u4byte)isb_tab[byte(bi[(n + 2) & 3],2)]), 16) ^ \ | 139 | rotl(((u4byte)isb_tab[byte(bi[(n + 2) & 3],2)]), 16) ^ \ |
140 | rotl(((u4byte)isb_tab[byte(bi[(n + 1) & 3],3)]), 24) ^ *(k + n) | 140 | rotl(((u4byte)isb_tab[byte(bi[(n + 1) & 3],3)]), 24) ^ *(k + n) |
141 | 141 | ||
142 | #endif | 142 | #endif |
143 | 143 | ||
@@ -160,7 +160,7 @@ gen_tabs(void) | |||
160 | log_tab[1] = 0; p = 1; | 160 | log_tab[1] = 0; p = 1; |
161 | 161 | ||
162 | for(i = 0; i < 10; ++i) { | 162 | for(i = 0; i < 10; ++i) { |
163 | rco_tab[i] = p; | 163 | rco_tab[i] = p; |
164 | 164 | ||
165 | p = (p << 1) ^ (p & 0x80 ? 0x1b : 0); | 165 | p = (p << 1) ^ (p & 0x80 ? 0x1b : 0); |
166 | } | 166 | } |
@@ -172,19 +172,19 @@ gen_tabs(void) | |||
172 | /* least significant end of a byte. */ | 172 | /* least significant end of a byte. */ |
173 | 173 | ||
174 | for(i = 0; i < 256; ++i) { | 174 | for(i = 0; i < 256; ++i) { |
175 | p = (i ? pow_tab[255 - log_tab[i]] : 0); q = p; | 175 | p = (i ? pow_tab[255 - log_tab[i]] : 0); q = p; |
176 | q = (q >> 7) | (q << 1); p ^= q; | 176 | q = (q >> 7) | (q << 1); p ^= q; |
177 | q = (q >> 7) | (q << 1); p ^= q; | 177 | q = (q >> 7) | (q << 1); p ^= q; |
178 | q = (q >> 7) | (q << 1); p ^= q; | 178 | q = (q >> 7) | (q << 1); p ^= q; |
179 | q = (q >> 7) | (q << 1); p ^= q ^ 0x63; | 179 | q = (q >> 7) | (q << 1); p ^= q ^ 0x63; |
180 | sbx_tab[i] = (u1byte)p; isb_tab[p] = (u1byte)i; | 180 | sbx_tab[i] = (u1byte)p; isb_tab[p] = (u1byte)i; |
181 | } | 181 | } |
182 | 182 | ||
183 | for(i = 0; i < 256; ++i) { | 183 | for(i = 0; i < 256; ++i) { |
184 | p = sbx_tab[i]; | 184 | p = sbx_tab[i]; |
185 | |||
186 | #ifdef LARGE_TABLES | ||
185 | 187 | ||
186 | #ifdef LARGE_TABLES | ||
187 | |||
188 | t = p; fl_tab[0][i] = t; | 188 | t = p; fl_tab[0][i] = t; |
189 | fl_tab[1][i] = rotl(t, 8); | 189 | fl_tab[1][i] = rotl(t, 8); |
190 | fl_tab[2][i] = rotl(t, 16); | 190 | fl_tab[2][i] = rotl(t, 16); |
@@ -194,30 +194,30 @@ gen_tabs(void) | |||
194 | ((u4byte)p << 8) | | 194 | ((u4byte)p << 8) | |
195 | ((u4byte)p << 16) | | 195 | ((u4byte)p << 16) | |
196 | ((u4byte)ff_mult(3, p) << 24); | 196 | ((u4byte)ff_mult(3, p) << 24); |
197 | 197 | ||
198 | ft_tab[0][i] = t; | 198 | ft_tab[0][i] = t; |
199 | ft_tab[1][i] = rotl(t, 8); | 199 | ft_tab[1][i] = rotl(t, 8); |
200 | ft_tab[2][i] = rotl(t, 16); | 200 | ft_tab[2][i] = rotl(t, 16); |
201 | ft_tab[3][i] = rotl(t, 24); | 201 | ft_tab[3][i] = rotl(t, 24); |
202 | 202 | ||
203 | p = isb_tab[i]; | 203 | p = isb_tab[i]; |
204 | 204 | ||
205 | #ifdef LARGE_TABLES | 205 | #ifdef LARGE_TABLES |
206 | 206 | ||
207 | t = p; il_tab[0][i] = t; | 207 | t = p; il_tab[0][i] = t; |
208 | il_tab[1][i] = rotl(t, 8); | 208 | il_tab[1][i] = rotl(t, 8); |
209 | il_tab[2][i] = rotl(t, 16); | 209 | il_tab[2][i] = rotl(t, 16); |
210 | il_tab[3][i] = rotl(t, 24); | 210 | il_tab[3][i] = rotl(t, 24); |
211 | #endif | 211 | #endif |
212 | t = ((u4byte)ff_mult(14, p)) | | 212 | t = ((u4byte)ff_mult(14, p)) | |
213 | ((u4byte)ff_mult( 9, p) << 8) | | 213 | ((u4byte)ff_mult( 9, p) << 8) | |
214 | ((u4byte)ff_mult(13, p) << 16) | | 214 | ((u4byte)ff_mult(13, p) << 16) | |
215 | ((u4byte)ff_mult(11, p) << 24); | 215 | ((u4byte)ff_mult(11, p) << 24); |
216 | 216 | ||
217 | it_tab[0][i] = t; | 217 | it_tab[0][i] = t; |
218 | it_tab[1][i] = rotl(t, 8); | 218 | it_tab[1][i] = rotl(t, 8); |
219 | it_tab[2][i] = rotl(t, 16); | 219 | it_tab[2][i] = rotl(t, 16); |
220 | it_tab[3][i] = rotl(t, 24); | 220 | it_tab[3][i] = rotl(t, 24); |
221 | } | 221 | } |
222 | 222 | ||
223 | tab_gen = 1; | 223 | tab_gen = 1; |
@@ -232,8 +232,8 @@ gen_tabs(void) | |||
232 | t = w ^ (x); \ | 232 | t = w ^ (x); \ |
233 | (y) = u ^ v ^ w; \ | 233 | (y) = u ^ v ^ w; \ |
234 | (y) ^= rotr(u ^ t, 8) ^ \ | 234 | (y) ^= rotr(u ^ t, 8) ^ \ |
235 | rotr(v ^ t, 16) ^ \ | 235 | rotr(v ^ t, 16) ^ \ |
236 | rotr(t,24) | 236 | rotr(t,24) |
237 | 237 | ||
238 | /* initialise the key schedule from the user supplied key */ | 238 | /* initialise the key schedule from the user supplied key */ |
239 | 239 | ||
@@ -271,7 +271,7 @@ gen_tabs(void) | |||
271 | rijndael_ctx * | 271 | rijndael_ctx * |
272 | rijndael_set_key(rijndael_ctx *ctx, const u4byte *in_key, const u4byte key_len, | 272 | rijndael_set_key(rijndael_ctx *ctx, const u4byte *in_key, const u4byte key_len, |
273 | int encrypt) | 273 | int encrypt) |
274 | { | 274 | { |
275 | u4byte i, t, u, v, w; | 275 | u4byte i, t, u, v, w; |
276 | u4byte *e_key = ctx->e_key; | 276 | u4byte *e_key = ctx->e_key; |
277 | u4byte *d_key = ctx->d_key; | 277 | u4byte *d_key = ctx->d_key; |
@@ -285,23 +285,23 @@ rijndael_set_key(rijndael_ctx *ctx, const u4byte *in_key, const u4byte key_len, | |||
285 | 285 | ||
286 | e_key[0] = io_swap(in_key[0]); e_key[1] = io_swap(in_key[1]); | 286 | e_key[0] = io_swap(in_key[0]); e_key[1] = io_swap(in_key[1]); |
287 | e_key[2] = io_swap(in_key[2]); e_key[3] = io_swap(in_key[3]); | 287 | e_key[2] = io_swap(in_key[2]); e_key[3] = io_swap(in_key[3]); |
288 | 288 | ||
289 | switch(ctx->k_len) { | 289 | switch(ctx->k_len) { |
290 | case 4: t = e_key[3]; | 290 | case 4: t = e_key[3]; |
291 | for(i = 0; i < 10; ++i) | 291 | for(i = 0; i < 10; ++i) |
292 | loop4(i); | 292 | loop4(i); |
293 | break; | 293 | break; |
294 | 294 | ||
295 | case 6: e_key[4] = io_swap(in_key[4]); t = e_key[5] = io_swap(in_key[5]); | 295 | case 6: e_key[4] = io_swap(in_key[4]); t = e_key[5] = io_swap(in_key[5]); |
296 | for(i = 0; i < 8; ++i) | 296 | for(i = 0; i < 8; ++i) |
297 | loop6(i); | 297 | loop6(i); |
298 | break; | 298 | break; |
299 | 299 | ||
300 | case 8: e_key[4] = io_swap(in_key[4]); e_key[5] = io_swap(in_key[5]); | 300 | case 8: e_key[4] = io_swap(in_key[4]); e_key[5] = io_swap(in_key[5]); |
301 | e_key[6] = io_swap(in_key[6]); t = e_key[7] = io_swap(in_key[7]); | 301 | e_key[6] = io_swap(in_key[6]); t = e_key[7] = io_swap(in_key[7]); |
302 | for(i = 0; i < 7; ++i) | 302 | for(i = 0; i < 7; ++i) |
303 | loop8(i); | 303 | loop8(i); |
304 | break; | 304 | break; |
305 | } | 305 | } |
306 | 306 | ||
307 | if (!encrypt) { | 307 | if (!encrypt) { |
@@ -333,7 +333,7 @@ rijndael_set_key(rijndael_ctx *ctx, const u4byte *in_key, const u4byte key_len, | |||
333 | 333 | ||
334 | void | 334 | void |
335 | rijndael_encrypt(rijndael_ctx *ctx, const u4byte *in_blk, u4byte *out_blk) | 335 | rijndael_encrypt(rijndael_ctx *ctx, const u4byte *in_blk, u4byte *out_blk) |
336 | { | 336 | { |
337 | u4byte k_len = ctx->k_len; | 337 | u4byte k_len = ctx->k_len; |
338 | u4byte *e_key = ctx->e_key; | 338 | u4byte *e_key = ctx->e_key; |
339 | u4byte b0[4], b1[4], *kp; | 339 | u4byte b0[4], b1[4], *kp; |
@@ -380,7 +380,7 @@ rijndael_encrypt(rijndael_ctx *ctx, const u4byte *in_blk, u4byte *out_blk) | |||
380 | 380 | ||
381 | void | 381 | void |
382 | rijndael_decrypt(rijndael_ctx *ctx, const u4byte *in_blk, u4byte *out_blk) | 382 | rijndael_decrypt(rijndael_ctx *ctx, const u4byte *in_blk, u4byte *out_blk) |
383 | { | 383 | { |
384 | u4byte b0[4], b1[4], *kp; | 384 | u4byte b0[4], b1[4], *kp; |
385 | u4byte k_len = ctx->k_len; | 385 | u4byte k_len = ctx->k_len; |
386 | u4byte *e_key = ctx->e_key; | 386 | u4byte *e_key = ctx->e_key; |