AES_XTS_BLOCKSIZE
uint8_t tweak[AES_XTS_BLOCKSIZE] __aligned(16);
cnt = len / AES_XTS_BLOCKSIZE / 8;
from += AES_XTS_BLOCKSIZE * 8;
to += AES_XTS_BLOCKSIZE * 8;
cnt = len / AES_XTS_BLOCKSIZE;
from += AES_XTS_BLOCKSIZE;
to += AES_XTS_BLOCKSIZE;
uint8_t block[AES_XTS_BLOCKSIZE] __aligned(16);
uint8_t tweak[AES_XTS_BLOCKSIZE] __aligned(16);
KASSERT(len % AES_XTS_BLOCKSIZE == 0,
if (seglen < AES_XTS_BLOCKSIZE) {
crypto_cursor_copydata(fromc, AES_XTS_BLOCKSIZE, block);
crypto_cursor_copyback(toc, AES_XTS_BLOCKSIZE, block);
seglen = AES_XTS_BLOCKSIZE;
for (oseglen = seglen; seglen >= AES_XTS_BLOCKSIZE;
seglen -= AES_XTS_BLOCKSIZE) {
from += AES_XTS_BLOCKSIZE;
to += AES_XTS_BLOCKSIZE;
uint8_t block[AES_XTS_BLOCKSIZE];
KASSERT(len % AES_XTS_BLOCKSIZE == 0, ("%s: invalid length", __func__));
for (i = 0; i < AES_XTS_BLOCKSIZE; i++)
for (i = 0; i < AES_XTS_BLOCKSIZE; i++)
for (i = 0; i < AES_XTS_BLOCKSIZE; i++) {
in += AES_XTS_BLOCKSIZE;
out += AES_XTS_BLOCKSIZE;
len -= AES_XTS_BLOCKSIZE;
aes_xts_crypt(key, in, out, AES_XTS_BLOCKSIZE, true);
aes_xts_crypt(key, in, out, AES_XTS_BLOCKSIZE, false);
uint8_t tweak[AES_XTS_BLOCKSIZE];