diff options
| author | Poul-Henning Kamp <phk@FreeBSD.org> | 2004-02-02 17:06:34 +0000 |
|---|---|---|
| committer | Poul-Henning Kamp <phk@FreeBSD.org> | 2004-02-02 17:06:34 +0000 |
| commit | c740ae4b464b7be48525c960012becb868982c9b (patch) | |
| tree | b489794db6e17663a36a6a8b957205b078d69ebb /sys/opencrypto | |
| parent | af30114b09ad71bc098c4ff42df15a5288583bb6 (diff) | |
Notes
Diffstat (limited to 'sys/opencrypto')
| -rw-r--r-- | sys/opencrypto/cryptodev.h | 1 | ||||
| -rw-r--r-- | sys/opencrypto/cryptosoft.c | 10 |
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) { |
