mirror of https://git.ffmpeg.org/ffmpeg.git
des: allow unaligned input and output buffers
Signed-off-by: Mans Rullgard <mans@mansr.com>
This commit is contained in:
parent
d04d9f24a0
commit
9e52a40695
|
@ -299,10 +299,10 @@ int av_des_init(AVDES *d, const uint8_t *key, int key_bits, int decrypt) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void av_des_crypt(AVDES *d, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt) {
|
void av_des_crypt(AVDES *d, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt) {
|
||||||
uint64_t iv_val = iv ? av_be2ne64(*(uint64_t *)iv) : 0;
|
uint64_t iv_val = iv ? AV_RB64(iv) : 0;
|
||||||
while (count-- > 0) {
|
while (count-- > 0) {
|
||||||
uint64_t dst_val;
|
uint64_t dst_val;
|
||||||
uint64_t src_val = src ? av_be2ne64(*(const uint64_t *)src) : 0;
|
uint64_t src_val = src ? AV_RB64(src) : 0;
|
||||||
if (decrypt) {
|
if (decrypt) {
|
||||||
uint64_t tmp = src_val;
|
uint64_t tmp = src_val;
|
||||||
if (d->triple_des) {
|
if (d->triple_des) {
|
||||||
|
@ -319,12 +319,12 @@ void av_des_crypt(AVDES *d, uint8_t *dst, const uint8_t *src, int count, uint8_t
|
||||||
}
|
}
|
||||||
iv_val = iv ? dst_val : 0;
|
iv_val = iv ? dst_val : 0;
|
||||||
}
|
}
|
||||||
*(uint64_t *)dst = av_be2ne64(dst_val);
|
AV_WB64(dst, dst_val);
|
||||||
src += 8;
|
src += 8;
|
||||||
dst += 8;
|
dst += 8;
|
||||||
}
|
}
|
||||||
if (iv)
|
if (iv)
|
||||||
*(uint64_t *)iv = av_be2ne64(iv_val);
|
AV_WB64(iv, iv_val);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef TEST
|
#ifdef TEST
|
||||||
|
|
Loading…
Reference in New Issue