| ... | ... |
@@ -222,11 +222,9 @@ int av_aes_init(AVAES *a, const uint8_t *key, int key_bits, int decrypt) |
| 222 | 222 |
a->rounds = rounds; |
| 223 | 223 |
|
| 224 | 224 |
memcpy(tk, key, KC * 4); |
| 225 |
+ memcpy(a->round_key[0].u8, key, KC * 4); |
|
| 225 | 226 |
|
| 226 |
- for (t = 0; t < (rounds + 1) * 16;) {
|
|
| 227 |
- memcpy(a->round_key[0].u8 + t, tk, KC * 4); |
|
| 228 |
- t += KC * 4; |
|
| 229 |
- |
|
| 227 |
+ for (t = KC * 4; t < (rounds + 1) * 16; t += KC * 4) {
|
|
| 230 | 228 |
for (i = 0; i < 4; i++) |
| 231 | 229 |
tk[0][i] ^= sbox[tk[KC - 1][(i + 1) & 3]]; |
| 232 | 230 |
tk[0][0] ^= rcon[rconpointer++]; |
| ... | ... |
@@ -239,6 +237,8 @@ int av_aes_init(AVAES *a, const uint8_t *key, int key_bits, int decrypt) |
| 239 | 239 |
for (i = 0; i < 4; i++) |
| 240 | 240 |
tk[j][i] ^= sbox[tk[j - 1][i]]; |
| 241 | 241 |
} |
| 242 |
+ |
|
| 243 |
+ memcpy(a->round_key[0].u8 + t, tk, KC * 4); |
|
| 242 | 244 |
} |
| 243 | 245 |
|
| 244 | 246 |
if (decrypt) {
|