summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/opencrypto/cryptodev.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-08-21 09:39:55 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-09-21 10:29:40 +0200
commit2df56dbd60bb5d925d2ce0ddbdefdbe6107ea783 (patch)
treebd7bad558534db4a1f400bc38a2c9aa7ea4f411e /freebsd/sys/opencrypto/cryptodev.c
parentUpdate to FreeBSD head 2018-02-01 (diff)
downloadrtems-libbsd-2df56dbd60bb5d925d2ce0ddbdefdbe6107ea783.tar.bz2
Update to FreeBSD head 2018-04-01
Git mirror commit 8dfb1ccc26d1cea7e2529303003ff61f9f1784c4. Update #3472.
Diffstat (limited to 'freebsd/sys/opencrypto/cryptodev.c')
-rw-r--r--freebsd/sys/opencrypto/cryptodev.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/freebsd/sys/opencrypto/cryptodev.c b/freebsd/sys/opencrypto/cryptodev.c
index c24af195..3a9ed6e3 100644
--- a/freebsd/sys/opencrypto/cryptodev.c
+++ b/freebsd/sys/opencrypto/cryptodev.c
@@ -449,6 +449,9 @@ cryptof_ioctl(
case CRYPTO_AES_NIST_GCM_16:
txform = &enc_xform_aes_nist_gcm;
break;
+ case CRYPTO_CHACHA20:
+ txform = &enc_xform_chacha20;
+ break;
default:
CRYPTDEB("invalid cipher");
@@ -498,6 +501,14 @@ cryptof_ioctl(
case CRYPTO_NULL_HMAC:
thash = &auth_hash_null;
break;
+
+ case CRYPTO_BLAKE2B:
+ thash = &auth_hash_blake2b;
+ break;
+ case CRYPTO_BLAKE2S:
+ thash = &auth_hash_blake2s;
+ break;
+
default:
CRYPTDEB("invalid mac");
SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__);
@@ -873,7 +884,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;
}
@@ -883,8 +894,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) {
@@ -1051,8 +1062,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 +