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 DD2E042C07; Thu, 1 Jun 2023 20:40:28 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6BF6440EF0; Thu, 1 Jun 2023 20:40:28 +0200 (CEST) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mails.dpdk.org (Postfix) with ESMTP id 74D0E40DDC for ; Thu, 1 Jun 2023 20:40:26 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1685644826; x=1717180826; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=14PAjc2YupZxcabU5qurW6OpQdoOzC/a0kf0qpcbjlc=; b=EAtbptLtHNza4Fk5TyAoAemuqm2UMxdJ+iLDVHly2fRGvS4bRXwLC/aZ +C5COeywOy8ECfXIfotFLu/wGIV4dPcvPSUSxENVb971S67uGDMhqlPky ZiIdt9hiZeIyAXdZmtLUMUjfJWHtYpXaYcjIxDj7StCYJqD2h7PXcyNDR cjgZkMvLrtkTsW5F7Pyhv1Nj9bPZQIHUKlbF8vYW1Mmb0zbBXQheOPbO8 7d0D2/1+rI58TO3q7C6OHOLAhpIbrNJt8V+WdojWtpBt1APY3DVXhRTHy BcDNo7rKalbVgCM6S5xl7+SQ13RSg1aaF1m97ci/xop1L7eC2j0XWdMLu A==; X-IronPort-AV: E=McAfee;i="6600,9927,10728"; a="353145634" X-IronPort-AV: E=Sophos;i="6.00,210,1681196400"; d="scan'208";a="353145634" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jun 2023 11:40:25 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10728"; a="954153136" X-IronPort-AV: E=Sophos;i="6.00,210,1681196400"; d="scan'208";a="954153136" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by fmsmga006.fm.intel.com with ESMTP; 01 Jun 2023 11:40:25 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Thu, 1 Jun 2023 11:40:25 -0700 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Thu, 1 Jun 2023 11:40:22 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Thu, 1 Jun 2023 11:40:22 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.103) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Thu, 1 Jun 2023 11:40:20 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DfZ3pW1u0MLO/IHhLxceqWec1wisAfxJCp08G2QrGI32CI2oMWVr8UDzYInh9vxOWEy9UszgiezBeqRngAJkFZbDIelvJFhrrK4SOXfLxNQVYOV7zEvh9YnCCuvcbJRD1PYZAyGmfGc2WNXasYvbdypL+ISEgursGPgL+CxQSqZu9QCIhgzndgTaW/LUIR5+iaiRAFL1s+o6xy5lgYR9TTJq/lE3MqAEmerSAWLsV0iY+++LUJTeOpocFOuUOgvCi09wqVFe7wNUBkjtf7IVhTge0IxrZD2acPz87UtPPchgN98fIOdMj8T23fsM0NV+O7WysQw8WJlljnXDx5tWSA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=Uj0PnIiYh2Qjv1tcXVna+ae64u9pKC++KdntrRfiGQA=; b=cCkuGUCt8kRg8D0FG+ZPj1UJ9o3hQA4C61QX1qS/dvo3EswXJwvK2h54d0iRyyNgX62oY6PpdWGa8KhWD/LywzBBSZIVNDI9wi1guxRx/lYznEk4d9FnNgbeoM/Ue8y8qwiG0siyRcBeFxOGkApwrQ4XTyqBvEwKSm52aqA+F7Obr5vs0HVk5p0/d7wpmKWamJlbCdGSqQfrYQyPyifcsTeRccVbz9RnkffTUYL/PQxssxW/vA7oKqxrkqZQog6wulsPhKcE4pJOViXK5R7W25rOL+JoTRVR7tQorQmTh0ALIkn4WYzTWyI0eDeiqmMQiREwmhW+qtl4UQJoiBnKnA== 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 SA1PR11MB8474.namprd11.prod.outlook.com (2603:10b6:806:3ac::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.22; Thu, 1 Jun 2023 18:40:18 +0000 Received: from PH0PR11MB5013.namprd11.prod.outlook.com ([fe80::fcef:c262:ba36:c42f]) by PH0PR11MB5013.namprd11.prod.outlook.com ([fe80::fcef:c262:ba36:c42f%4]) with mapi id 15.20.6455.020; Thu, 1 Jun 2023 18:40:18 +0000 From: "Kusztal, ArkadiuszX" To: Gowrishankar Muthukrishnan , "dev@dpdk.org" CC: "anoobj@marvell.com" , Akhil Goyal , Fan Zhang , Ankur Dwivedi , Tejasree Kondoj , "Ji, Kai" , "Dooley, Brian" Subject: RE: [PATCH] lib/cryptodev: move RSA padding information into xform Thread-Topic: [PATCH] lib/cryptodev: move RSA padding information into xform Thread-Index: AQHZiOAiyc7bSK5OaUWJwVDBFm+H4692Wr7A Date: Thu, 1 Jun 2023 18:40:18 +0000 Message-ID: References: <72c136279aae9b1348715aba776c8e4a7cd4f900.1684341299.git.gmuthukrishn@marvell.com> In-Reply-To: <72c136279aae9b1348715aba776c8e4a7cd4f900.1684341299.git.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_|SA1PR11MB8474:EE_ x-ms-office365-filtering-correlation-id: 95e600cb-f4b1-4fd1-9264-08db62cfa5b7 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ijPQRXMrOi/Z+vrF9GwgfCKPwHfUM4B7fMUEDrMZBEbCUXYHlHwZ+kg2IJy1XVZkvVCWvIKDmGSPwJ2VpKccUfmnb8+aarwPgLXSWvLSWI+LiokknMxIHoO20Wtys1aIuewzk+wqd4IGp/8ClN7V/a61lE7ZHTg6rnkq6+wWtD6NJaaZGY+LpPSyJ8XKTjpRQfQEPCabYg5+7boNeEqxnGsYCAAwJQm+1xNJBs1auTrjWSLYcV5to/8bbTSaO8fqOjtPiwEs39B8heXJdbmq+5HIFQ+1AGlzdhMwQ3BRlUkNym0T/TmdsY73VjePTC6jtupvqyPLgib8L3fjrPhtGOwFTRhtN2pYKwkTzEsQzh8l+TsYoOmJTIJMeIYRcDGFbo1/k7RE3PdKdivxTWhW99xqDH72gzpWp4ElrQcnGDq0SnoSnzlwG9K3zMrYK1zSKKEI3NoANZgKqwPdoiLBSqwdPL1Km/FiyKPVip4o0G8JJQbnkCsZuwNKzTsapR6LyhDcUYkouupQNHliSpFQMJxcnXNE7n6SH7KeHQsC4KviSmfh3Ne9nMc8wYjv8ZyQi+FQp/rltx7p1YtgQKlWFMTvInFC5hs3hDCgx6l1SXkm6WgPrw+wpa++92JgnTz1 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:(13230028)(346002)(366004)(376002)(136003)(39860400002)(396003)(451199021)(4326008)(76116006)(66556008)(66946007)(66476007)(66446008)(64756008)(52536014)(8676002)(316002)(41300700001)(8936002)(54906003)(110136005)(5660300002)(2906002)(30864003)(33656002)(71200400001)(7696005)(478600001)(55016003)(26005)(186003)(107886003)(53546011)(83380400001)(9686003)(6506007)(38070700005)(86362001)(82960400001)(122000001)(38100700002)(579004); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?8Pow518hbycdmeYQXLwZFrEuOhxKRP7znFOEI/175n7j2CAW24CkwJ96Y/8Y?= =?us-ascii?Q?WkXr7RGTnib+xFN8qa4QDOJf26BBYVXApoN4DIIO2HP0R9eNCezBl2hPijp6?= =?us-ascii?Q?HZrnq1qUmysx3rLQh+mEXboX9PJ2ZyFyZF69zg7JdD9juoZClLxuRBhqy6S2?= =?us-ascii?Q?qvFAOF54T3fO6sjh1UaWnnrT7StEznwc81u+2dHgEB4H4iZE+afNNADZzDOL?= =?us-ascii?Q?X3dBeOBoegRYIzs1KP648ZJVwZTqS8tD8fAz5arktUMTC1X5gonlmAaGOYBO?= =?us-ascii?Q?rQ02kKAPt9oLTlx3wUWtx0MWBt9ghai9rC7b0AZJ5MEJSG/E+H0+m0g3jEQi?= =?us-ascii?Q?mF7ILIQ8rC8kniT+zww3upk24ZZRpZxqJSQabNdsqJsK7Qn26gDq1KfHrM2Y?= =?us-ascii?Q?mI5O7zDO1FgOjfYeNtBWdMqtN0LEC1U67X0VSn5jI8RCdwZG+1kYF2e7Dtu4?= =?us-ascii?Q?yR5kFHs+GfGvqHYTDs9ap0+Skv4OWCgwJjSLCcHLhNTCb6tk6LZbzSLjBlOa?= =?us-ascii?Q?1UidWzLoJgLGDZHLD7rfRGXT2/Gg87j+6XC3rNeGqmtFCF1hJtBcfZkmw/eN?= =?us-ascii?Q?tiiE4AaBOkdz+oT5tNxvLxA9TnWHOP5KmvdgdSvKf8wfZqCg2lK+crHbcoIS?= =?us-ascii?Q?Udc0RZm16OZ9CFRmN62v5MN5gpuUojqjYQ/1+hgZA4DPlz5wDbgOx/yR9pLR?= =?us-ascii?Q?/utOwSFTZeXNt1I8u1AQMp0R3mVskp1MpSgimZc95hURFuFIZa4vKUaHzIIK?= =?us-ascii?Q?gOQflbFQUmBpomcrgdCnkKaI5RJsn2jd2iXhB9fO0Te19MR9v8/ZUo3J3EzX?= =?us-ascii?Q?4Vty8Cbd5aqVBlpoMemtEwf4Z5+JSISjT8q/jMG+Bd58D3K3UOC71XhHb4ga?= =?us-ascii?Q?fcEDDrpTPk0CI2WnZySUPdglvLbYahgNiNwvR9CoEpB3odICw64VXZezO1Ki?= =?us-ascii?Q?iuVMt4ta04xZxENROxClsrZFNIBSzr+2P6vROaAjnLLNIHYatQXpHU2maXzc?= =?us-ascii?Q?P5iHhSQlKfA1QqH3D1fMRHfGmoEE2w1VXP+gbjjCReH8sJr+8wXSuICg4qHx?= =?us-ascii?Q?jPn3asx57ywJHircLozapwKp+JXN54fReHJDUEekM99WNAMoS9h3xmGxKkLe?= =?us-ascii?Q?dgAoJi2TqYSu9R6IyfXSctNC9gaDa3N7XTKOF5Hgnf10b8AGgC4T3MgSzuYF?= =?us-ascii?Q?NxywyJPNsbnaIK5bCVLXUY6POv12+uQRFy2myaOkjLA9pAlDSWq0Pba8u4Tx?= =?us-ascii?Q?THsRuNLi22G2u20k+NzqcnmGkE4itDbIqdkKIKdPDFINEi3v3RPG92iocYsb?= =?us-ascii?Q?s6JOhuSgP+tIQ1zV+/czboO7RNtV93ajc7sNRAzBuSHSB+oGh5KqyTuF0dgN?= =?us-ascii?Q?/jcHUcaF+zq2LpZskQxRR8XaG3+WoSX+4QhWBK96abOG1e1tvQ6IiUmukb/H?= =?us-ascii?Q?XUwqF5kjGpsIsT8MCRcNeh4w3lYRenQgjL5l/aEfZuelv57GgPA7pFpuzUEx?= =?us-ascii?Q?Ltt3ci7FdSLKroSml0GUobYgqP4Li+NTUQENi3yyU/qr52X2YSuHi2cr2p7R?= =?us-ascii?Q?ARpLfWYCaHjC30sbVY4mPQJeBHewN5tN9Zwn4FXeRG3LsUuXvN5h9MyIBgkX?= =?us-ascii?Q?hQ=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: 95e600cb-f4b1-4fd1-9264-08db62cfa5b7 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Jun 2023 18:40:18.1033 (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: t063Qq/76Rd7bw+vcT6CFg9Ntj9AXzjj/Nk8qGwDYhJrhj6wle2ZrSnEKCXbKCq6stAgXiNgfkmRuSQeD4ewHzbAKBcDfNZsJQwS0ClYEBE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR11MB8474 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 > -----Original Message----- > From: Gowrishankar Muthukrishnan > Sent: Wednesday, May 17, 2023 6:53 PM > To: dev@dpdk.org > Cc: anoobj@marvell.com; Akhil Goyal ; Fan Zhang > ; Ankur Dwivedi ; Tejasree > Kondoj ; Ji, Kai ; Dooley, Brian > ; Gowrishankar Muthukrishnan > > Subject: [PATCH] lib/cryptodev: move RSA padding information into xform >=20 > RSA padding information could be a xform entity rather than part of crypt= o op, > as it seems associated with hashing algorithm used for the entire crypto = session, > where this algorithm is used in message digest itself. Even in virtIO sta= ndard > spec, this info is associated in the asymmetric session creation. Hence, = moving > this info from crypto op into xform structure. With the current approach in with-session mode, we set the key in the PMD o= nly once and use it in different configurations. In the case where padding is a session parameter, we need to have a session= for all padding variations, duplicating the private key occurrences in mem= ory for this reason only. >=20 > Signed-off-by: Gowrishankar Muthukrishnan > --- > app/test/test_cryptodev_asym.c | 6 +-- > app/test/test_cryptodev_rsa_test_vectors.h | 2 + > drivers/common/cpt/cpt_ucode_asym.h | 4 +- > drivers/crypto/cnxk/cnxk_ae.h | 13 +++-- > drivers/crypto/octeontx/otx_cryptodev_ops.c | 4 +- > drivers/crypto/openssl/openssl_pmd_private.h | 1 + > drivers/crypto/openssl/rte_openssl_pmd.c | 4 +- > drivers/crypto/openssl/rte_openssl_pmd_ops.c | 1 + > drivers/crypto/qat/qat_asym.c | 17 ++++--- > examples/fips_validation/main.c | 52 +++++++++++--------- > lib/cryptodev/rte_crypto_asym.h | 6 +-- > 11 files changed, 59 insertions(+), 51 deletions(-) >=20 > diff --git a/app/test/test_cryptodev_asym.c b/app/test/test_cryptodev_asy= m.c > index bb4c70deba..1c5114581c 100644 > --- a/app/test/test_cryptodev_asym.c > +++ b/app/test/test_cryptodev_asym.c > @@ -92,7 +92,6 @@ queue_ops_rsa_sign_verify(void *sess) > asym_op->rsa.message.length =3D rsaplaintext.len; > asym_op->rsa.sign.length =3D RTE_DIM(rsa_n); > asym_op->rsa.sign.data =3D output_buf; > - asym_op->rsa.padding.type =3D RTE_CRYPTO_RSA_PADDING_PKCS1_5; >=20 > debug_hexdump(stdout, "message", asym_op->rsa.message.data, > asym_op->rsa.message.length); > @@ -124,7 +123,6 @@ queue_ops_rsa_sign_verify(void *sess) >=20 > /* Verify sign */ > asym_op->rsa.op_type =3D RTE_CRYPTO_ASYM_OP_VERIFY; > - asym_op->rsa.padding.type =3D RTE_CRYPTO_RSA_PADDING_PKCS1_5; >=20 > /* Process crypto operation */ > if (rte_cryptodev_enqueue_burst(dev_id, 0, &op, 1) !=3D 1) { @@ -183,7 > +181,6 @@ queue_ops_rsa_enc_dec(void *sess) > asym_op->rsa.cipher.data =3D cipher_buf; > asym_op->rsa.cipher.length =3D RTE_DIM(rsa_n); > asym_op->rsa.message.length =3D rsaplaintext.len; > - asym_op->rsa.padding.type =3D RTE_CRYPTO_RSA_PADDING_PKCS1_5; >=20 > debug_hexdump(stdout, "message", asym_op->rsa.message.data, > asym_op->rsa.message.length); > @@ -215,7 +212,6 @@ queue_ops_rsa_enc_dec(void *sess) > asym_op =3D result_op->asym; > asym_op->rsa.message.length =3D RTE_DIM(rsa_n); > asym_op->rsa.op_type =3D RTE_CRYPTO_ASYM_OP_DECRYPT; > - asym_op->rsa.padding.type =3D RTE_CRYPTO_RSA_PADDING_PKCS1_5; >=20 > /* Process crypto operation */ > if (rte_cryptodev_enqueue_burst(dev_id, 0, &op, 1) !=3D 1) { @@ -412,7 > +408,7 @@ test_cryptodev_asym_op(struct crypto_testsuite_params_asym > *ts_params, > } >=20 > xform_tc.rsa.key_type =3D key_type; > - op->asym->rsa.padding.type =3D data_tc->rsa_data.padding; > + xform_tc.rsa.padding.type =3D data_tc->rsa_data.padding; >=20 > if (op->asym->rsa.op_type =3D=3D > RTE_CRYPTO_ASYM_OP_ENCRYPT) { > asym_op->rsa.message.data =3D data_tc- > >rsa_data.pt.data; diff --git a/app/test/test_cryptodev_rsa_test_vectors.= h > b/app/test/test_cryptodev_rsa_test_vectors.h > index 04539a1ecf..1e05525d4d 100644 > --- a/app/test/test_cryptodev_rsa_test_vectors.h > +++ b/app/test/test_cryptodev_rsa_test_vectors.h > @@ -349,6 +349,7 @@ struct rte_crypto_asym_xform rsa_xform =3D { > .next =3D NULL, > .xform_type =3D RTE_CRYPTO_ASYM_XFORM_RSA, > .rsa =3D { > + .padding.type =3D RTE_CRYPTO_RSA_PADDING_PKCS1_5, > .n =3D { > .data =3D rsa_n, > .length =3D sizeof(rsa_n) > @@ -370,6 +371,7 @@ struct rte_crypto_asym_xform rsa_xform_crt =3D { > .next =3D NULL, > .xform_type =3D RTE_CRYPTO_ASYM_XFORM_RSA, > .rsa =3D { > + .padding.type =3D RTE_CRYPTO_RSA_PADDING_PKCS1_5, > .n =3D { > .data =3D rsa_n, > .length =3D sizeof(rsa_n) > diff --git a/drivers/common/cpt/cpt_ucode_asym.h > b/drivers/common/cpt/cpt_ucode_asym.h > index 1105a0c125..42ab0edeea 100644 > --- a/drivers/common/cpt/cpt_ucode_asym.h > +++ b/drivers/common/cpt/cpt_ucode_asym.h > @@ -327,7 +327,7 @@ cpt_rsa_prep(struct asym_op_params *rsa_params, > /* Result buffer */ > rlen =3D mod_len; >=20 > - if (rsa_op.padding.type =3D=3D RTE_CRYPTO_RSA_PADDING_NONE) { > + if (rsa->padding.type =3D=3D RTE_CRYPTO_RSA_PADDING_NONE) { > /* Use mod_exp operation for no_padding type */ > vq_cmd_w0.s.opcode.minor =3D CPT_MINOR_OP_MODEX; > vq_cmd_w0.s.param2 =3D exp_len; > @@ -412,7 +412,7 @@ cpt_rsa_crt_prep(struct asym_op_params *rsa_params, > /* Result buffer */ > rlen =3D mod_len; >=20 > - if (rsa_op.padding.type =3D=3D RTE_CRYPTO_RSA_PADDING_NONE) { > + if (rsa->padding.type =3D=3D RTE_CRYPTO_RSA_PADDING_NONE) { > /*Use mod_exp operation for no_padding type */ > vq_cmd_w0.s.opcode.minor =3D CPT_MINOR_OP_MODEX_CRT; > } else { > diff --git a/drivers/crypto/cnxk/cnxk_ae.h b/drivers/crypto/cnxk/cnxk_ae.= h > index 47f000dd5e..106d38c3bb 100644 > --- a/drivers/crypto/cnxk/cnxk_ae.h > +++ b/drivers/crypto/cnxk/cnxk_ae.h > @@ -168,6 +168,9 @@ cnxk_ae_fill_rsa_params(struct cnxk_ae_sess *sess, > rsa->n.length =3D mod_len; > rsa->e.length =3D exp_len; >=20 > + /* Set padding info */ > + rsa->padding.type =3D xform->rsa.padding.type; > + > return 0; > } >=20 > @@ -328,7 +331,7 @@ cnxk_ae_rsa_prep(struct rte_crypto_op *op, struct > roc_ae_buf_ptr *meta_buf, > dptr +=3D in_size; > dlen =3D total_key_len + in_size; >=20 > - if (rsa_op.padding.type =3D=3D RTE_CRYPTO_RSA_PADDING_NONE) { > + if (rsa->padding.type =3D=3D RTE_CRYPTO_RSA_PADDING_NONE) { > /* Use mod_exp operation for no_padding type */ > w4.s.opcode_minor =3D ROC_AE_MINOR_OP_MODEX; > w4.s.param2 =3D exp_len; > @@ -383,7 +386,7 @@ cnxk_ae_rsa_exp_prep(struct rte_crypto_op *op, struct > roc_ae_buf_ptr *meta_buf, > dptr +=3D in_size; > dlen =3D mod_len + privkey_len + in_size; >=20 > - if (rsa_op.padding.type =3D=3D RTE_CRYPTO_RSA_PADDING_NONE) { > + if (rsa->padding.type =3D=3D RTE_CRYPTO_RSA_PADDING_NONE) { > /* Use mod_exp operation for no_padding type */ > w4.s.opcode_minor =3D ROC_AE_MINOR_OP_MODEX; > w4.s.param2 =3D privkey_len; > @@ -441,7 +444,7 @@ cnxk_ae_rsa_crt_prep(struct rte_crypto_op *op, struct > roc_ae_buf_ptr *meta_buf, > dptr +=3D in_size; > dlen =3D total_key_len + in_size; >=20 > - if (rsa_op.padding.type =3D=3D RTE_CRYPTO_RSA_PADDING_NONE) { > + if (rsa->padding.type =3D=3D RTE_CRYPTO_RSA_PADDING_NONE) { > /*Use mod_exp operation for no_padding type */ > w4.s.opcode_minor =3D ROC_AE_MINOR_OP_MODEX_CRT; > } else { > @@ -836,7 +839,7 @@ cnxk_ae_dequeue_rsa_op(struct rte_crypto_op *cop, > uint8_t *rptr, > memcpy(rsa->cipher.data, rptr, rsa->cipher.length); > break; > case RTE_CRYPTO_ASYM_OP_DECRYPT: > - if (rsa->padding.type =3D=3D RTE_CRYPTO_RSA_PADDING_NONE) { > + if (rsa_ctx->padding.type =3D=3D > RTE_CRYPTO_RSA_PADDING_NONE) { > rsa->message.length =3D rsa_ctx->n.length; > memcpy(rsa->message.data, rptr, rsa- > >message.length); > } else { > @@ -856,7 +859,7 @@ cnxk_ae_dequeue_rsa_op(struct rte_crypto_op *cop, > uint8_t *rptr, > memcpy(rsa->sign.data, rptr, rsa->sign.length); > break; > case RTE_CRYPTO_ASYM_OP_VERIFY: > - if (rsa->padding.type =3D=3D RTE_CRYPTO_RSA_PADDING_NONE) { > + if (rsa_ctx->padding.type =3D=3D > RTE_CRYPTO_RSA_PADDING_NONE) { > rsa->sign.length =3D rsa_ctx->n.length; > memcpy(rsa->sign.data, rptr, rsa->sign.length); > } else { > diff --git a/drivers/crypto/octeontx/otx_cryptodev_ops.c > b/drivers/crypto/octeontx/otx_cryptodev_ops.c > index 947e1be385..d315dc3237 100644 > --- a/drivers/crypto/octeontx/otx_cryptodev_ops.c > +++ b/drivers/crypto/octeontx/otx_cryptodev_ops.c > @@ -708,7 +708,7 @@ otx_cpt_asym_rsa_op(struct rte_crypto_op *cop, struct > cpt_request_info *req, > memcpy(rsa->cipher.data, req->rptr, rsa->cipher.length); > break; > case RTE_CRYPTO_ASYM_OP_DECRYPT: > - if (rsa->padding.type =3D=3D RTE_CRYPTO_RSA_PADDING_NONE) > + if (rsa_ctx->padding.type =3D=3D > RTE_CRYPTO_RSA_PADDING_NONE) > rsa->message.length =3D rsa_ctx->n.length; > else { > /* Get length of decrypted output */ @@ -725,7 +725,7 > @@ otx_cpt_asym_rsa_op(struct rte_crypto_op *cop, struct cpt_request_info > *req, > memcpy(rsa->sign.data, req->rptr, rsa->sign.length); > break; > case RTE_CRYPTO_ASYM_OP_VERIFY: > - if (rsa->padding.type =3D=3D RTE_CRYPTO_RSA_PADDING_NONE) > + if (rsa_ctx->padding.type =3D=3D > RTE_CRYPTO_RSA_PADDING_NONE) > rsa->sign.length =3D rsa_ctx->n.length; > else { > /* Get length of decrypted output */ diff --git > a/drivers/crypto/openssl/openssl_pmd_private.h > b/drivers/crypto/openssl/openssl_pmd_private.h > index ed6841e460..a6cc3b0749 100644 > --- a/drivers/crypto/openssl/openssl_pmd_private.h > +++ b/drivers/crypto/openssl/openssl_pmd_private.h > @@ -173,6 +173,7 @@ struct openssl_asym_session { > union { > struct rsa { > RSA *rsa; > + uint32_t pad; > #if (OPENSSL_VERSION_NUMBER >=3D 0x30000000L) > EVP_PKEY_CTX * ctx; > #endif > diff --git a/drivers/crypto/openssl/rte_openssl_pmd.c > b/drivers/crypto/openssl/rte_openssl_pmd.c > index f65fbca300..451151e47c 100644 > --- a/drivers/crypto/openssl/rte_openssl_pmd.c > +++ b/drivers/crypto/openssl/rte_openssl_pmd.c > @@ -2513,7 +2513,7 @@ process_openssl_rsa_op_evp(struct rte_crypto_op > *cop, > struct openssl_asym_session *sess) > { > struct rte_crypto_asym_op *op =3D cop->asym; > - uint32_t pad =3D (op->rsa.padding.type); > + uint32_t pad =3D sess->u.r.pad; > uint8_t *tmp; > size_t outlen =3D 0; > int ret =3D -1; > @@ -2670,7 +2670,7 @@ process_openssl_rsa_op(struct rte_crypto_op *cop, > int ret =3D 0; > struct rte_crypto_asym_op *op =3D cop->asym; > RSA *rsa =3D sess->u.r.rsa; > - uint32_t pad =3D (op->rsa.padding.type); > + uint32_t pad =3D sess->u.r.pad; > uint8_t *tmp; >=20 > cop->status =3D RTE_CRYPTO_OP_STATUS_SUCCESS; diff --git > a/drivers/crypto/openssl/rte_openssl_pmd_ops.c > b/drivers/crypto/openssl/rte_openssl_pmd_ops.c > index 29ad1b9505..3ea46caae9 100644 > --- a/drivers/crypto/openssl/rte_openssl_pmd_ops.c > +++ b/drivers/crypto/openssl/rte_openssl_pmd_ops.c > @@ -845,6 +845,7 @@ static int openssl_set_asym_session_parameters( > if (!n || !e) > goto err_rsa; >=20 > + asym_session->u.r.pad =3D xform->rsa.padding.type; > #if (OPENSSL_VERSION_NUMBER >=3D 0x30000000L) > OSSL_PARAM_BLD * param_bld =3D OSSL_PARAM_BLD_new(); > if (!param_bld) { > diff --git a/drivers/crypto/qat/qat_asym.c b/drivers/crypto/qat/qat_asym.= c > index 82e165538d..e1b6e0b2f6 100644 > --- a/drivers/crypto/qat/qat_asym.c > +++ b/drivers/crypto/qat/qat_asym.c > @@ -353,7 +353,7 @@ rsa_set_pub_input(struct icp_qat_fw_pke_request > *qat_req, > alg_bytesize =3D qat_function.bytesize; >=20 > if (asym_op->rsa.op_type =3D=3D RTE_CRYPTO_ASYM_OP_ENCRYPT) { > - switch (asym_op->rsa.padding.type) { > + switch (xform->rsa.padding.type) { > case RTE_CRYPTO_RSA_PADDING_NONE: > SET_PKE_LN(asym_op->rsa.message, alg_bytesize, 0); > break; > @@ -365,7 +365,7 @@ rsa_set_pub_input(struct icp_qat_fw_pke_request > *qat_req, > } > HEXDUMP("RSA Message", cookie->input_array[0], > alg_bytesize); > } else { > - switch (asym_op->rsa.padding.type) { > + switch (xform->rsa.padding.type) { > case RTE_CRYPTO_RSA_PADDING_NONE: > SET_PKE_LN(asym_op->rsa.sign, alg_bytesize, 0); > break; > @@ -451,7 +451,7 @@ rsa_set_priv_input(struct icp_qat_fw_pke_request > *qat_req, >=20 > if (asym_op->rsa.op_type =3D=3D > RTE_CRYPTO_ASYM_OP_DECRYPT) { > - switch (asym_op->rsa.padding.type) { > + switch (xform->rsa.padding.type) { > case RTE_CRYPTO_RSA_PADDING_NONE: > SET_PKE_LN(asym_op->rsa.cipher, alg_bytesize, > 0); > HEXDUMP("RSA ciphertext", cookie->input_array[0], > @@ -465,7 +465,7 @@ rsa_set_priv_input(struct icp_qat_fw_pke_request > *qat_req, >=20 > } else if (asym_op->rsa.op_type =3D=3D > RTE_CRYPTO_ASYM_OP_SIGN) { > - switch (asym_op->rsa.padding.type) { > + switch (xform->rsa.padding.type) { > case RTE_CRYPTO_RSA_PADDING_NONE: > SET_PKE_LN(asym_op->rsa.message, alg_bytesize, 0); > HEXDUMP("RSA text to be signed", cookie- > >input_array[0], @@ -505,7 +505,8 @@ rsa_set_input(struct > icp_qat_fw_pke_request *qat_req, >=20 > static uint8_t > rsa_collect(struct rte_crypto_asym_op *asym_op, > - const struct qat_asym_op_cookie *cookie) > + const struct qat_asym_op_cookie *cookie, > + const struct rte_crypto_asym_xform *xform) > { > uint32_t alg_bytesize =3D cookie->alg_bytesize; >=20 > @@ -521,7 +522,7 @@ rsa_collect(struct rte_crypto_asym_op *asym_op, > HEXDUMP("RSA Encrypted data", cookie- > >output_array[0], > alg_bytesize); > } else { > - switch (asym_op->rsa.padding.type) { > + switch (xform->rsa.padding.type) { > case RTE_CRYPTO_RSA_PADDING_NONE: > rte_memcpy(asym_op->rsa.cipher.data, > cookie->output_array[0], > @@ -538,7 +539,7 @@ rsa_collect(struct rte_crypto_asym_op *asym_op, > } > } else { > if (asym_op->rsa.op_type =3D=3D > RTE_CRYPTO_ASYM_OP_DECRYPT) { > - switch (asym_op->rsa.padding.type) { > + switch (xform->rsa.padding.type) { > case RTE_CRYPTO_RSA_PADDING_NONE: > rte_memcpy(asym_op->rsa.message.data, > cookie->output_array[0], > @@ -1009,7 +1010,7 @@ qat_asym_collect_response(struct rte_crypto_op > *op, > case RTE_CRYPTO_ASYM_XFORM_MODINV: > return modinv_collect(asym_op, cookie, xform); > case RTE_CRYPTO_ASYM_XFORM_RSA: > - return rsa_collect(asym_op, cookie); > + return rsa_collect(asym_op, cookie, xform); > case RTE_CRYPTO_ASYM_XFORM_ECDSA: > return ecdsa_collect(asym_op, cookie); > case RTE_CRYPTO_ASYM_XFORM_ECPM: > diff --git a/examples/fips_validation/main.c b/examples/fips_validation/m= ain.c > index 4237224d9d..c8e8145a69 100644 > --- a/examples/fips_validation/main.c > +++ b/examples/fips_validation/main.c > @@ -926,31 +926,7 @@ prepare_rsa_op(void) > __rte_crypto_op_reset(env.op, RTE_CRYPTO_OP_TYPE_ASYMMETRIC); >=20 > asym =3D env.op->asym; > - asym->rsa.padding.type =3D info.interim_info.rsa_data.padding; > - asym->rsa.padding.hash =3D info.interim_info.rsa_data.auth; > - > if (env.digest) { > - if (asym->rsa.padding.type =3D=3D > RTE_CRYPTO_RSA_PADDING_PKCS1_5) { > - int b_len =3D 0; > - uint8_t b[32]; > - > - b_len =3D get_hash_oid(asym->rsa.padding.hash, b); > - if (b_len < 0) { > - RTE_LOG(ERR, USER1, "Failed to get digest info > for hash %d\n", > - asym->rsa.padding.hash); > - return -EINVAL; > - } > - > - if (b_len) { > - msg.len =3D env.digest_len + b_len; > - msg.val =3D rte_zmalloc(NULL, msg.len, 0); > - rte_memcpy(msg.val, b, b_len); > - rte_memcpy(msg.val + b_len, env.digest, > env.digest_len); > - rte_free(env.digest); > - env.digest =3D msg.val; > - env.digest_len =3D msg.len; > - } > - } > msg.val =3D env.digest; > msg.len =3D env.digest_len; > } else { > @@ -1542,6 +1518,34 @@ prepare_rsa_xform(struct rte_crypto_asym_xform > *xform) > xform->rsa.e.length =3D vec.rsa.e.len; > xform->rsa.n.data =3D vec.rsa.n.val; > xform->rsa.n.length =3D vec.rsa.n.len; > + > + xform->rsa.padding.type =3D info.interim_info.rsa_data.padding; > + xform->rsa.padding.hash =3D info.interim_info.rsa_data.auth; > + if (env.digest) { > + if (xform->rsa.padding.type =3D=3D > RTE_CRYPTO_RSA_PADDING_PKCS1_5) { > + struct fips_val msg; > + int b_len =3D 0; > + uint8_t b[32]; > + > + b_len =3D get_hash_oid(xform->rsa.padding.hash, b); > + if (b_len < 0) { > + RTE_LOG(ERR, USER1, "Failed to get digest info > for hash %d\n", > + xform->rsa.padding.hash); > + return -EINVAL; > + } > + > + if (b_len) { > + msg.len =3D env.digest_len + b_len; > + msg.val =3D rte_zmalloc(NULL, msg.len, 0); > + rte_memcpy(msg.val, b, b_len); > + rte_memcpy(msg.val + b_len, env.digest, > env.digest_len); > + rte_free(env.digest); > + env.digest =3D msg.val; > + env.digest_len =3D msg.len; > + } > + } > + } > + > return 0; > } >=20 > diff --git a/lib/cryptodev/rte_crypto_asym.h b/lib/cryptodev/rte_crypto_a= sym.h > index bdf92d4358..5c80e05da2 100644 > --- a/lib/cryptodev/rte_crypto_asym.h > +++ b/lib/cryptodev/rte_crypto_asym.h > @@ -315,6 +315,9 @@ struct rte_crypto_rsa_xform { > struct rte_crypto_rsa_priv_key_qt qt; > /**< qt - Private key in quintuple format */ > }; > + > + struct rte_crypto_rsa_padding padding; > + /**< RSA padding information */ > }; >=20 > /** > @@ -451,9 +454,6 @@ struct rte_crypto_rsa_op_param { > * This could be validated and overwritten by the PMD > * with the signature length. > */ > - > - struct rte_crypto_rsa_padding padding; > - /**< RSA padding information */ > }; >=20 > /** > -- > 2.25.1