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. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|