aboutsummaryrefslogtreecommitdiff
path: root/sys/opencrypto
diff options
context:
space:
mode:
authorPoul-Henning Kamp <phk@FreeBSD.org>2004-02-02 17:06:34 +0000
committerPoul-Henning Kamp <phk@FreeBSD.org>2004-02-02 17:06:34 +0000
commitc740ae4b464b7be48525c960012becb868982c9b (patch)
treeb489794db6e17663a36a6a8b957205b078d69ebb /sys/opencrypto
parentaf30114b09ad71bc098c4ff42df15a5288583bb6 (diff)
Notes
Diffstat (limited to 'sys/opencrypto')
-rw-r--r--sys/opencrypto/cryptodev.h1
-rw-r--r--sys/opencrypto/cryptosoft.c10
2 files changed, 11 insertions, 0 deletions
diff --git a/sys/opencrypto/cryptodev.h b/sys/opencrypto/cryptodev.h
index ec166e81ce90..0da86330528f 100644
--- a/sys/opencrypto/cryptodev.h
+++ b/sys/opencrypto/cryptodev.h
@@ -227,6 +227,7 @@ struct cryptodesc {
place, so don't copy. */
#define CRD_F_IV_EXPLICIT 0x04 /* IV explicitly provided */
#define CRD_F_DSA_SHA_NEEDED 0x08 /* Compute SHA-1 of buffer for DSA */
+#define CRD_F_KEY_EXPLICIT 0x10 /* Key explicitly provided */
#define CRD_F_COMP 0x0f /* Set when doing compression */
struct cryptoini CRD_INI; /* Initialization/context data */
diff --git a/sys/opencrypto/cryptosoft.c b/sys/opencrypto/cryptosoft.c
index 051edbd0e0ff..4a0c837d657d 100644
--- a/sys/opencrypto/cryptosoft.c
+++ b/sys/opencrypto/cryptosoft.c
@@ -148,6 +148,16 @@ swcr_encdec(struct cryptodesc *crd, struct swcr_data *sw, caddr_t buf,
}
}
+ if (crd->crd_flags & CRD_F_KEY_EXPLICIT) {
+ int error;
+
+ if (sw->sw_kschedule)
+ exf->zerokey(&(sw->sw_kschedule));
+ error = exf->setkey(&sw->sw_kschedule,
+ crd->crd_key, crd->crd_klen / 8);
+ if (error)
+ return (error);
+ }
ivp = iv;
if (outtype == CRYPTO_BUF_CONTIG) {