提交 af2ea724 编写于 作者: M Mans Rullgard

aes: use direct assignments instead of memcpy() or loops

Signed-off-by: NMans Rullgard <mans@mansr.com>
上级 5dd045eb
...@@ -127,7 +127,7 @@ void av_aes_crypt(AVAES *a, uint8_t *dst_, const uint8_t *src_, ...@@ -127,7 +127,7 @@ void av_aes_crypt(AVAES *a, uint8_t *dst_, const uint8_t *src_,
crypt(a, 0, inv_sbox, dec_multbl); crypt(a, 0, inv_sbox, dec_multbl);
if (iv) { if (iv) {
addkey(&a->state[0], &a->state[0], iv); addkey(&a->state[0], &a->state[0], iv);
memcpy(iv, src, 16); *iv = *src;
} }
addkey(dst, &a->state[0], &a->round_key[0]); addkey(dst, &a->state[0], &a->round_key[0]);
} else { } else {
...@@ -136,7 +136,7 @@ void av_aes_crypt(AVAES *a, uint8_t *dst_, const uint8_t *src_, ...@@ -136,7 +136,7 @@ void av_aes_crypt(AVAES *a, uint8_t *dst_, const uint8_t *src_,
crypt(a, 2, sbox, enc_multbl); crypt(a, 2, sbox, enc_multbl);
addkey(dst, &a->state[0], &a->round_key[0]); addkey(dst, &a->state[0], &a->round_key[0]);
if (iv) if (iv)
memcpy(iv, dst, 16); *iv = *dst;
} }
src++; src++;
dst++; dst++;
...@@ -221,15 +221,14 @@ int av_aes_init(AVAES *a, const uint8_t *key, int key_bits, int decrypt) ...@@ -221,15 +221,14 @@ int av_aes_init(AVAES *a, const uint8_t *key, int key_bits, int decrypt)
if (decrypt) { if (decrypt) {
for (i = 1; i < rounds; i++) { for (i = 1; i < rounds; i++) {
av_aes_block tmp[3]; av_aes_block tmp[3];
memcpy(&tmp[2], &a->round_key[i], 16); tmp[2] = a->round_key[i];
subshift(&tmp[1], 0, sbox); subshift(&tmp[1], 0, sbox);
mix(tmp, dec_multbl, 1, 3); mix(tmp, dec_multbl, 1, 3);
memcpy(&a->round_key[i], &tmp[0], 16); a->round_key[i] = tmp[0];
} }
} else { } else {
for (i = 0; i < (rounds + 1) >> 1; i++) { for (i = 0; i < (rounds + 1) >> 1; i++) {
for (j = 0; j < 16; j++) FFSWAP(av_aes_block, a->round_key[i], a->round_key[rounds-i]);
FFSWAP(int, a->round_key[i].u8[j], a->round_key[rounds-i].u8[j]);
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册