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
This commit is contained in:
parent
e2041bfa7c
commit
19d0de8d64
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=331579
@ -854,7 +854,7 @@ cryptodev_op(
|
|||||||
goto bail;
|
goto bail;
|
||||||
}
|
}
|
||||||
if ((error = copyin(cop->iv, crde->crd_iv,
|
if ((error = copyin(cop->iv, crde->crd_iv,
|
||||||
cse->txform->blocksize))) {
|
cse->txform->ivsize))) {
|
||||||
SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__);
|
SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__);
|
||||||
goto bail;
|
goto bail;
|
||||||
}
|
}
|
||||||
@ -864,8 +864,8 @@ cryptodev_op(
|
|||||||
crde->crd_skip = 0;
|
crde->crd_skip = 0;
|
||||||
} else if (crde) {
|
} else if (crde) {
|
||||||
crde->crd_flags |= CRD_F_IV_PRESENT;
|
crde->crd_flags |= CRD_F_IV_PRESENT;
|
||||||
crde->crd_skip = cse->txform->blocksize;
|
crde->crd_skip = cse->txform->ivsize;
|
||||||
crde->crd_len -= cse->txform->blocksize;
|
crde->crd_len -= cse->txform->ivsize;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cop->mac && crda == NULL) {
|
if (cop->mac && crda == NULL) {
|
||||||
@ -1032,8 +1032,8 @@ cryptodev_aead(
|
|||||||
crde->crd_flags |= CRD_F_IV_EXPLICIT | CRD_F_IV_PRESENT;
|
crde->crd_flags |= CRD_F_IV_EXPLICIT | CRD_F_IV_PRESENT;
|
||||||
} else {
|
} else {
|
||||||
crde->crd_flags |= CRD_F_IV_PRESENT;
|
crde->crd_flags |= CRD_F_IV_PRESENT;
|
||||||
crde->crd_skip += cse->txform->blocksize;
|
crde->crd_skip += cse->txform->ivsize;
|
||||||
crde->crd_len -= cse->txform->blocksize;
|
crde->crd_len -= cse->txform->ivsize;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((error = copyin(caead->tag, (caddr_t)cod->uio.uio_iov[0].iov_base +
|
if ((error = copyin(caead->tag, (caddr_t)cod->uio.uio_iov[0].iov_base +
|
||||||
|
Loading…
Reference in New Issue
Block a user