diff options
| author | Sebastian Siewior <sebastian@breakpoint.cc> | 2007-11-08 07:39:26 -0500 |
|---|---|---|
| committer | Herbert Xu <herbert@gondor.apana.org.au> | 2008-01-10 16:16:09 -0500 |
| commit | be5fb270125729b7bca7879967f1dfadff0d9841 (patch) | |
| tree | 361f4b48020ae1a1686b155a32d7a51fa2c47cea | |
| parent | 41fdab3dd385dde36caae60ed2df82aecb7a32f0 (diff) | |
[CRYPTO] aes-generic: Coding style cleanup
Signed-off-by: Sebastian Siewior <sebastian@breakpoint.cc>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
| -rw-r--r-- | crypto/aes_generic.c | 325 |
1 files changed, 176 insertions, 149 deletions
diff --git a/crypto/aes_generic.c b/crypto/aes_generic.c index 6683260475f9..df8df4d346d2 100644 --- a/crypto/aes_generic.c +++ b/crypto/aes_generic.c | |||
| @@ -63,8 +63,7 @@ | |||
| 63 | /* | 63 | /* |
| 64 | * #define byte(x, nr) ((unsigned char)((x) >> (nr*8))) | 64 | * #define byte(x, nr) ((unsigned char)((x) >> (nr*8))) |
| 65 | */ | 65 | */ |
| 66 | static inline u8 | 66 | static inline u8 byte(const u32 x, const unsigned n) |
| 67 | byte(const u32 x, const unsigned n) | ||
| 68 | { | 67 | { |
| 69 | return x >> (n << 3); | 68 | return x >> (n << 3); |
| 70 | } | 69 | } |
| @@ -88,55 +87,25 @@ static u32 it_tab[4][256]; | |||
| 88 | static u32 fl_tab[4][256]; | 87 | static u32 fl_tab[4][256]; |
| 89 | static u32 il_tab[4][256]; | 88 | static u32 il_tab[4][256]; |
| 90 | 89 | ||
| 91 | static inline u8 __init | 90 | static inline u8 __init f_mult(u8 a, u8 b) |
| 92 | f_mult (u8 a, u8 b) | ||
| 93 | { | 91 | { |
| 94 | u8 aa = log_tab[a], cc = aa + log_tab[b]; | 92 | u8 aa = log_tab[a], cc = aa + log_tab[b]; |
| 95 | 93 | ||
| 96 | return pow_tab[cc + (cc < aa ? 1 : 0)]; | 94 | return pow_tab[cc + (cc < aa ? 1 : 0)]; |
| 97 | } | 95 | } |
| 98 | 96 | ||
| 99 | #define ff_mult(a,b) (a && b ? f_mult(a, b) : 0) | 97 | #define ff_mult(a, b) (a && b ? f_mult(a, b) : 0) |
| 100 | 98 | ||
| 101 | #define f_rn(bo, bi, n, k) \ | 99 | static void __init gen_tabs(void) |
| 102 | bo[n] = ft_tab[0][byte(bi[n],0)] ^ \ | ||
| 103 | ft_tab[1][byte(bi[(n + 1) & 3],1)] ^ \ | ||
| 104 | ft_tab[2][byte(bi[(n + 2) & 3],2)] ^ \ | ||
| 105 | ft_tab[3][byte(bi[(n + 3) & 3],3)] ^ *(k + n) | ||
| 106 | |||
| 107 | #define i_rn(bo, bi, n, k) \ | ||
| 108 | bo[n] = it_tab[0][byte(bi[n],0)] ^ \ | ||
| 109 | it_tab[1][byte(bi[(n + 3) & 3],1)] ^ \ | ||
| 110 | it_tab[2][byte(bi[(n + 2) & 3],2)] ^ \ | ||
| 111 | it_tab[3][byte(bi[(n + 1) & 3],3)] ^ *(k + n) | ||
| 112 | |||
| 113 | #define ls_box(x) \ | ||
| 114 | ( fl_tab[0][byte(x, 0)] ^ \ | ||
| 115 | fl_tab[1][byte(x, 1)] ^ \ | ||
| 116 | fl_tab[2][byte(x, 2)] ^ \ | ||
| 117 | fl_tab[3][byte(x, 3)] ) | ||
| 118 | |||
| 119 | #define f_rl(bo, bi, n, k) \ | ||
| 120 | bo[n] = fl_tab[0][byte(bi[n],0)] ^ \ | ||
| 121 | fl_tab[1][byte(bi[(n + 1) & 3],1)] ^ \ | ||
| 122 | fl_tab[2][byte(bi[(n + 2) & 3],2)] ^ \ | ||
| 123 | fl_tab[3][byte(bi[(n + 3) & 3],3)] ^ *(k + n) | ||
| 124 | |||
| 125 | #define i_rl(bo, bi, n, k) \ | ||
| 126 | bo[n] = il_tab[0][byte(bi[n],0)] ^ \ | ||
| 127 | il_tab[1][byte(bi[(n + 3) & 3],1)] ^ \ | ||
| 128 | il_tab[2][byte(bi[(n + 2) & 3],2)] ^ \ | ||
| 129 | il_tab[3][byte(bi[(n + 1) & 3],3)] ^ *(k + n) | ||
| 130 | |||
| 131 | static void __init | ||
| 132 | gen_tabs (void) | ||
| 133 | { | 100 | { |
| 134 | u32 i, t; | 101 | u32 i, t; |
| 135 | u8 p, q; | 102 | u8 p, q; |
| 136 | 103 | ||
| 137 | /* log and power tables for GF(2**8) finite field with | 104 | /* |
| 138 | 0x011b as modular polynomial - the simplest primitive | 105 | * log and power tables for GF(2**8) finite field with |
| 139 | root is 0x03, used here to generate the tables */ | 106 | * 0x011b as modular polynomial - the simplest primitive |
| 107 | * root is 0x03, used here to generate the tables | ||
| 108 | */ | ||
| 140 | 109 | ||
| 141 | for (i = 0, p = 1; i < 256; ++i) { | 110 | for (i = 0, p = 1; i < 256; ++i) { |
| 142 | pow_tab[i] = (u8) p; | 111 | pow_tab[i] = (u8) p; |
| @@ -170,9 +139,9 @@ gen_tabs (void) | |||
| 170 | fl_tab[2][i] = rol32(t, 16); | 139 | fl_tab[2][i] = rol32(t, 16); |
| 171 | fl_tab[3][i] = rol32(t, 24); | 140 | fl_tab[3][i] = rol32(t, 24); |
| 172 | 141 | ||
| 173 | t = ((u32) ff_mult (2, p)) | | 142 | t = ((u32) ff_mult(2, p)) | |
| 174 | ((u32) p << 8) | | 143 | ((u32) p << 8) | |
| 175 | ((u32) p << 16) | ((u32) ff_mult (3, p) << 24); | 144 | ((u32) p << 16) | ((u32) ff_mult(3, p) << 24); |
| 176 | 145 | ||
| 177 | ft_tab[0][i] = t; | 146 | ft_tab[0][i] = t; |
| 178 | ft_tab[1][i] = rol32(t, 8); | 147 | ft_tab[1][i] = rol32(t, 8); |
| @@ -187,10 +156,10 @@ gen_tabs (void) | |||
| 187 | il_tab[2][i] = rol32(t, 16); | 156 | il_tab[2][i] = rol32(t, 16); |
| 188 | il_tab[3][i] = rol32(t, 24); | 157 | il_tab[3][i] = rol32(t, 24); |
| 189 | 158 | ||
| 190 | t = ((u32) ff_mult (14, p)) | | 159 | t = ((u32) ff_mult(14, p)) | |
| 191 | ((u32) ff_mult (9, p) << 8) | | 160 | ((u32) ff_mult(9, p) << 8) | |
| 192 | ((u32) ff_mult (13, p) << 16) | | 161 | ((u32) ff_mult(13, p) << 16) | |
| 193 | ((u32) ff_mult (11, p) << 24); | 162 | ((u32) ff_mult(11, p) << 24); |
| 194 | 163 | ||
| 195 | it_tab[0][i] = t; | 164 | it_tab[0][i] = t; |
| 196 | it_tab[1][i] = rol32(t, 8); | 165 | it_tab[1][i] = rol32(t, 8); |
| @@ -199,53 +168,80 @@ gen_tabs (void) | |||
| 199 | } | 168 | } |
| 200 | } | 169 | } |
| 201 | 170 | ||
| 202 | #define star_x(x) (((x) & 0x7f7f7f7f) << 1) ^ ((((x) & 0x80808080) >> 7) * 0x1b) | ||
| 203 | |||
| 204 | #define imix_col(y,x) \ | ||
| 205 | u = star_x(x); \ | ||
| 206 | v = star_x(u); \ | ||
| 207 | w = star_x(v); \ | ||
| 208 | t = w ^ (x); \ | ||
| 209 | (y) = u ^ v ^ w; \ | ||
| 210 | (y) ^= ror32(u ^ t, 8) ^ \ | ||
| 211 | ror32(v ^ t, 16) ^ \ | ||
| 212 | ror32(t,24) | ||
| 213 | |||
| 214 | /* initialise the key schedule from the user supplied key */ | 171 | /* initialise the key schedule from the user supplied key */ |
| 215 | 172 | ||
| 216 | #define loop4(i) \ | 173 | #define star_x(x) (((x) & 0x7f7f7f7f) << 1) ^ ((((x) & 0x80808080) >> 7) * 0x1b) |
| 217 | { t = ror32(t, 8); t = ls_box(t) ^ rco_tab[i]; \ | ||
| 218 | t ^= E_KEY[4 * i]; E_KEY[4 * i + 4] = t; \ | ||
| 219 | t ^= E_KEY[4 * i + 1]; E_KEY[4 * i + 5] = t; \ | ||
| 220 | t ^= E_KEY[4 * i + 2]; E_KEY[4 * i + 6] = t; \ | ||
| 221 | t ^= E_KEY[4 * i + 3]; E_KEY[4 * i + 7] = t; \ | ||
| 222 | } | ||
| 223 | |||
| 224 | #define loop6(i) \ | ||
| 225 | { t = ror32(t, 8); t = ls_box(t) ^ rco_tab[i]; \ | ||
| 226 | t ^= E_KEY[6 * i]; E_KEY[6 * i + 6] = t; \ | ||
| 227 | t ^= E_KEY[6 * i + 1]; E_KEY[6 * i + 7] = t; \ | ||
| 228 | t ^= E_KEY[6 * i + 2]; E_KEY[6 * i + 8] = t; \ | ||
| 229 | t ^= E_KEY[6 * i + 3]; E_KEY[6 * i + 9] = t; \ | ||
| 230 | t ^= E_KEY[6 * i + 4]; E_KEY[6 * i + 10] = t; \ | ||
| 231 | t ^= E_KEY[6 * i + 5]; E_KEY[6 * i + 11] = t; \ | ||
| 232 | } | ||
| 233 | 174 | ||
| 234 | #define loop8(i) \ | 175 | #define imix_col(y,x) do { \ |
| 235 | { t = ror32(t, 8); ; t = ls_box(t) ^ rco_tab[i]; \ | 176 | u = star_x(x); \ |
| 236 | t ^= E_KEY[8 * i]; E_KEY[8 * i + 8] = t; \ | 177 | v = star_x(u); \ |
| 237 | t ^= E_KEY[8 * i + 1]; E_KEY[8 * i + 9] = t; \ | 178 | w = star_x(v); \ |
| 238 | t ^= E_KEY[8 * i + 2]; E_KEY[8 * i + 10] = t; \ | 179 | t = w ^ (x); \ |
| 239 | t ^= E_KEY[8 * i + 3]; E_KEY[8 * i + 11] = t; \ | 180 | (y) = u ^ v ^ w; \ |
| 240 | t = E_KEY[8 * i + 4] ^ ls_box(t); \ | 181 | (y) ^= ror32(u ^ t, 8) ^ \ |
| 241 | E_KEY[8 * i + 12] = t; \ | 182 | ror32(v ^ t, 16) ^ \ |
| 242 | t ^= E_KEY[8 * i + 5]; E_KEY[8 * i + 13] = t; \ | 183 | ror32(t, 24); \ |
| 243 | t ^= E_KEY[8 * i + 6]; E_KEY[8 * i + 14] = t; \ | 184 | } while (0) |
| 244 | t ^= E_KEY[8 * i + 7]; E_KEY[8 * i + 15] = t; \ | 185 | |
| 245 | } | 186 | #define ls_box(x) \ |
| 187 | fl_tab[0][byte(x, 0)] ^ \ | ||
| 188 | fl_tab[1][byte(x, 1)] ^ \ | ||
| 189 | fl_tab[2][byte(x, 2)] ^ \ | ||
| 190 | fl_tab[3][byte(x, 3)] | ||
| 191 | |||
| 192 | #define loop4(i) do { \ | ||
| 193 | t = ror32(t, 8); \ | ||
| 194 | t = ls_box(t) ^ rco_tab[i]; \ | ||
| 195 | t ^= E_KEY[4 * i]; \ | ||
| 196 | E_KEY[4 * i + 4] = t; \ | ||
| 197 | t ^= E_KEY[4 * i + 1]; \ | ||
| 198 | E_KEY[4 * i + 5] = t; \ | ||
| 199 | t ^= E_KEY[4 * i + 2]; \ | ||
| 200 | E_KEY[4 * i + 6] = t; \ | ||
| 201 | t ^= E_KEY[4 * i + 3]; \ | ||
| 202 | E_KEY[4 * i + 7] = t; \ | ||
| 203 | } while (0) | ||
| 204 | |||
| 205 | #define loop6(i) do { \ | ||
| 206 | t = ror32(t, 8); \ | ||
| 207 | t = ls_box(t) ^ rco_tab[i]; \ | ||
| 208 | t ^= E_KEY[6 * i]; \ | ||
| 209 | E_KEY[6 * i + 6] = t; \ | ||
| 210 | t ^= E_KEY[6 * i + 1]; \ | ||
| 211 | E_KEY[6 * i + 7] = t; \ | ||
| 212 | t ^= E_KEY[6 * i + 2]; \ | ||
| 213 | |||
