On Tue 09 Oct 2018 02:55:38 PM CEST, Daniel P. Berrangé wrote: > @@ -85,7 +90,7 @@ void xts_decrypt(const void *datactx, > uint8_t *dst, > const uint8_t *src) > { > - uint8_t PP[XTS_BLOCK_SIZE], CC[XTS_BLOCK_SIZE], T[XTS_BLOCK_SIZE]; > + xts_uint128 PP, CC, T; > unsigned long i, m, mo, lim;
[...] > /* Pm = first length % XTS_BLOCK_SIZE bytes of PP */ > for (i = 0; i < mo; i++) { > - CC[i] = src[XTS_BLOCK_SIZE + i]; > - dst[XTS_BLOCK_SIZE + i] = PP[i]; > + ((uint8_t *)&CC)[i] = src[XTS_BLOCK_SIZE + i]; > + dst[XTS_BLOCK_SIZE + i] = ((uint8_t *)&PP)[i]; > } On second thoughts, these casts are a bit cumbersome. I wonder if it isn't better to keep the array a uint8_t[] and only treat it as xts_uint128 in the places where you actually do 64-bit operations (xts_uint128_xor, xts_mult_x). Berto