From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id EC38D45AE3; Tue, 8 Oct 2024 19:07:03 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BA7D5402A9; Tue, 8 Oct 2024 19:07:03 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) by mails.dpdk.org (Postfix) with ESMTP id B46404021E for ; Tue, 8 Oct 2024 19:07:01 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1728407222; x=1759943222; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=zSu9tRNCUSEYyromDn5cUPyNOH+ELsqrn5cC5SP5n3A=; b=aewRkti/eTS59c2+pZ/sR6HriwoGnvi+ywawSbzXGK4xpse01V5EugAW K9JDKmyGHmnxK7yIQnGUBR5o3WxqFqTHqUG3f/oomtGLXzNMs5x6deB84 3rX5Ui7moYR7A4AslZu2n6QLaYUMDwCllTHmUqK2pOjn9EIEigslZyAj0 OUwJbhCsabsA7LHaRQQTiL0lYhTFeZr1MR/XgDKt0CE1R5HjjvRXfhhER x7KhRqnwm3m45B9L/pWXBaFg9WDGNSyF4LVE8eW0KWTzGmKM/vA50lRGK /JSCQCJFam3QpnYkHV/GEQgA2OL01PMQPjdLl23A0o40wHrpnqaw746Z/ w==; X-CSE-ConnectionGUID: tbBDR23aSnujIdMSPfKREw== X-CSE-MsgGUID: pUH7QsI3Sgyk0ejcQxvNcw== X-IronPort-AV: E=McAfee;i="6700,10204,11219"; a="27576215" X-IronPort-AV: E=Sophos;i="6.11,187,1725346800"; d="scan'208";a="27576215" Received: from fmviesa005.fm.intel.com ([10.60.135.145]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Oct 2024 10:07:01 -0700 X-CSE-ConnectionGUID: FCVyL79ZRDK0eEvsq1S3Sg== X-CSE-MsgGUID: GtPfrqY+SE+mOkuaLfCFpg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.11,187,1725346800"; d="scan'208";a="80339944" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmviesa005.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 08 Oct 2024 10:07:00 -0700 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Tue, 8 Oct 2024 10:06:59 -0700 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Tue, 8 Oct 2024 10:06:59 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39 via Frontend Transport; Tue, 8 Oct 2024 10:06:59 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.47) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Tue, 8 Oct 2024 10:06:59 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Rz4ExsCfugTKlSeGM5driDR6QNuwxgGKSFZKCY4ey3XWwIiZIVNf4seK4fIuUutB3uqEuPJjELyWkUZJUwK6cCJ/xXCWB13dsPItWIE/MEjhEN+YZm28IyBhHvm8p1ovY/QJih0WNJUFftwZ+xQcASuR3eOiiDD4nvxK16ke8NdH1HHXtoYfL2uNe4JKv7KP+lHrYnhkWDvecQm89uTmpBgOpE5bmvcMDplWkExxmY3T7UFYIyPtHUNFtu2J2WFTTfwa/ZXpOrPnn4RFZTdMhdJprepLPa9cEqwDfoER6CgmsdRiPpgqJp3uUjrj6gGWaSuODM6DBSLpNTvlz3hXqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=BaRTirRubq9LStIvYzA9EJs+y3asmcfest8bxErOCxQ=; b=qO5LqXY5zoQJkY5+Fv55Uk0SpQ3/hUj/LqAsNkwf0PC1Z4T/9Xpv5+9g1yA8rT9778vWrNlkpbPzM1KG0Abx5PYXSHOlJei0ndmUW2fB8FKr44PVpsjK3AL8oTXJtEfNjG6j28hyAc451CBdAksvzNBGmyqUtykXgOXLSxEm4+NjmEW0h1r2gF9HRcgU9rVQ3K9Wt3TlKjwPJQ/duoM2To7XZUthEdWMhNXYWgJr+yyqz1hISLaYLoXgpdAwpTRyPQS7S+iZsij0ACFCy6x9jThP/an4l2LDxeNJ2ioLikW7+tXEkR8Uy+mX9Z90fNlZUXUYpW+xx486bPYYW0r44g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from PH0PR11MB5013.namprd11.prod.outlook.com (2603:10b6:510:30::21) by PH0PR11MB5046.namprd11.prod.outlook.com (2603:10b6:510:3b::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Tue, 8 Oct 2024 17:06:54 +0000 Received: from PH0PR11MB5013.namprd11.prod.outlook.com ([fe80::1c54:1589:8882:d22b]) by PH0PR11MB5013.namprd11.prod.outlook.com ([fe80::1c54:1589:8882:d22b%3]) with mapi id 15.20.8026.020; Tue, 8 Oct 2024 17:06:54 +0000 From: "Kusztal, ArkadiuszX" To: Gowrishankar Muthukrishnan , "dev@dpdk.org" , Akhil Goyal , Fan Zhang , Ankur Dwivedi , Anoob Joseph , Tejasree Kondoj , "Ji, Kai" CC: "FanZhangfanzhang.oss@gmail.com" , "jerinj@marvell.com" Subject: RE: [PATCH v2] cryptodev: add asymmetric operational capability Thread-Topic: [PATCH v2] cryptodev: add asymmetric operational capability Thread-Index: AQHbFokXkU8aI1pehkuzyzIVOTn6GLJ9Goxw Date: Tue, 8 Oct 2024 17:06:54 +0000 Message-ID: References: <20240905181725.2040-1-gmuthukrishn@marvell.com> <20241004181255.916-1-gmuthukrishn@marvell.com> In-Reply-To: <20241004181255.916-1-gmuthukrishn@marvell.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH0PR11MB5013:EE_|PH0PR11MB5046:EE_ x-ms-office365-filtering-correlation-id: baa3acdb-6b38-4f3a-837d-08dce7bb9c34 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|376014|366016|38070700018; x-microsoft-antispam-message-info: =?us-ascii?Q?HTGFPL4DVWRtjrYGlEam6WhmiK3fGT1pCwp1sXzgp9HkOxg+JYaYH6oegou0?= =?us-ascii?Q?wJ5t6JpvvXDggPjCPaLmrFBEaUYNzPNux3IzBJ/Nt09w6VoZL56ozWpoUCCE?= =?us-ascii?Q?64GNXleyuqIqtL2Lvu2I+7DuybcxfotgPaBSPHkkfBitaEkyLZZoFS+xlRez?= =?us-ascii?Q?DG592x860ZXu9QIS6Wyk/Li/WOeicZTEWt/VhjRkW3wS9XjnZ2FLCF2ZHlBi?= =?us-ascii?Q?Sk+wASp/znbFgzBV5RbL4kQSpqPJrfVwX+Zy4c0jJ4fw6aucBxNvvLXur5DX?= =?us-ascii?Q?OXZlIEpIWNS2CKL8V2MqVyue7BldL3UnZvoppdbGXeeO4TnRLdf6ygmu/hwU?= =?us-ascii?Q?AQeoxbgnQFsIOJwXrpS+xKjFdtg57NizaWsmiqKJaqfLv28L+xQObbjVMCet?= =?us-ascii?Q?YXUn6cX8ZXoS/E3xPs3O4eFdJ+RNPxhnemuzJJQEjyl/tz/1EhnSbpWU1Dej?= =?us-ascii?Q?sxti0GcvPZqhfeqrbVolTd4IEvsWEBCiaiHrykcdTuImVj8vGORVdnenPjoP?= =?us-ascii?Q?/hdY2V+t3hVmNdyPdD1TvToF32NZNvIAOaBBR1ZSzPFERVEjCyCLf/xSu4ZP?= =?us-ascii?Q?G8964ljjXnSOLUePsx6nXgEFLRIeLJ3B5kyj7HpZyq56NsPR8xXB4qFRufM4?= =?us-ascii?Q?bpVUpOjW2cujRWoixuFwZ+7I6d6St+fy/JNLYHE4PUfKfnxwZVB8UBGnBnCr?= =?us-ascii?Q?ak/bi4UYRr9fepQC9fEq+p25bvApDRI/qAt1pEP+KOBWb0Kh37u7Mp/Y1EDo?= =?us-ascii?Q?xrS/cm03mPoZicftQQZ4wPtGA6nkiyLPswmzCGhjeP9rWDt86BcnCggi68on?= =?us-ascii?Q?VNGTH3yVwqpG4eOXDFRpZhkpSo3cKDDeuyVA3wNFi6L4tyEQftoPYTgMkLg5?= =?us-ascii?Q?1vKENOUs9tPnE7HB+mS4r+sIYmnaT5eJsdBUzRbSiUGEms2QehxbxGMxd34i?= =?us-ascii?Q?R2FILLuyel1N0wKS5AoaB5HMMbng6WMpOhh6dvO93HBgP6R2UCxkLHRjuUmp?= =?us-ascii?Q?ahJFHiXRZdFp3IJ4zd3HdM5+0fjL8kcSbDAg1pAflo/GfesFhhVZGNiIdGz1?= =?us-ascii?Q?iqM1mX9PGrprg4i+fZiu14nvBD9FzvqI3ugQS7eEyzJXToc7MB5TkmGHzGLL?= =?us-ascii?Q?TTcx1I9My/7tFU9NdQXEI6pTtpoW+US4W0TeCiWCdQCE2mFtd8ldzlVRcEBw?= =?us-ascii?Q?5x0T76B5Z0/5HG0RPiFKqHco/RhmHwMhJgpHxUZG9uMrJ3sBbb9CKECWj3mu?= =?us-ascii?Q?xtGP1uGJ8Y4yFIpS6zGf9Ho8ynRJiNmcgMLR2esNQVTEV8sHXigtIBUUxmtV?= =?us-ascii?Q?e7ncg961mkjpLdO3xYLXdddYHU2YGvyUN7kST9NnTio+Tg=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR11MB5013.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(366016)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?MrkW6Ws/33XKwf5K2s0QQYBIgzfw9GEE0uYQpOWQw/6nAXlxB9PdrkhC0baG?= =?us-ascii?Q?E243BAiyheEv2k6+dF4HQ3dywV/YCNEn0fKsvR3LiQZRDJcInus33Ow6ntW3?= =?us-ascii?Q?IefIztU9+F5LyeGYVr8skKR7I5o2O2yi63R7IJpwcBUZY/bCylqk0FsehbT3?= =?us-ascii?Q?nYBqnBW8FhQfTqr26D3zZfPWUdWJpkoYi9AYcGOaORc3cvD136zMfeVmka2Y?= =?us-ascii?Q?J/ngRWKqxW3LPDzfkycnP5ixmyK4XfTbNWh7bEbKscKRdH3HEVT/BJBabFCg?= =?us-ascii?Q?fMf2HsWEJvl4qQSRr/ezOQKuICPpKSgeHJrUJ3mKH3NEe25enDU3SoIDD9zz?= =?us-ascii?Q?ianKCpsFqz8qYTfzCxVHw41xc0PR/RNEkrjAfG0Dd8ev8f4MUeahstTD5zQD?= =?us-ascii?Q?/vnEdGXIgM7EtPFkm0x0qPuOP6HnHHf+veQztWmKILZbYjc0RcJUpRBO1bPW?= =?us-ascii?Q?S5auSKQ5UCbEnXiZw8uUeCQo85dFPc+3LaryD2pgQmv3Eu4i0mboIhwu09M7?= =?us-ascii?Q?wxLq/2BrjUqgvK0cpQvD2QdALOLCBrizlJG2akSIY5/zTO2urjA7ZGqLrM1M?= =?us-ascii?Q?MBksmNZkzRAcYMgI7Q72JdY3cOboCxEI28zJhHRGm3aRHipfKGcaCvf9Esjc?= =?us-ascii?Q?UtvpDDiCuoC2fKH8R4ziTrTXym2CFQ/1H00RafT3OdryGbKaoa2LdvNTs38L?= =?us-ascii?Q?/Gg4Ptwofduid0FAb96GgJjYfUDVRWLyckV/kuy3qtco2uPIhrLlGY5XKKn4?= =?us-ascii?Q?Vt8Sdhk8FNQftM1P58oqHb1Bt2ehLShpiekZTX1QFZy36ZWYjERd1KoQyppk?= =?us-ascii?Q?X/aUeqyqvl39E1pwZ0rg8gAOf6V2LfFe89jz65SEU/IxpvkeRaD2nMAwRVPh?= =?us-ascii?Q?paCIjqAPOm72AUFBY3H3bTxkqhFP/i08SqHPdhnzUtGgzxkzbDudumS7UDY0?= =?us-ascii?Q?JupcBxV3zFr9VSf8SZdLKVWQitk5nqD2b1lNGqVxg5Ai6AHE2uQd3Xp08ihQ?= =?us-ascii?Q?mtSxvRy8SL+Z7iJFCdcW0plwG4+1lPyU46UpJbMeJlCaQOVzPcWovhcBWemz?= =?us-ascii?Q?1367sHjk/L6vxk3dfZCAK2MlDpgYItoqivH3gm5QT9XGpC93oA1f3Eo/Sk5l?= =?us-ascii?Q?AyWSUI0dElB7ck5Ovb+YJbTp90tlUliMOFt7J6hrYFfy4gN/ejD8kBcHp2rU?= =?us-ascii?Q?DtDGMRuHNXa2yofuvQBJIejj5v5pkYa58z7FpWuHmX57GU3RxG0fPmgE9BxX?= =?us-ascii?Q?ZJQnDDUMZoBBAHiPz0pDN92jUzFlkpEfU07wYZVC1YUf/tmJcehXbK6O0syW?= =?us-ascii?Q?8umShFh+jZMnzhLnMhCMSsyZrVIJynCsCQ9ET2kOnq9uUoOdEZ+gK/g/2Psp?= =?us-ascii?Q?USvAjetBFUxA+1GfoUq/RjMB0ezatsSwbjk0mkLwUBNuf+V/7tLuyQYzhnqq?= =?us-ascii?Q?+B66C/GX2kF/ZwP8quTH53/DzKZgCAsTiJwUzRGqN8MAj+TZygmrdg7IkeBu?= =?us-ascii?Q?+gjvuHfGWiovJVYqMDR4rxHCLTTf7Wc/eYemEOqDegrJJ8wnzM/rfwkZDmhm?= =?us-ascii?Q?hFWA23c4T72P22BVNYMD1FZbEr4EAMdwlp5kTnWqUtwyTvZs7/w5MWUFcd5J?= =?us-ascii?Q?MA=3D=3D?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB5013.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: baa3acdb-6b38-4f3a-837d-08dce7bb9c34 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Oct 2024 17:06:54.4903 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: SlsPgnz8R6IfL7NDfgLwBDXXkgPrN7msl5QednPUEm1pC2cMidiJ6J+DhNPc1xKn0S7z6V0QN0zwMFOPb2Fkt9Ovm6AgIa2yFefJLebArUI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5046 X-OriginatorOrg: intel.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Acked-by: Arkadiusz Kusztal With some comments. > -----Original Message----- > From: Gowrishankar Muthukrishnan > Sent: Friday, October 4, 2024 8:13 PM > To: dev@dpdk.org; Kusztal, ArkadiuszX ; Akh= il > Goyal ; Fan Zhang ; Ankur > Dwivedi ; Anoob Joseph ; > Tejasree Kondoj ; Ji, Kai > Cc: FanZhangfanzhang.oss@gmail.com; jerinj@marvell.com; Gowrishankar > Muthukrishnan > Subject: [PATCH v2] cryptodev: add asymmetric operational capability >=20 > Asymmetric crypto algorithms such as SM2, EdDSA would need per op capabil= ity > and based on it, the input param to a crypto operation is chosen wisely. >=20 > Signed-off-by: Gowrishankar Muthukrishnan > --- > v2: > - op_capa is array of int instead of structure. > - compilation issues addressed. > --- > app/test/test_cryptodev_asym.c | 24 ++++++++++++------- > .../crypto/cnxk/cnxk_cryptodev_capabilities.c | 8 ++++++- > drivers/crypto/openssl/rte_openssl_pmd_ops.c | 17 +++++++++---- > lib/cryptodev/rte_crypto_asym.h | 12 ++++++++++ > lib/cryptodev/rte_cryptodev.c | 16 +++++++++++++ > lib/cryptodev/rte_cryptodev.h | 23 ++++++++++++++++++ > lib/cryptodev/version.map | 3 +++ > 7 files changed, 89 insertions(+), 14 deletions(-) >=20 > diff --git a/app/test/test_cryptodev_asym.c b/app/test/test_cryptodev_asy= m.c > index f0b5d38543..d9b260d50e 100644 > --- a/app/test/test_cryptodev_asym.c > +++ b/app/test/test_cryptodev_asym.c > @@ -2611,7 +2611,8 @@ test_sm2_sign(void) >=20 > /* Populate op with operational details */ > asym_op->sm2.op_type =3D RTE_CRYPTO_ASYM_OP_SIGN; > - if (rte_cryptodev_asym_xform_capability_check_hash(capa, > RTE_CRYPTO_AUTH_SM3)) > + if (rte_cryptodev_asym_xform_capability_check_opcap(capa, > + RTE_CRYPTO_ASYM_OP_SIGN, RTE_CRYPTO_SM2_PH)) > asym_op->sm2.hash =3D RTE_CRYPTO_AUTH_SM3; > else > asym_op->sm2.hash =3D RTE_CRYPTO_AUTH_NULL; @@ -2628,7 > +2629,8 @@ test_sm2_sign(void) > asym_op->sm2.id.length =3D 0; > } >=20 > - if (capa->internal_rng !=3D 0) { > + if (rte_cryptodev_asym_xform_capability_check_opcap(capa, > + RTE_CRYPTO_ASYM_OP_ENCRYPT, > RTE_CRYPTO_SM2_RNG)) { > asym_op->sm2.k.data =3D NULL; > asym_op->sm2.k.length =3D 0; > } else { > @@ -2677,7 +2679,8 @@ test_sm2_sign(void) > debug_hexdump(stdout, "s:", > asym_op->sm2.s.data, asym_op->sm2.s.length); >=20 > - if (capa->internal_rng =3D=3D 0) { > + if (!rte_cryptodev_asym_xform_capability_check_opcap(capa, > + RTE_CRYPTO_ASYM_OP_SIGN, > RTE_CRYPTO_SM2_RNG)) { > /* Verify sign (by comparison). */ > if (memcmp(input_params.sign_r.data, asym_op->sm2.r.data, > asym_op->sm2.r.length) !=3D 0) { > @@ -2802,7 +2805,8 @@ test_sm2_verify(void) > /* Populate op with operational details */ > asym_op->sm2.op_type =3D RTE_CRYPTO_ASYM_OP_VERIFY; >=20 > - if (rte_cryptodev_asym_xform_capability_check_hash(capa, > RTE_CRYPTO_AUTH_SM3)) > + if (rte_cryptodev_asym_xform_capability_check_opcap(capa, > + RTE_CRYPTO_ASYM_OP_VERIFY, > RTE_CRYPTO_SM2_PH)) > asym_op->sm2.hash =3D RTE_CRYPTO_AUTH_SM3; > else > asym_op->sm2.hash =3D RTE_CRYPTO_AUTH_NULL; @@ -2924,7 > +2928,8 @@ test_sm2_enc(void) >=20 > /* Populate op with operational details */ > asym_op->sm2.op_type =3D RTE_CRYPTO_ASYM_OP_ENCRYPT; > - if (rte_cryptodev_asym_xform_capability_check_hash(capa, > RTE_CRYPTO_AUTH_SM3)) > + if (rte_cryptodev_asym_xform_capability_check_opcap(capa, > + RTE_CRYPTO_ASYM_OP_ENCRYPT, > RTE_CRYPTO_SM2_PH)) > asym_op->sm2.hash =3D RTE_CRYPTO_AUTH_SM3; > else > asym_op->sm2.hash =3D RTE_CRYPTO_AUTH_NULL; @@ -2932,7 > +2937,8 @@ test_sm2_enc(void) > asym_op->sm2.message.data =3D input_params.message.data; > asym_op->sm2.message.length =3D input_params.message.length; >=20 > - if (capa->internal_rng !=3D 0) { > + if (rte_cryptodev_asym_xform_capability_check_opcap(capa, > + RTE_CRYPTO_ASYM_OP_ENCRYPT, > RTE_CRYPTO_SM2_RNG)) { > asym_op->sm2.k.data =3D NULL; > asym_op->sm2.k.length =3D 0; > } else { > @@ -2978,7 +2984,8 @@ test_sm2_enc(void) > debug_hexdump(stdout, "cipher:", > asym_op->sm2.cipher.data, asym_op- > >sm2.cipher.length); >=20 > - if (capa->internal_rng =3D=3D 0) { > + if (!rte_cryptodev_asym_xform_capability_check_opcap(capa, > + RTE_CRYPTO_ASYM_OP_ENCRYPT, > RTE_CRYPTO_SM2_RNG)) { > if (memcmp(input_params.cipher.data, asym_op- > >sm2.cipher.data, > asym_op->sm2.cipher.length) !=3D 0) { > status =3D TEST_FAILED; > @@ -3105,7 +3112,8 @@ test_sm2_dec(void) >=20 > /* Populate op with operational details */ > asym_op->sm2.op_type =3D RTE_CRYPTO_ASYM_OP_DECRYPT; > - if (rte_cryptodev_asym_xform_capability_check_hash(capa, > RTE_CRYPTO_AUTH_SM3)) > + if (rte_cryptodev_asym_xform_capability_check_opcap(capa, > + RTE_CRYPTO_ASYM_OP_DECRYPT, > RTE_CRYPTO_SM2_PH)) > asym_op->sm2.hash =3D RTE_CRYPTO_AUTH_SM3; > else > asym_op->sm2.hash =3D RTE_CRYPTO_AUTH_NULL; diff --git > a/drivers/crypto/cnxk/cnxk_cryptodev_capabilities.c > b/drivers/crypto/cnxk/cnxk_cryptodev_capabilities.c > index 0d5d64b6e7..0a19fc732b 100644 > --- a/drivers/crypto/cnxk/cnxk_cryptodev_capabilities.c > +++ b/drivers/crypto/cnxk/cnxk_cryptodev_capabilities.c > @@ -1194,7 +1194,13 @@ static const struct rte_cryptodev_capabilities > caps_sm2[] =3D { > .xform_capa =3D { > .xform_type =3D > RTE_CRYPTO_ASYM_XFORM_SM2, > .op_types =3D ((1 << > RTE_CRYPTO_ASYM_OP_SIGN) | > - (1 << > RTE_CRYPTO_ASYM_OP_VERIFY)) > + (1 << > RTE_CRYPTO_ASYM_OP_VERIFY) | > + (1 << > RTE_CRYPTO_ASYM_OP_ENCRYPT) | > + (1 << > RTE_CRYPTO_ASYM_OP_DECRYPT)), > + .op_capa =3D { > + (1 << RTE_CRYPTO_SM2_PKE_KDF), > + (1 << RTE_CRYPTO_SM2_PKE_KDF), > + } > } > } > } > diff --git a/drivers/crypto/openssl/rte_openssl_pmd_ops.c > b/drivers/crypto/openssl/rte_openssl_pmd_ops.c > index b7b612fc57..6f81bcb110 100644 > --- a/drivers/crypto/openssl/rte_openssl_pmd_ops.c > +++ b/drivers/crypto/openssl/rte_openssl_pmd_ops.c > @@ -598,15 +598,22 @@ static const struct rte_cryptodev_capabilities > openssl_pmd_capabilities[] =3D { > {.asym =3D { > .xform_capa =3D { > .xform_type =3D > RTE_CRYPTO_ASYM_XFORM_SM2, > - .hash_algos =3D (1 << RTE_CRYPTO_AUTH_SM3), > .op_types =3D > - ((1< + ((1 << RTE_CRYPTO_ASYM_OP_SIGN) | > (1 << RTE_CRYPTO_ASYM_OP_VERIFY) | > (1 << RTE_CRYPTO_ASYM_OP_ENCRYPT) | > (1 << RTE_CRYPTO_ASYM_OP_DECRYPT)), > - {.internal_rng =3D 1 > - } > - } Designated initializers could probably help with readability. > + .op_capa =3D { > + =09 [RTE_CRYPTO_ASYM_OP_ENCRYPT] =3D (1 << RTE_CRYPTO_SM2_RNG) | > + (1 << RTE_CRYPTO_SM2_PKE_KDF), > + =09 [RTE_CRYPTO_ASYM_OP_DECRYPT] =3D (1 << RTE_CRYPTO_SM2_RNG) | > + (1 << RTE_CRYPTO_SM2_PKE_KDF), > + =09 [RTE_CRYPTO_ASYM_OP_SIGN] =3D (1 << RTE_CRYPTO_SM2_RNG) | > + (1 << RTE_CRYPTO_SM2_PH), > + =09 [RTE_CRYPTO_ASYM_OP_VERIFY] =3D (1 << RTE_CRYPTO_SM2_RNG) | > + (1 << RTE_CRYPTO_SM2_PH) > + }, > + }, > } Probably driver/test changes should be in different patches. > } > }, > diff --git a/lib/cryptodev/rte_crypto_asym.h b/lib/cryptodev/rte_crypto_a= sym.h > index 39d3da3952..157f597d5d 100644 > --- a/lib/cryptodev/rte_crypto_asym.h > +++ b/lib/cryptodev/rte_crypto_asym.h > @@ -633,6 +633,18 @@ struct rte_crypto_asym_xform { > }; > }; >=20 > +/** > + * SM2 operation capabilities > + */ > +enum rte_crypto_sm2_op_capa { > + RTE_CRYPTO_SM2_RNG, > + /**< Random number generator supported in SM2 ops. */ > + RTE_CRYPTO_SM2_PH, > + /**< Prehash message before crypto op. */ > + RTE_CRYPTO_SM2_PKE_KDF, > + /**< KDF support in SM2 public key encryption */ }; > + > /** > * SM2 operation params. > */ > diff --git a/lib/cryptodev/rte_cryptodev.c b/lib/cryptodev/rte_cryptodev.= c index > 682c9f49d0..d3d8e25b39 100644 > --- a/lib/cryptodev/rte_cryptodev.c > +++ b/lib/cryptodev/rte_cryptodev.c > @@ -628,6 +628,22 @@ rte_cryptodev_asym_xform_capability_check_hash( > return ret; > } >=20 > +int > +rte_cryptodev_asym_xform_capability_check_opcap( > + const struct rte_cryptodev_asymmetric_xform_capability *capability, > + enum rte_crypto_asym_op_type op_type, uint8_t cap) { > + int ret =3D 0; > + > + if (!(capability->op_types & (1 << op_type))) > + return ret; > + > + if (capability->op_capa[op_type] & (1 << cap)) > + ret =3D 1; > + > + return ret; > +} > + > /* spinlock for crypto device enq callbacks */ static rte_spinlock_t > rte_cryptodev_callback_lock =3D RTE_SPINLOCK_INITIALIZER; >=20 > diff --git a/lib/cryptodev/rte_cryptodev.h b/lib/cryptodev/rte_cryptodev.= h index > bec947f6d5..aa6ef3a94d 100644 > --- a/lib/cryptodev/rte_cryptodev.h > +++ b/lib/cryptodev/rte_cryptodev.h > @@ -185,6 +185,9 @@ struct rte_cryptodev_asymmetric_xform_capability { > * Value 0 means unavailable, and application should pass the > required > * random value. Otherwise, PMD would internally compute the > random number. > */ > + > + uint32_t op_capa[RTE_CRYPTO_ASYM_OP_LIST_END]; > + /**< Operation specific capabilities. */ > }; >=20 > uint64_t hash_algos; > @@ -359,6 +362,26 @@ rte_cryptodev_asym_xform_capability_check_hash( > const struct rte_cryptodev_asymmetric_xform_capability *capability, > enum rte_crypto_auth_algorithm hash); >=20 > +/** > + * @warning > + * @b EXPERIMENTAL: this API may change without prior notice. > + * > + * Check if op capability is supported > + * > + * @param capability Description of the asymmetric crypto > capability. > + * @param op_type op type > + * @param cap op capability > + * > + * @return > + * - Return 1 if the op capability is supported > + * - Return 0 if unsupported > + */ > +__rte_experimental > +int > +rte_cryptodev_asym_xform_capability_check_opcap( > + const struct rte_cryptodev_asymmetric_xform_capability *capability, > + enum rte_crypto_asym_op_type op_type, uint8_t cap); > + > /** > * Provide the cipher algorithm enum, given an algorithm string > * > diff --git a/lib/cryptodev/version.map b/lib/cryptodev/version.map index > 594c501855..5d40b7fed0 100644 > --- a/lib/cryptodev/version.map > +++ b/lib/cryptodev/version.map > @@ -87,6 +87,9 @@ EXPERIMENTAL { >=20 > # added in 24.03 > __rte_cryptodev_trace_qp_depth_used; > + > + # added in 24.11 > + rte_cryptodev_asym_xform_capability_check_opcap; > }; >=20 > INTERNAL { > -- > 2.21.0