On Tue 09 Oct 2018 03:55:34 PM CEST, Daniel P. Berrangé wrote: > On Tue, Oct 09, 2018 at 03:52:53PM +0200, Alberto Garcia wrote: >> On Tue 09 Oct 2018 02:55:40 PM CEST, Daniel P. Berrangé wrote: >> > -static void xts_mult_x(uint8_t *I) >> > +static void xts_mult_x(xts_uint128 *I) >> > { >> > - int x; >> > - uint8_t t, tt; >> > + uint64_t tt; >> > >> > - for (x = t = 0; x < 16; x++) { >> > - tt = I[x] >> 7; >> > - I[x] = ((I[x] << 1) | t) & 0xFF; >> > - t = tt; >> > - } >> > - if (tt) { >> > - I[0] ^= 0x87; >> > + tt = I->a >> 63; >> > + I->a = I->a << 1; >> > + >> > + if (I->b >> 63) { >> > + I->a ^= 0x87; >> > } >> > + I->b = (I->b << 1) | tt; >> > } >> >> Does this work fine in big-endian CPUs? > > Hmm, that's a good question. I'd expect tests/test-crypto-xts to crash > and burn if it doesn't, so guess I'll need to find somewhere to validate > that.
I just tried in s390x: /crypto/xts/t-1-key-32-ptx-32: ** ERROR:/home/berto/qemu/tests/test-crypto-xts.c:386:test_xts: assertion failed: (memcmp(out, data->CTX, data->PTLEN) == 0) Aborted Berto