svn commit: r331579 - head/sys/opencrypto
Conrad Meyer
cem at FreeBSD.org
Mon Mar 26 20:30:08 UTC 2018
Author: cem
Date: Mon Mar 26 20:30:07 2018
New Revision: 331579
URL: https://svnweb.freebsd.org/changeset/base/331579
Log:
cryptodev: Match intent for enc_xform ciphers with blocksize != ivsize
No functional change for Skipjack, AES-ICM, Blowfish, CAST-128, Camellia,
DES3, Rijndael128, DES. All of these have identical IV and blocksizes
declared in the associated enc_xform.
Functional changes for:
* AES-GCM: block len of 1, IV len of 12
* AES-XTS: block len of 16, IV len of 8
* NULL: block len of 4, IV len of 0
For these, it seems like the IV specified in the enc_xform is correct (and
the blocksize used before was wrong).
Additionally, the not-yet-OCFed cipher Chacha20 has a logical block length
of 1 byte, and a 16 byte IV + nonce.
Rationalize references to IV lengths to refer to the declared ivsize, rather
than declared blocksize.
Sponsored by: Dell EMC Isilon
Modified:
head/sys/opencrypto/cryptodev.c
Modified: head/sys/opencrypto/cryptodev.c
==============================================================================
--- head/sys/opencrypto/cryptodev.c Mon Mar 26 20:28:50 2018 (r331578)
+++ head/sys/opencrypto/cryptodev.c Mon Mar 26 20:30:07 2018 (r331579)
@@ -854,7 +854,7 @@ cryptodev_op(
goto bail;
}
if ((error = copyin(cop->iv, crde->crd_iv,
- cse->txform->blocksize))) {
+ cse->txform->ivsize))) {
SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__);
goto bail;
}
@@ -864,8 +864,8 @@ cryptodev_op(
crde->crd_skip = 0;
} else if (crde) {
crde->crd_flags |= CRD_F_IV_PRESENT;
- crde->crd_skip = cse->txform->blocksize;
- crde->crd_len -= cse->txform->blocksize;
+ crde->crd_skip = cse->txform->ivsize;
+ crde->crd_len -= cse->txform->ivsize;
}
if (cop->mac && crda == NULL) {
@@ -1032,8 +1032,8 @@ cryptodev_aead(
crde->crd_flags |= CRD_F_IV_EXPLICIT | CRD_F_IV_PRESENT;
} else {
crde->crd_flags |= CRD_F_IV_PRESENT;
- crde->crd_skip += cse->txform->blocksize;
- crde->crd_len -= cse->txform->blocksize;
+ crde->crd_skip += cse->txform->ivsize;
+ crde->crd_len -= cse->txform->ivsize;
}
if ((error = copyin(caead->tag, (caddr_t)cod->uio.uio_iov[0].iov_base +
More information about the svn-src-head
mailing list