Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 26 Mar 2018 20:30:07 +0000 (UTC)
From:      Conrad Meyer <cem@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r331579 - head/sys/opencrypto
Message-ID:  <201803262030.w2QKU7cB016767@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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 +



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201803262030.w2QKU7cB016767>