<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: "IntelOne Text"; font-size: 10pt; color: rgb(0, 0, 0);" class="elementToProof">
Series-acked-by: Kai Ji <kai.ji@intel.com></div>
<div style="font-family: "IntelOne Text"; font-size: 10pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div id="appendonsend"></div>
<div><br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<hr style="display: inline-block; width: 98%;">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<b>From:</b> Nicolau, Radu <radu.nicolau@intel.com><br>
<b>Sent:</b> Wednesday, August 27, 2025 10:23<br>
<b>To:</b> dev@dpdk.org <dev@dpdk.org><br>
<b>Cc:</b> Nicolau, Radu <radu.nicolau@intel.com>; Ji, Kai <kai.ji@intel.com><br>
<b>Subject:</b> [PATCH 1/3] crypto/qat: Add ECDH, ECDSA and ECPM capabilities </div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-size: 11pt;">Add missing eliptic curves capabilities.<br>
Small fixes on ECDH implementation.<br>
<br>
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com><br>
---<br>
drivers/crypto/qat/dev/qat_asym_pmd_gen1.c | 13 +++++++++++++<br>
drivers/crypto/qat/qat_asym.c | 9 +++++++--<br>
2 files changed, 20 insertions(+), 2 deletions(-)<br>
<br>
diff --git a/drivers/crypto/qat/dev/qat_asym_pmd_gen1.c b/drivers/crypto/qat/dev/qat_asym_pmd_gen1.c<br>
index 67b1892c32..20001bd1cc 100644<br>
--- a/drivers/crypto/qat/dev/qat_asym_pmd_gen1.c<br>
+++ b/drivers/crypto/qat/dev/qat_asym_pmd_gen1.c<br>
@@ -38,6 +38,19 @@ static struct rte_cryptodev_capabilities qat_asym_crypto_caps_gen1[] = {<br>
(1 << RTE_CRYPTO_ASYM_OP_ENCRYPT) |<br>
(1 << RTE_CRYPTO_ASYM_OP_DECRYPT)),<br>
64, 512, 64),<br>
+ QAT_ASYM_CAP(ECDH,<br>
+ ((1 << RTE_CRYPTO_ASYM_KE_PUB_KEY_GENERATE) |<br>
+ (1 << RTE_CRYPTO_ASYM_KE_SHARED_SECRET_COMPUTE) |<br>
+ (1 << RTE_CRYPTO_ASYM_KE_PUB_KEY_VERIFY)),<br>
+ 64, 512, 64),<br>
+ QAT_ASYM_CAP(ECDSA,<br>
+ ((1 << RTE_CRYPTO_ASYM_OP_SIGN) |<br>
+ (1 << RTE_CRYPTO_ASYM_OP_VERIFY)),<br>
+ 64, 512, 64),<br>
+ QAT_ASYM_CAP(ECPM,<br>
+ ((1 << RTE_CRYPTO_ASYM_OP_SIGN) |<br>
+ (1 << RTE_CRYPTO_ASYM_OP_VERIFY)),<br>
+ 64, 512, 64),<br>
RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST()<br>
};<br>
<br>
diff --git a/drivers/crypto/qat/qat_asym.c b/drivers/crypto/qat/qat_asym.c<br>
index d8a1406819..bd22fc0a6f 100644<br>
--- a/drivers/crypto/qat/qat_asym.c<br>
+++ b/drivers/crypto/qat/qat_asym.c<br>
@@ -801,11 +801,14 @@ ecdh_set_input(struct icp_qat_fw_pke_request *qat_req,<br>
SET_PKE_LN(asym_op->ecdh.priv_key, qat_func_alignsize, 0);<br>
SET_PKE_LN_EC(curve[curve_id], x, 1);<br>
SET_PKE_LN_EC(curve[curve_id], y, 2);<br>
- } else {<br>
+ } else if (asym_op->ecdh.ke_type == RTE_CRYPTO_ASYM_KE_SHARED_SECRET_COMPUTE) {<br>
SET_PKE_LN(asym_op->ecdh.priv_key, qat_func_alignsize, 0);<br>
SET_PKE_LN(asym_op->ecdh.pub_key.x, qat_func_alignsize, 1);<br>
SET_PKE_LN(asym_op->ecdh.pub_key.y, qat_func_alignsize, 2);<br>
+ } else {<br>
+ return -EINVAL;<br>
}<br>
+<br>
SET_PKE_LN_EC(curve[curve_id], a, 3);<br>
SET_PKE_LN_EC(curve[curve_id], b, 4);<br>
SET_PKE_LN_EC(curve[curve_id], p, 5);<br>
@@ -894,11 +897,13 @@ ecdh_collect(struct rte_crypto_asym_op *asym_op,<br>
asym_op->ecdh.pub_key.y.length = alg_bytesize;<br>
x = asym_op->ecdh.pub_key.x.data;<br>
y = asym_op->ecdh.pub_key.y.data;<br>
- } else {<br>
+ } else if (asym_op->ecdh.ke_type == RTE_CRYPTO_ASYM_KE_SHARED_SECRET_COMPUTE) {<br>
asym_op->ecdh.shared_secret.x.length = alg_bytesize;<br>
asym_op->ecdh.shared_secret.y.length = alg_bytesize;<br>
x = asym_op->ecdh.shared_secret.x.data;<br>
y = asym_op->ecdh.shared_secret.y.data;<br>
+ } else {<br>
+ return -EINVAL;<br>
}<br>
<br>
rte_memcpy(x, &cookie->output_array[0][ltrim], alg_bytesize);<br>
--<br>
2.50.1<br>
<br>
</div>
</body>
</html>