<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 class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
Recheck-request: iol-unit-amd64-testing</div>
<div id="appendonsend"></div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<hr style="display: inline-block; width: 98%;">
<div id="divRplyFwdMsg" dir="ltr"><span style="font-family: Calibri, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);"><b>From:</b> Dooley, Brian <brian.dooley@intel.com><br>
<b>Sent:</b> Wednesday, June 5, 2024 9:48 AM<br>
<b>To:</b> Ji, Kai <kai.ji@intel.com>; De Lara Guarch, Pablo <pablo.de.lara.guarch@intel.com><br>
<b>Cc:</b> dev@dpdk.org <dev@dpdk.org>; gakhil@marvell.com <gakhil@marvell.com>; Dooley, Brian <brian.dooley@intel.com><br>
<b>Subject:</b> [PATCH v1] crypto/ipsec_mb: use new ipad/opad calculation API</span>
<div> </div>
</div>
<div style="font-size: 11pt;">From: Pablo de Lara <pablo.de.lara.guarch@intel.com><br>
<br>
IPSec Multi-buffer library v1.4 added a new API to<br>
calculate inner/outer padding for HMAC-SHAx/MD5.<br>
<br>
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com><br>
Signed-off-by: Brian Dooley <brian.dooley@intel.com><br>
---<br>
drivers/crypto/ipsec_mb/pmd_aesni_mb.c | 34 +++++++++++++++++++++++++-<br>
1 file changed, 33 insertions(+), 1 deletion(-)<br>
<br>
diff --git a/drivers/crypto/ipsec_mb/pmd_aesni_mb.c b/drivers/crypto/ipsec_mb/pmd_aesni_mb.c<br>
index 69a546697b..b3fdea02ff 100644<br>
--- a/drivers/crypto/ipsec_mb/pmd_aesni_mb.c<br>
+++ b/drivers/crypto/ipsec_mb/pmd_aesni_mb.c<br>
@@ -13,6 +13,7 @@ struct aesni_mb_op_buf_data {<br>
uint32_t offset;<br>
};<br>
<br>
+#if IMB_VERSION(1, 3, 0) >= IMB_VERSION_NUM<br>
/**<br>
* Calculate the authentication pre-computes<br>
*<br>
@@ -55,6 +56,7 @@ calculate_auth_precomputes(hash_one_block_t one_block_hash,<br>
memset(ipad_buf, 0, blocksize);<br>
memset(opad_buf, 0, blocksize);<br>
}<br>
+#endif<br>
<br>
static inline int<br>
is_aead_algo(IMB_HASH_ALG hash_alg, IMB_CIPHER_MODE cipher_mode)<br>
@@ -66,12 +68,14 @@ is_aead_algo(IMB_HASH_ALG hash_alg, IMB_CIPHER_MODE cipher_mode)<br>
<br>
/** Set session authentication parameters */<br>
static int<br>
-aesni_mb_set_session_auth_parameters(const IMB_MGR *mb_mgr,<br>
+aesni_mb_set_session_auth_parameters(IMB_MGR *mb_mgr,<br>
struct aesni_mb_session *sess,<br>
const struct rte_crypto_sym_xform *xform)<br>
{<br>
+#if IMB_VERSION(1, 3, 0) >= IMB_VERSION_NUM<br>
hash_one_block_t hash_oneblock_fn = NULL;<br>
unsigned int key_larger_block_size = 0;<br>
+#endif<br>
uint8_t hashed_key[HMAC_MAX_BLOCK_SIZE] = { 0 };<br>
uint32_t auth_precompute = 1;<br>
<br>
@@ -267,18 +271,24 @@ aesni_mb_set_session_auth_parameters(const IMB_MGR *mb_mgr,<br>
switch (xform->auth.algo) {<br>
case RTE_CRYPTO_AUTH_MD5_HMAC:<br>
sess->template_job.hash_alg = IMB_AUTH_MD5;<br>
+#if IMB_VERSION(1, 3, 0) >= IMB_VERSION_NUM<br>
hash_oneblock_fn = mb_mgr->md5_one_block;<br>
+#endif<br>
break;<br>
case RTE_CRYPTO_AUTH_SHA1_HMAC:<br>
sess->template_job.hash_alg = IMB_AUTH_HMAC_SHA_1;<br>
+#if IMB_VERSION(1, 3, 0) >= IMB_VERSION_NUM<br>
hash_oneblock_fn = mb_mgr->sha1_one_block;<br>
+#endif<br>
if (xform->auth.key.length > get_auth_algo_blocksize(<br>
IMB_AUTH_HMAC_SHA_1)) {<br>
IMB_SHA1(mb_mgr,<br>
xform->auth.key.data,<br>
xform->auth.key.length,<br>
hashed_key);<br>
+#if IMB_VERSION(1, 3, 0) >= IMB_VERSION_NUM<br>
key_larger_block_size = 1;<br>
+#endif<br>
}<br>
break;<br>
case RTE_CRYPTO_AUTH_SHA1:<br>
@@ -287,14 +297,18 @@ aesni_mb_set_session_auth_parameters(const IMB_MGR *mb_mgr,<br>
break;<br>
case RTE_CRYPTO_AUTH_SHA224_HMAC:<br>
sess->template_job.hash_alg = IMB_AUTH_HMAC_SHA_224;<br>
+#if IMB_VERSION(1, 3, 0) >= IMB_VERSION_NUM<br>
hash_oneblock_fn = mb_mgr->sha224_one_block;<br>
+#endif<br>
if (xform->auth.key.length > get_auth_algo_blocksize(<br>
IMB_AUTH_HMAC_SHA_224)) {<br>
IMB_SHA224(mb_mgr,<br>
xform->auth.key.data,<br>
xform->auth.key.length,<br>
hashed_key);<br>
+#if IMB_VERSION(1, 3, 0) >= IMB_VERSION_NUM<br>
key_larger_block_size = 1;<br>
+#endif<br>
}<br>
break;<br>
case RTE_CRYPTO_AUTH_SHA224:<br>
@@ -303,14 +317,18 @@ aesni_mb_set_session_auth_parameters(const IMB_MGR *mb_mgr,<br>
break;<br>
case RTE_CRYPTO_AUTH_SHA256_HMAC:<br>
sess->template_job.hash_alg = IMB_AUTH_HMAC_SHA_256;<br>
+#if IMB_VERSION(1, 3, 0) >= IMB_VERSION_NUM<br>
hash_oneblock_fn = mb_mgr->sha256_one_block;<br>
+#endif<br>
if (xform->auth.key.length > get_auth_algo_blocksize(<br>
IMB_AUTH_HMAC_SHA_256)) {<br>
IMB_SHA256(mb_mgr,<br>
xform->auth.key.data,<br>
xform->auth.key.length,<br>
hashed_key);<br>
+#if IMB_VERSION(1, 3, 0) >= IMB_VERSION_NUM<br>
key_larger_block_size = 1;<br>
+#endif<br>
}<br>
break;<br>
case RTE_CRYPTO_AUTH_SHA256:<br>
@@ -319,14 +337,18 @@ aesni_mb_set_session_auth_parameters(const IMB_MGR *mb_mgr,<br>
break;<br>
case RTE_CRYPTO_AUTH_SHA384_HMAC:<br>
sess->template_job.hash_alg = IMB_AUTH_HMAC_SHA_384;<br>
+#if IMB_VERSION(1, 3, 0) >= IMB_VERSION_NUM<br>
hash_oneblock_fn = mb_mgr->sha384_one_block;<br>
+#endif<br>
if (xform->auth.key.length > get_auth_algo_blocksize(<br>
IMB_AUTH_HMAC_SHA_384)) {<br>
IMB_SHA384(mb_mgr,<br>
xform->auth.key.data,<br>
xform->auth.key.length,<br>
hashed_key);<br>
+#if IMB_VERSION(1, 3, 0) >= IMB_VERSION_NUM<br>
key_larger_block_size = 1;<br>
+#endif<br>
}<br>
break;<br>
case RTE_CRYPTO_AUTH_SHA384:<br>
@@ -335,14 +357,18 @@ aesni_mb_set_session_auth_parameters(const IMB_MGR *mb_mgr,<br>
break;<br>
case RTE_CRYPTO_AUTH_SHA512_HMAC:<br>
sess->template_job.hash_alg = IMB_AUTH_HMAC_SHA_512;<br>
+#if IMB_VERSION(1, 3, 0) >= IMB_VERSION_NUM<br>
hash_oneblock_fn = mb_mgr->sha512_one_block;<br>
+#endif<br>
if (xform->auth.key.length > get_auth_algo_blocksize(<br>
IMB_AUTH_HMAC_SHA_512)) {<br>
IMB_SHA512(mb_mgr,<br>
xform->auth.key.data,<br>
xform->auth.key.length,<br>
hashed_key);<br>
+#if IMB_VERSION(1, 3, 0) >= IMB_VERSION_NUM<br>
key_larger_block_size = 1;<br>
+#endif<br>
}<br>
break;<br>
case RTE_CRYPTO_AUTH_SHA512:<br>
@@ -376,6 +402,11 @@ aesni_mb_set_session_auth_parameters(const IMB_MGR *mb_mgr,<br>
return 0;<br>
<br>
/* Calculate Authentication precomputes */<br>
+#if IMB_VERSION(1, 3, 0) < IMB_VERSION_NUM<br>
+ imb_hmac_ipad_opad(mb_mgr, sess->template_job.hash_alg,<br>
+ xform->auth.key.data, xform->auth.key.length,<br>
+ sess->auth.pads.inner, sess->auth.pads.outer);<br>
+#else<br>
if (key_larger_block_size) {<br>
calculate_auth_precomputes(hash_oneblock_fn,<br>
sess->auth.pads.inner, sess->auth.pads.outer,<br>
@@ -389,6 +420,7 @@ aesni_mb_set_session_auth_parameters(const IMB_MGR *mb_mgr,<br>
xform->auth.key.length,<br>
get_auth_algo_blocksize(sess->template_job.hash_alg));<br>
}<br>
+#endif<br>
sess->template_job.u.HMAC._hashed_auth_key_xor_ipad =<br>
sess->auth.pads.inner;<br>
sess->template_job.u.HMAC._hashed_auth_key_xor_opad =<br>
--<br>
2.25.1<br>
<br>
</div>
</body>
</html>