aboutsummaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2020-04-20 22:24:49 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2020-04-20 22:24:49 +0000
commit29fe41ddd714bae92a09fd4098fad614945bedf5 (patch)
tree2692b7560f3c90d27ecdfe4de9a81c2c00514d15 /sys/dev
parent8cbde414199b0d2fd91c8eb770e74ec23852a9d4 (diff)
Notes
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/cesa/cesa.c13
-rw-r--r--sys/dev/cxgbe/crypto/t4_crypto.c28
-rw-r--r--sys/dev/glxsb/glxsb.c8
-rw-r--r--sys/dev/hifn/hifn7751.c16
-rw-r--r--sys/dev/safe/safe.c11
-rw-r--r--sys/dev/sec/sec.c14
-rw-r--r--sys/dev/ubsec/ubsec.c10
7 files changed, 12 insertions, 88 deletions
diff --git a/sys/dev/cesa/cesa.c b/sys/dev/cesa/cesa.c
index d4e056d2a09b..44cf77a8acc0 100644
--- a/sys/dev/cesa/cesa.c
+++ b/sys/dev/cesa/cesa.c
@@ -1791,17 +1791,8 @@ cesa_process(device_t dev, struct cryptop *crp, int hint)
CESA_LOCK(sc, sessions);
cesa_sync_desc(sc, BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE);
- if (csp->csp_cipher_alg != 0) {
- if (crp->crp_flags & CRYPTO_F_IV_GENERATE) {
- arc4rand(cr->cr_csd->csd_iv, csp->csp_ivlen, 0);
- crypto_copyback(crp, crp->crp_iv_start, csp->csp_ivlen,
- cr->cr_csd->csd_iv);
- } else if (crp->crp_flags & CRYPTO_F_IV_SEPARATE)
- memcpy(cr->cr_csd->csd_iv, crp->crp_iv, csp->csp_ivlen);
- else
- crypto_copydata(crp, crp->crp_iv_start, csp->csp_ivlen,
- cr->cr_csd->csd_iv);
- }
+ if (csp->csp_cipher_alg != 0)
+ crypto_read_iv(crp, cr->cr_csd->csd_iv);
if (crp->crp_cipher_key != NULL) {
memcpy(cs->cs_key, crp->crp_cipher_key,
diff --git a/sys/dev/cxgbe/crypto/t4_crypto.c b/sys/dev/cxgbe/crypto/t4_crypto.c
index d11de329559c..7a57dfed2e3f 100644
--- a/sys/dev/cxgbe/crypto/t4_crypto.c
+++ b/sys/dev/cxgbe/crypto/t4_crypto.c
@@ -665,19 +665,7 @@ ccr_blkcipher(struct ccr_softc *sc, struct ccr_session *s, struct cryptop *crp)
crwr = wrtod(wr);
memset(crwr, 0, wr_len);
- /*
- * Read the existing IV from the request or generate a random
- * one if none is provided.
- */
- if (crp->crp_flags & CRYPTO_F_IV_GENERATE) {
- arc4rand(iv, s->blkcipher.iv_len, 0);
- crypto_copyback(crp, crp->crp_iv_start, s->blkcipher.iv_len,
- iv);
- } else if (crp->crp_flags & CRYPTO_F_IV_SEPARATE)
- memcpy(iv, crp->crp_iv, s->blkcipher.iv_len);
- else
- crypto_copydata(crp, crp->crp_iv_start, s->blkcipher.iv_len,
- iv);
+ crypto_read_iv(crp, iv);
/* Zero the remainder of the IV for AES-XTS. */
memset(iv + s->blkcipher.iv_len, 0, iv_len - s->blkcipher.iv_len);
@@ -968,19 +956,7 @@ ccr_eta(struct ccr_softc *sc, struct ccr_session *s, struct cryptop *crp)
crwr = wrtod(wr);
memset(crwr, 0, wr_len);
- /*
- * Read the existing IV from the request or generate a random
- * one if none is provided.
- */
- if (crp->crp_flags & CRYPTO_F_IV_GENERATE) {
- arc4rand(iv, s->blkcipher.iv_len, 0);
- crypto_copyback(crp, crp->crp_iv_start, s->blkcipher.iv_len,
- iv);
- } else if (crp->crp_flags & CRYPTO_F_IV_SEPARATE)
- memcpy(iv, crp->crp_iv, s->blkcipher.iv_len);
- else
- crypto_copydata(crp, crp->crp_iv_start, s->blkcipher.iv_len,
- iv);
+ crypto_read_iv(crp, iv);
/* Zero the remainder of the IV for AES-XTS. */
memset(iv + s->blkcipher.iv_len, 0, iv_len - s->blkcipher.iv_len);
diff --git a/sys/dev/glxsb/glxsb.c b/sys/dev/glxsb/glxsb.c
index 0e80b1dba2aa..b8a835330993 100644
--- a/sys/dev/glxsb/glxsb.c
+++ b/sys/dev/glxsb/glxsb.c
@@ -659,13 +659,7 @@ glxsb_crypto_encdec(struct cryptop *crp, struct glxsb_session *ses,
else
control = SB_CTL_DEC;
- if (crp->crp_flags & CRYPTO_F_IV_GENERATE) {
- arc4rand(op_iv, sizeof(op_iv), 0);
- crypto_copyback(crp, crp->crp_iv_start, sizeof(op_iv), op_iv);
- } else if (crp->crp_flags & CRYPTO_F_IV_SEPARATE)
- memcpy(op_iv, crp->crp_iv, sizeof(op_iv));
- else
- crypto_copydata(crp, crp->crp_iv_start, sizeof(op_iv), op_iv);
+ crypto_read_iv(crp, op_iv);
offset = 0;
tlen = crp->crp_payload_length;
diff --git a/sys/dev/hifn/hifn7751.c b/sys/dev/hifn/hifn7751.c
index 7f1889767090..ae642383860e 100644
--- a/sys/dev/hifn/hifn7751.c
+++ b/sys/dev/hifn/hifn7751.c
@@ -2431,7 +2431,7 @@ hifn_process(device_t dev, struct cryptop *crp, int hint)
struct hifn_softc *sc = device_get_softc(dev);
struct hifn_command *cmd = NULL;
const void *mackey;
- int err, ivlen, keylen;
+ int err, keylen;
struct hifn_session *ses;
ses = crypto_get_driver_session(crp->crp_session);
@@ -2485,18 +2485,8 @@ hifn_process(device_t dev, struct cryptop *crp, int hint)
err = EINVAL;
goto errout;
}
- if (csp->csp_cipher_alg != CRYPTO_ARC4) {
- ivlen = csp->csp_ivlen;
- if (crp->crp_flags & CRYPTO_F_IV_GENERATE) {
- arc4rand(cmd->iv, ivlen, 0);
- crypto_copyback(crp, crp->crp_iv_start, ivlen,
- cmd->iv);
- } else if (crp->crp_flags & CRYPTO_F_IV_SEPARATE)
- memcpy(cmd->iv, crp->crp_iv, ivlen);
- else
- crypto_copydata(crp, crp->crp_iv_start, ivlen,
- cmd->iv);
- }
+ if (csp->csp_cipher_alg != CRYPTO_ARC4)
+ crypto_read_iv(crp, cmd->iv);
if (crp->crp_cipher_key != NULL)
cmd->ck = crp->crp_cipher_key;
diff --git a/sys/dev/safe/safe.c b/sys/dev/safe/safe.c
index 99f16de56c50..80e938155b09 100644
--- a/sys/dev/safe/safe.c
+++ b/sys/dev/safe/safe.c
@@ -894,16 +894,7 @@ safe_process(device_t dev, struct cryptop *crp, int hint)
* in the state record and set the hash/crypt offset to
* copy both the header+IV.
*/
- if (crp->crp_flags & CRYPTO_F_IV_GENERATE) {
- arc4rand(re->re_sastate.sa_saved_iv, csp->csp_ivlen, 0);
- crypto_copyback(crp, crp->crp_iv_start, csp->csp_ivlen,
- re->re_sastate.sa_saved_iv);
- } else if (crp->crp_flags & CRYPTO_F_IV_SEPARATE)
- memcpy(re->re_sastate.sa_saved_iv, crp->crp_iv,
- csp->csp_ivlen);
- else
- crypto_copydata(crp, crp->crp_iv_start, csp->csp_ivlen,
- re->re_sastate.sa_saved_iv);
+ crypto_read_iv(crp, re->re_sastate.sa_saved_iv);
cmd0 |= SAFE_SA_CMD0_IVLD_STATE;
if (CRYPTO_OP_IS_ENCRYPT(crp->crp_op)) {
diff --git a/sys/dev/sec/sec.c b/sys/dev/sec/sec.c
index 3b3ea0018060..50f2e425657d 100644
--- a/sys/dev/sec/sec.c
+++ b/sys/dev/sec/sec.c
@@ -1285,18 +1285,8 @@ sec_process(device_t dev, struct cryptop *crp, int hint)
desc->sd_error = 0;
desc->sd_crp = crp;
- if (csp->csp_cipher_alg != 0) {
- if (crp->crp_flags & CRYPTO_F_IV_GENERATE) {
- arc4rand(desc->sd_desc->shd_iv, csp->csp_ivlen, 0);
- crypto_copyback(crp, crp->crp_iv_start, csp->csp_ivlen,
- desc->sd_desc->shd_iv);
- } else if (crp->crp_flags & CRYPTO_F_IV_SEPARATE)
- memcpy(desc->sd_desc->shd_iv, crp->crp_iv,
- csp->csp_ivlen);
- else
- crypto_copydata(crp, crp->crp_iv_start, csp->csp_ivlen,
- desc->sd_desc->shd_iv);
- }
+ if (csp->csp_cipher_alg != 0)
+ crypto_read_iv(crp, desc->sd_desc->shd_iv);
if (crp->crp_cipher_key != NULL)
memcpy(ses->ss_key, crp->crp_cipher_key, csp->csp_cipher_klen);
diff --git a/sys/dev/ubsec/ubsec.c b/sys/dev/ubsec/ubsec.c
index e4b324e05f86..bb5c1fe74c94 100644
--- a/sys/dev/ubsec/ubsec.c
+++ b/sys/dev/ubsec/ubsec.c
@@ -1043,15 +1043,7 @@ ubsec_process(device_t dev, struct cryptop *crp, int hint)
ctx.pc_flags |= htole16(UBS_PKTCTX_ENC_3DES);
- if (crp->crp_flags & CRYPTO_F_IV_GENERATE) {
- arc4rand(ctx.pc_iv, csp->csp_ivlen, 0);
- crypto_copyback(crp, crp->crp_iv_start,
- csp->csp_ivlen, ctx.pc_iv);
- } else if (crp->crp_flags & CRYPTO_F_IV_SEPARATE)
- memcpy(ctx.pc_iv, crp->crp_iv, csp->csp_ivlen);
- else
- crypto_copydata(crp, crp->crp_iv_start, csp->csp_ivlen,
- ctx.pc_iv);
+ crypto_read_iv(crp, ctx.pc_iv);
if (!CRYPTO_OP_IS_ENCRYPT(crp->crp_op)) {
ctx.pc_flags |= htole16(UBS_PKTCTX_INBOUND);