crypto/openssl: support truncated HMAC operations

IPsec requires truncated HMAC operations support. Extend OpenSSL crypto
PMD to support truncated HMAC operations necessary for IPsec.

Signed-off-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
This commit is contained in:
Dmitry Eremin-Solenikov 2018-10-02 23:00:03 +03:00 committed by Akhil Goyal
parent 9c4491cf5c
commit c3d22a6522
2 changed files with 24 additions and 23 deletions

View File

@ -1509,15 +1509,7 @@ process_openssl_auth_op(struct openssl_qp *qp, struct rte_crypto_op *op,
srclen = op->sym->auth.data.length;
if (sess->auth.operation == RTE_CRYPTO_AUTH_OP_VERIFY)
dst = qp->temp_digest;
else {
dst = op->sym->auth.digest.data;
if (dst == NULL)
dst = rte_pktmbuf_mtod_offset(mbuf_dst, uint8_t *,
op->sym->auth.data.offset +
op->sym->auth.data.length);
}
dst = qp->temp_digest;
switch (sess->auth.mode) {
case OPENSSL_AUTH_AS_AUTH:
@ -1540,6 +1532,15 @@ process_openssl_auth_op(struct openssl_qp *qp, struct rte_crypto_op *op,
sess->auth.digest_length) != 0) {
op->status = RTE_CRYPTO_OP_STATUS_AUTH_FAILED;
}
} else {
uint8_t *auth_dst;
auth_dst = op->sym->auth.digest.data;
if (auth_dst == NULL)
auth_dst = rte_pktmbuf_mtod_offset(mbuf_dst, uint8_t *,
op->sym->auth.data.offset +
op->sym->auth.data.length);
memcpy(auth_dst, dst, sess->auth.digest_length);
}
if (status != 0)

View File

@ -26,9 +26,9 @@ static const struct rte_cryptodev_capabilities openssl_pmd_capabilities[] = {
.increment = 1
},
.digest_size = {
.min = 16,
.min = 1,
.max = 16,
.increment = 0
.increment = 1
},
.iv_size = { 0 }
}, }
@ -68,9 +68,9 @@ static const struct rte_cryptodev_capabilities openssl_pmd_capabilities[] = {
.increment = 1
},
.digest_size = {
.min = 20,
.min = 1,
.max = 20,
.increment = 0
.increment = 1
},
.iv_size = { 0 }
}, }
@ -110,9 +110,9 @@ static const struct rte_cryptodev_capabilities openssl_pmd_capabilities[] = {
.increment = 1
},
.digest_size = {
.min = 28,
.min = 1,
.max = 28,
.increment = 0
.increment = 1
},
.iv_size = { 0 }
}, }
@ -131,9 +131,9 @@ static const struct rte_cryptodev_capabilities openssl_pmd_capabilities[] = {
.increment = 0
},
.digest_size = {
.min = 28,
.min = 1,
.max = 28,
.increment = 0
.increment = 1
},
.iv_size = { 0 }
}, }
@ -152,9 +152,9 @@ static const struct rte_cryptodev_capabilities openssl_pmd_capabilities[] = {
.increment = 1
},
.digest_size = {
.min = 32,
.min = 1,
.max = 32,
.increment = 0
.increment = 1
},
.iv_size = { 0 }
}, }
@ -194,9 +194,9 @@ static const struct rte_cryptodev_capabilities openssl_pmd_capabilities[] = {
.increment = 1
},
.digest_size = {
.min = 48,
.min = 1,
.max = 48,
.increment = 0
.increment = 1
},
.iv_size = { 0 }
}, }
@ -236,9 +236,9 @@ static const struct rte_cryptodev_capabilities openssl_pmd_capabilities[] = {
.increment = 1
},
.digest_size = {
.min = 64,
.min = 1,
.max = 64,
.increment = 0
.increment = 1
},
.iv_size = { 0 }
}, }