crypto/openssl: support truncated HMAC operations
authorDmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org>
Tue, 2 Oct 2018 20:00:03 +0000 (23:00 +0300)
committerAkhil Goyal <akhil.goyal@nxp.com>
Wed, 17 Oct 2018 10:20:06 +0000 (12:20 +0200)
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>
drivers/crypto/openssl/rte_openssl_pmd.c
drivers/crypto/openssl/rte_openssl_pmd_ops.c

index 7cf4219..003116d 100644 (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)
index 4ad8fa1..c2b029e 100644 (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 }
                        }, }