get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/126947/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 126947,
    "url": "https://patches.dpdk.org/api/patches/126947/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/72c136279aae9b1348715aba776c8e4a7cd4f900.1684341299.git.gmuthukrishn@marvell.com/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<72c136279aae9b1348715aba776c8e4a7cd4f900.1684341299.git.gmuthukrishn@marvell.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/72c136279aae9b1348715aba776c8e4a7cd4f900.1684341299.git.gmuthukrishn@marvell.com",
    "date": "2023-05-17T16:52:41",
    "name": "lib/cryptodev: move RSA padding information into xform",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "9639d91cd1e997173da7e8b3fbf2199143b805c5",
    "submitter": {
        "id": 2301,
        "url": "https://patches.dpdk.org/api/people/2301/?format=api",
        "name": "Gowrishankar Muthukrishnan",
        "email": "gmuthukrishn@marvell.com"
    },
    "delegate": {
        "id": 6690,
        "url": "https://patches.dpdk.org/api/users/6690/?format=api",
        "username": "akhil",
        "first_name": "akhil",
        "last_name": "goyal",
        "email": "gakhil@marvell.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/72c136279aae9b1348715aba776c8e4a7cd4f900.1684341299.git.gmuthukrishn@marvell.com/mbox/",
    "series": [
        {
            "id": 28037,
            "url": "https://patches.dpdk.org/api/series/28037/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=28037",
            "date": "2023-05-17T16:52:41",
            "name": "lib/cryptodev: move RSA padding information into xform",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/28037/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/126947/comments/",
    "check": "warning",
    "checks": "https://patches.dpdk.org/api/patches/126947/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 6244742B2C;\n\tWed, 17 May 2023 18:53:01 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 5266940EE1;\n\tWed, 17 May 2023 18:53:01 +0200 (CEST)",
            "from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com\n [67.231.156.173])\n by mails.dpdk.org (Postfix) with ESMTP id A48B9406B7\n for <dev@dpdk.org>; Wed, 17 May 2023 18:52:59 +0200 (CEST)",
            "from pps.filterd (m0045851.ppops.net [127.0.0.1])\n by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id\n 34HGRnhY016857; Wed, 17 May 2023 09:52:58 -0700",
            "from dc5-exch02.marvell.com ([199.233.59.182])\n by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3qmyex8ucp-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT);\n Wed, 17 May 2023 09:52:58 -0700",
            "from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH02.marvell.com\n (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.48;\n Wed, 17 May 2023 09:52:56 -0700",
            "from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com\n (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.48 via Frontend\n Transport; Wed, 17 May 2023 09:52:56 -0700",
            "from BG-LT91401.marvell.com (unknown [10.193.69.246])\n by maili.marvell.com (Postfix) with ESMTP id 429A43F7050;\n Wed, 17 May 2023 09:52:52 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com;\n h=from : to : cc :\n subject : date : message-id : mime-version : content-transfer-encoding :\n content-type; s=pfpt0220; bh=5jGLU1qHcEeAR8BgiK6EwF7RyGTR4G329ZKKlcR1tVM=;\n b=JhQ71iMgHZ8Bcp+Mb95LAOhsksdV8FvBIR/LFFdvunODWYXdTgfSiZxOyIAHc6xzJh6d\n iZLa0tahiib6EiNFelLzRFZ/Y453gn9n2jwoX4THspO0oBJ/nHrk52TNTH7h+CLONGYj\n 9AE67cWL4XQtqMKaJTX3tE0nBGSnSwVTotspFbru46CJepb+43gqBCslkEHxvERvcdDv\n nhS+mHxORNOTAhASUtP3H4UP3CrZFZJ+jV+J5UNh7VAFS7FjZRHKSN0T7sO/4tN+MYH8\n DcA04PMJUHl+ZGc2ax8B7qO5/ppn1dlc0Ri1ypju/FH0NvqPMD2IuUJl55jgI04gT2FR 7g==",
        "From": "Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<anoobj@marvell.com>, Akhil Goyal <gakhil@marvell.com>, Fan Zhang\n <fanzhang.oss@gmail.com>, Ankur Dwivedi <adwivedi@marvell.com>, \"Tejasree\n Kondoj\" <ktejasree@marvell.com>, Kai Ji <kai.ji@intel.com>, Brian Dooley\n <brian.dooley@intel.com>, Gowrishankar Muthukrishnan\n <gmuthukrishn@marvell.com>",
        "Subject": "[PATCH] lib/cryptodev: move RSA padding information into xform",
        "Date": "Wed, 17 May 2023 22:22:41 +0530",
        "Message-ID": "\n <72c136279aae9b1348715aba776c8e4a7cd4f900.1684341299.git.gmuthukrishn@marvell.com>",
        "X-Mailer": "git-send-email 2.21.0",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Proofpoint-GUID": "yF0LTWbZkXPqTGwFqAoslgt8UUw5mMgs",
        "X-Proofpoint-ORIG-GUID": "yF0LTWbZkXPqTGwFqAoslgt8UUw5mMgs",
        "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.573,FMLib:17.11.170.22\n definitions=2023-05-17_02,2023-05-17_02,2023-02-09_01",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "RSA padding information could be a xform entity rather than part of\ncrypto op, as it seems associated with hashing algorithm used for\nthe entire crypto session, where this algorithm is used in message\ndigest itself. Even in virtIO standard spec, this info is associated\nin the asymmetric session creation. Hence, moving this info from\ncrypto op into xform structure.\n\nSigned-off-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>\n---\n app/test/test_cryptodev_asym.c               |  6 +--\n app/test/test_cryptodev_rsa_test_vectors.h   |  2 +\n drivers/common/cpt/cpt_ucode_asym.h          |  4 +-\n drivers/crypto/cnxk/cnxk_ae.h                | 13 +++--\n drivers/crypto/octeontx/otx_cryptodev_ops.c  |  4 +-\n drivers/crypto/openssl/openssl_pmd_private.h |  1 +\n drivers/crypto/openssl/rte_openssl_pmd.c     |  4 +-\n drivers/crypto/openssl/rte_openssl_pmd_ops.c |  1 +\n drivers/crypto/qat/qat_asym.c                | 17 ++++---\n examples/fips_validation/main.c              | 52 +++++++++++---------\n lib/cryptodev/rte_crypto_asym.h              |  6 +--\n 11 files changed, 59 insertions(+), 51 deletions(-)",
    "diff": "diff --git a/app/test/test_cryptodev_asym.c b/app/test/test_cryptodev_asym.c\nindex bb4c70deba..1c5114581c 100644\n--- a/app/test/test_cryptodev_asym.c\n+++ b/app/test/test_cryptodev_asym.c\n@@ -92,7 +92,6 @@ queue_ops_rsa_sign_verify(void *sess)\n \tasym_op->rsa.message.length = rsaplaintext.len;\n \tasym_op->rsa.sign.length = RTE_DIM(rsa_n);\n \tasym_op->rsa.sign.data = output_buf;\n-\tasym_op->rsa.padding.type = RTE_CRYPTO_RSA_PADDING_PKCS1_5;\n \n \tdebug_hexdump(stdout, \"message\", asym_op->rsa.message.data,\n \t\t      asym_op->rsa.message.length);\n@@ -124,7 +123,6 @@ queue_ops_rsa_sign_verify(void *sess)\n \n \t/* Verify sign */\n \tasym_op->rsa.op_type = RTE_CRYPTO_ASYM_OP_VERIFY;\n-\tasym_op->rsa.padding.type = RTE_CRYPTO_RSA_PADDING_PKCS1_5;\n \n \t/* Process crypto operation */\n \tif (rte_cryptodev_enqueue_burst(dev_id, 0, &op, 1) != 1) {\n@@ -183,7 +181,6 @@ queue_ops_rsa_enc_dec(void *sess)\n \tasym_op->rsa.cipher.data = cipher_buf;\n \tasym_op->rsa.cipher.length = RTE_DIM(rsa_n);\n \tasym_op->rsa.message.length = rsaplaintext.len;\n-\tasym_op->rsa.padding.type = RTE_CRYPTO_RSA_PADDING_PKCS1_5;\n \n \tdebug_hexdump(stdout, \"message\", asym_op->rsa.message.data,\n \t\t      asym_op->rsa.message.length);\n@@ -215,7 +212,6 @@ queue_ops_rsa_enc_dec(void *sess)\n \tasym_op = result_op->asym;\n \tasym_op->rsa.message.length = RTE_DIM(rsa_n);\n \tasym_op->rsa.op_type = RTE_CRYPTO_ASYM_OP_DECRYPT;\n-\tasym_op->rsa.padding.type = RTE_CRYPTO_RSA_PADDING_PKCS1_5;\n \n \t/* Process crypto operation */\n \tif (rte_cryptodev_enqueue_burst(dev_id, 0, &op, 1) != 1) {\n@@ -412,7 +408,7 @@ test_cryptodev_asym_op(struct crypto_testsuite_params_asym *ts_params,\n \t\t}\n \n \t\txform_tc.rsa.key_type = key_type;\n-\t\top->asym->rsa.padding.type = data_tc->rsa_data.padding;\n+\t\txform_tc.rsa.padding.type = data_tc->rsa_data.padding;\n \n \t\tif (op->asym->rsa.op_type == RTE_CRYPTO_ASYM_OP_ENCRYPT) {\n \t\t\tasym_op->rsa.message.data = data_tc->rsa_data.pt.data;\ndiff --git a/app/test/test_cryptodev_rsa_test_vectors.h b/app/test/test_cryptodev_rsa_test_vectors.h\nindex 04539a1ecf..1e05525d4d 100644\n--- a/app/test/test_cryptodev_rsa_test_vectors.h\n+++ b/app/test/test_cryptodev_rsa_test_vectors.h\n@@ -349,6 +349,7 @@ struct rte_crypto_asym_xform rsa_xform = {\n \t.next = NULL,\n \t.xform_type = RTE_CRYPTO_ASYM_XFORM_RSA,\n \t.rsa = {\n+\t\t.padding.type = RTE_CRYPTO_RSA_PADDING_PKCS1_5,\n \t\t.n = {\n \t\t\t.data = rsa_n,\n \t\t\t.length = sizeof(rsa_n)\n@@ -370,6 +371,7 @@ struct rte_crypto_asym_xform rsa_xform_crt = {\n \t.next = NULL,\n \t.xform_type = RTE_CRYPTO_ASYM_XFORM_RSA,\n \t.rsa = {\n+\t\t.padding.type = RTE_CRYPTO_RSA_PADDING_PKCS1_5,\n \t\t.n = {\n \t\t\t.data = rsa_n,\n \t\t\t.length = sizeof(rsa_n)\ndiff --git a/drivers/common/cpt/cpt_ucode_asym.h b/drivers/common/cpt/cpt_ucode_asym.h\nindex 1105a0c125..42ab0edeea 100644\n--- a/drivers/common/cpt/cpt_ucode_asym.h\n+++ b/drivers/common/cpt/cpt_ucode_asym.h\n@@ -327,7 +327,7 @@ cpt_rsa_prep(struct asym_op_params *rsa_params,\n \t/* Result buffer */\n \trlen = mod_len;\n \n-\tif (rsa_op.padding.type == RTE_CRYPTO_RSA_PADDING_NONE) {\n+\tif (rsa->padding.type == RTE_CRYPTO_RSA_PADDING_NONE) {\n \t\t/* Use mod_exp operation for no_padding type */\n \t\tvq_cmd_w0.s.opcode.minor = CPT_MINOR_OP_MODEX;\n \t\tvq_cmd_w0.s.param2 = exp_len;\n@@ -412,7 +412,7 @@ cpt_rsa_crt_prep(struct asym_op_params *rsa_params,\n \t/* Result buffer */\n \trlen = mod_len;\n \n-\tif (rsa_op.padding.type == RTE_CRYPTO_RSA_PADDING_NONE) {\n+\tif (rsa->padding.type == RTE_CRYPTO_RSA_PADDING_NONE) {\n \t\t/*Use mod_exp operation for no_padding type */\n \t\tvq_cmd_w0.s.opcode.minor = CPT_MINOR_OP_MODEX_CRT;\n \t} else {\ndiff --git a/drivers/crypto/cnxk/cnxk_ae.h b/drivers/crypto/cnxk/cnxk_ae.h\nindex 47f000dd5e..106d38c3bb 100644\n--- a/drivers/crypto/cnxk/cnxk_ae.h\n+++ b/drivers/crypto/cnxk/cnxk_ae.h\n@@ -168,6 +168,9 @@ cnxk_ae_fill_rsa_params(struct cnxk_ae_sess *sess,\n \trsa->n.length = mod_len;\n \trsa->e.length = exp_len;\n \n+\t/* Set padding info */\n+\trsa->padding.type = xform->rsa.padding.type;\n+\n \treturn 0;\n }\n \n@@ -328,7 +331,7 @@ cnxk_ae_rsa_prep(struct rte_crypto_op *op, struct roc_ae_buf_ptr *meta_buf,\n \tdptr += in_size;\n \tdlen = total_key_len + in_size;\n \n-\tif (rsa_op.padding.type == RTE_CRYPTO_RSA_PADDING_NONE) {\n+\tif (rsa->padding.type == RTE_CRYPTO_RSA_PADDING_NONE) {\n \t\t/* Use mod_exp operation for no_padding type */\n \t\tw4.s.opcode_minor = ROC_AE_MINOR_OP_MODEX;\n \t\tw4.s.param2 = exp_len;\n@@ -383,7 +386,7 @@ cnxk_ae_rsa_exp_prep(struct rte_crypto_op *op, struct roc_ae_buf_ptr *meta_buf,\n \tdptr += in_size;\n \tdlen = mod_len + privkey_len + in_size;\n \n-\tif (rsa_op.padding.type == RTE_CRYPTO_RSA_PADDING_NONE) {\n+\tif (rsa->padding.type == RTE_CRYPTO_RSA_PADDING_NONE) {\n \t\t/* Use mod_exp operation for no_padding type */\n \t\tw4.s.opcode_minor = ROC_AE_MINOR_OP_MODEX;\n \t\tw4.s.param2 = privkey_len;\n@@ -441,7 +444,7 @@ cnxk_ae_rsa_crt_prep(struct rte_crypto_op *op, struct roc_ae_buf_ptr *meta_buf,\n \tdptr += in_size;\n \tdlen = total_key_len + in_size;\n \n-\tif (rsa_op.padding.type == RTE_CRYPTO_RSA_PADDING_NONE) {\n+\tif (rsa->padding.type == RTE_CRYPTO_RSA_PADDING_NONE) {\n \t\t/*Use mod_exp operation for no_padding type */\n \t\tw4.s.opcode_minor = ROC_AE_MINOR_OP_MODEX_CRT;\n \t} else {\n@@ -836,7 +839,7 @@ cnxk_ae_dequeue_rsa_op(struct rte_crypto_op *cop, uint8_t *rptr,\n \t\tmemcpy(rsa->cipher.data, rptr, rsa->cipher.length);\n \t\tbreak;\n \tcase RTE_CRYPTO_ASYM_OP_DECRYPT:\n-\t\tif (rsa->padding.type == RTE_CRYPTO_RSA_PADDING_NONE) {\n+\t\tif (rsa_ctx->padding.type == RTE_CRYPTO_RSA_PADDING_NONE) {\n \t\t\trsa->message.length = rsa_ctx->n.length;\n \t\t\tmemcpy(rsa->message.data, rptr, rsa->message.length);\n \t\t} else {\n@@ -856,7 +859,7 @@ cnxk_ae_dequeue_rsa_op(struct rte_crypto_op *cop, uint8_t *rptr,\n \t\tmemcpy(rsa->sign.data, rptr, rsa->sign.length);\n \t\tbreak;\n \tcase RTE_CRYPTO_ASYM_OP_VERIFY:\n-\t\tif (rsa->padding.type == RTE_CRYPTO_RSA_PADDING_NONE) {\n+\t\tif (rsa_ctx->padding.type == RTE_CRYPTO_RSA_PADDING_NONE) {\n \t\t\trsa->sign.length = rsa_ctx->n.length;\n \t\t\tmemcpy(rsa->sign.data, rptr, rsa->sign.length);\n \t\t} else {\ndiff --git a/drivers/crypto/octeontx/otx_cryptodev_ops.c b/drivers/crypto/octeontx/otx_cryptodev_ops.c\nindex 947e1be385..d315dc3237 100644\n--- a/drivers/crypto/octeontx/otx_cryptodev_ops.c\n+++ b/drivers/crypto/octeontx/otx_cryptodev_ops.c\n@@ -708,7 +708,7 @@ otx_cpt_asym_rsa_op(struct rte_crypto_op *cop, struct cpt_request_info *req,\n \t\tmemcpy(rsa->cipher.data, req->rptr, rsa->cipher.length);\n \t\tbreak;\n \tcase RTE_CRYPTO_ASYM_OP_DECRYPT:\n-\t\tif (rsa->padding.type == RTE_CRYPTO_RSA_PADDING_NONE)\n+\t\tif (rsa_ctx->padding.type == RTE_CRYPTO_RSA_PADDING_NONE)\n \t\t\trsa->message.length = rsa_ctx->n.length;\n \t\telse {\n \t\t\t/* Get length of decrypted output */\n@@ -725,7 +725,7 @@ otx_cpt_asym_rsa_op(struct rte_crypto_op *cop, struct cpt_request_info *req,\n \t\tmemcpy(rsa->sign.data, req->rptr, rsa->sign.length);\n \t\tbreak;\n \tcase RTE_CRYPTO_ASYM_OP_VERIFY:\n-\t\tif (rsa->padding.type == RTE_CRYPTO_RSA_PADDING_NONE)\n+\t\tif (rsa_ctx->padding.type == RTE_CRYPTO_RSA_PADDING_NONE)\n \t\t\trsa->sign.length = rsa_ctx->n.length;\n \t\telse {\n \t\t\t/* Get length of decrypted output */\ndiff --git a/drivers/crypto/openssl/openssl_pmd_private.h b/drivers/crypto/openssl/openssl_pmd_private.h\nindex ed6841e460..a6cc3b0749 100644\n--- a/drivers/crypto/openssl/openssl_pmd_private.h\n+++ b/drivers/crypto/openssl/openssl_pmd_private.h\n@@ -173,6 +173,7 @@ struct openssl_asym_session {\n \tunion {\n \t\tstruct rsa {\n \t\t\tRSA *rsa;\n+\t\t\tuint32_t pad;\n #if (OPENSSL_VERSION_NUMBER >= 0x30000000L)\n \t\t\tEVP_PKEY_CTX * ctx;\n #endif\ndiff --git a/drivers/crypto/openssl/rte_openssl_pmd.c b/drivers/crypto/openssl/rte_openssl_pmd.c\nindex f65fbca300..451151e47c 100644\n--- a/drivers/crypto/openssl/rte_openssl_pmd.c\n+++ b/drivers/crypto/openssl/rte_openssl_pmd.c\n@@ -2513,7 +2513,7 @@ process_openssl_rsa_op_evp(struct rte_crypto_op *cop,\n \t\tstruct openssl_asym_session *sess)\n {\n \tstruct rte_crypto_asym_op *op = cop->asym;\n-\tuint32_t pad = (op->rsa.padding.type);\n+\tuint32_t pad = sess->u.r.pad;\n \tuint8_t *tmp;\n \tsize_t outlen = 0;\n \tint ret = -1;\n@@ -2670,7 +2670,7 @@ process_openssl_rsa_op(struct rte_crypto_op *cop,\n \tint ret = 0;\n \tstruct rte_crypto_asym_op *op = cop->asym;\n \tRSA *rsa = sess->u.r.rsa;\n-\tuint32_t pad = (op->rsa.padding.type);\n+\tuint32_t pad = sess->u.r.pad;\n \tuint8_t *tmp;\n \n \tcop->status = RTE_CRYPTO_OP_STATUS_SUCCESS;\ndiff --git a/drivers/crypto/openssl/rte_openssl_pmd_ops.c b/drivers/crypto/openssl/rte_openssl_pmd_ops.c\nindex 29ad1b9505..3ea46caae9 100644\n--- a/drivers/crypto/openssl/rte_openssl_pmd_ops.c\n+++ b/drivers/crypto/openssl/rte_openssl_pmd_ops.c\n@@ -845,6 +845,7 @@ static int openssl_set_asym_session_parameters(\n \t\tif (!n || !e)\n \t\t\tgoto err_rsa;\n \n+\t\tasym_session->u.r.pad = xform->rsa.padding.type;\n #if (OPENSSL_VERSION_NUMBER >= 0x30000000L)\n \t\tOSSL_PARAM_BLD * param_bld = OSSL_PARAM_BLD_new();\n \t\tif (!param_bld) {\ndiff --git a/drivers/crypto/qat/qat_asym.c b/drivers/crypto/qat/qat_asym.c\nindex 82e165538d..e1b6e0b2f6 100644\n--- a/drivers/crypto/qat/qat_asym.c\n+++ b/drivers/crypto/qat/qat_asym.c\n@@ -353,7 +353,7 @@ rsa_set_pub_input(struct icp_qat_fw_pke_request *qat_req,\n \talg_bytesize = qat_function.bytesize;\n \n \tif (asym_op->rsa.op_type == RTE_CRYPTO_ASYM_OP_ENCRYPT) {\n-\t\tswitch (asym_op->rsa.padding.type) {\n+\t\tswitch (xform->rsa.padding.type) {\n \t\tcase RTE_CRYPTO_RSA_PADDING_NONE:\n \t\t\tSET_PKE_LN(asym_op->rsa.message, alg_bytesize, 0);\n \t\t\tbreak;\n@@ -365,7 +365,7 @@ rsa_set_pub_input(struct icp_qat_fw_pke_request *qat_req,\n \t\t}\n \t\tHEXDUMP(\"RSA Message\", cookie->input_array[0], alg_bytesize);\n \t} else {\n-\t\tswitch (asym_op->rsa.padding.type) {\n+\t\tswitch (xform->rsa.padding.type) {\n \t\tcase RTE_CRYPTO_RSA_PADDING_NONE:\n \t\t\tSET_PKE_LN(asym_op->rsa.sign, alg_bytesize, 0);\n \t\t\tbreak;\n@@ -451,7 +451,7 @@ rsa_set_priv_input(struct icp_qat_fw_pke_request *qat_req,\n \n \tif (asym_op->rsa.op_type ==\n \t\t\tRTE_CRYPTO_ASYM_OP_DECRYPT) {\n-\t\tswitch (asym_op->rsa.padding.type) {\n+\t\tswitch (xform->rsa.padding.type) {\n \t\tcase RTE_CRYPTO_RSA_PADDING_NONE:\n \t\t\tSET_PKE_LN(asym_op->rsa.cipher,\talg_bytesize, 0);\n \t\t\tHEXDUMP(\"RSA ciphertext\", cookie->input_array[0],\n@@ -465,7 +465,7 @@ rsa_set_priv_input(struct icp_qat_fw_pke_request *qat_req,\n \n \t} else if (asym_op->rsa.op_type ==\n \t\t\tRTE_CRYPTO_ASYM_OP_SIGN) {\n-\t\tswitch (asym_op->rsa.padding.type) {\n+\t\tswitch (xform->rsa.padding.type) {\n \t\tcase RTE_CRYPTO_RSA_PADDING_NONE:\n \t\t\tSET_PKE_LN(asym_op->rsa.message, alg_bytesize, 0);\n \t\t\tHEXDUMP(\"RSA text to be signed\", cookie->input_array[0],\n@@ -505,7 +505,8 @@ rsa_set_input(struct icp_qat_fw_pke_request *qat_req,\n \n static uint8_t\n rsa_collect(struct rte_crypto_asym_op *asym_op,\n-\t\tconst struct qat_asym_op_cookie *cookie)\n+\t\tconst struct qat_asym_op_cookie *cookie,\n+\t\tconst struct rte_crypto_asym_xform *xform)\n {\n \tuint32_t alg_bytesize = cookie->alg_bytesize;\n \n@@ -521,7 +522,7 @@ rsa_collect(struct rte_crypto_asym_op *asym_op,\n \t\t\tHEXDUMP(\"RSA Encrypted data\", cookie->output_array[0],\n \t\t\t\talg_bytesize);\n \t\t} else {\n-\t\t\tswitch (asym_op->rsa.padding.type) {\n+\t\t\tswitch (xform->rsa.padding.type) {\n \t\t\tcase RTE_CRYPTO_RSA_PADDING_NONE:\n \t\t\t\trte_memcpy(asym_op->rsa.cipher.data,\n \t\t\t\t\t\tcookie->output_array[0],\n@@ -538,7 +539,7 @@ rsa_collect(struct rte_crypto_asym_op *asym_op,\n \t\t}\n \t} else {\n \t\tif (asym_op->rsa.op_type == RTE_CRYPTO_ASYM_OP_DECRYPT) {\n-\t\t\tswitch (asym_op->rsa.padding.type) {\n+\t\t\tswitch (xform->rsa.padding.type) {\n \t\t\tcase RTE_CRYPTO_RSA_PADDING_NONE:\n \t\t\t\trte_memcpy(asym_op->rsa.message.data,\n \t\t\t\t\tcookie->output_array[0],\n@@ -1009,7 +1010,7 @@ qat_asym_collect_response(struct rte_crypto_op *op,\n \tcase RTE_CRYPTO_ASYM_XFORM_MODINV:\n \t\treturn modinv_collect(asym_op, cookie, xform);\n \tcase RTE_CRYPTO_ASYM_XFORM_RSA:\n-\t\treturn rsa_collect(asym_op, cookie);\n+\t\treturn rsa_collect(asym_op, cookie, xform);\n \tcase RTE_CRYPTO_ASYM_XFORM_ECDSA:\n \t\treturn ecdsa_collect(asym_op, cookie);\n \tcase RTE_CRYPTO_ASYM_XFORM_ECPM:\ndiff --git a/examples/fips_validation/main.c b/examples/fips_validation/main.c\nindex 4237224d9d..c8e8145a69 100644\n--- a/examples/fips_validation/main.c\n+++ b/examples/fips_validation/main.c\n@@ -926,31 +926,7 @@ prepare_rsa_op(void)\n \t__rte_crypto_op_reset(env.op, RTE_CRYPTO_OP_TYPE_ASYMMETRIC);\n \n \tasym = env.op->asym;\n-\tasym->rsa.padding.type = info.interim_info.rsa_data.padding;\n-\tasym->rsa.padding.hash = info.interim_info.rsa_data.auth;\n-\n \tif (env.digest) {\n-\t\tif (asym->rsa.padding.type == RTE_CRYPTO_RSA_PADDING_PKCS1_5) {\n-\t\t\tint b_len = 0;\n-\t\t\tuint8_t b[32];\n-\n-\t\t\tb_len = get_hash_oid(asym->rsa.padding.hash, b);\n-\t\t\tif (b_len < 0) {\n-\t\t\t\tRTE_LOG(ERR, USER1, \"Failed to get digest info for hash %d\\n\",\n-\t\t\t\t\tasym->rsa.padding.hash);\n-\t\t\t\treturn -EINVAL;\n-\t\t\t}\n-\n-\t\t\tif (b_len) {\n-\t\t\t\tmsg.len = env.digest_len + b_len;\n-\t\t\t\tmsg.val = rte_zmalloc(NULL, msg.len, 0);\n-\t\t\t\trte_memcpy(msg.val, b, b_len);\n-\t\t\t\trte_memcpy(msg.val + b_len, env.digest, env.digest_len);\n-\t\t\t\trte_free(env.digest);\n-\t\t\t\tenv.digest = msg.val;\n-\t\t\t\tenv.digest_len = msg.len;\n-\t\t\t}\n-\t\t}\n \t\tmsg.val = env.digest;\n \t\tmsg.len = env.digest_len;\n \t} else {\n@@ -1542,6 +1518,34 @@ prepare_rsa_xform(struct rte_crypto_asym_xform *xform)\n \txform->rsa.e.length = vec.rsa.e.len;\n \txform->rsa.n.data = vec.rsa.n.val;\n \txform->rsa.n.length = vec.rsa.n.len;\n+\n+\txform->rsa.padding.type = info.interim_info.rsa_data.padding;\n+\txform->rsa.padding.hash = info.interim_info.rsa_data.auth;\n+\tif (env.digest) {\n+\t\tif (xform->rsa.padding.type == RTE_CRYPTO_RSA_PADDING_PKCS1_5) {\n+\t\t\tstruct fips_val msg;\n+\t\t\tint b_len = 0;\n+\t\t\tuint8_t b[32];\n+\n+\t\t\tb_len = get_hash_oid(xform->rsa.padding.hash, b);\n+\t\t\tif (b_len < 0) {\n+\t\t\t\tRTE_LOG(ERR, USER1, \"Failed to get digest info for hash %d\\n\",\n+\t\t\t\t\txform->rsa.padding.hash);\n+\t\t\t\treturn -EINVAL;\n+\t\t\t}\n+\n+\t\t\tif (b_len) {\n+\t\t\t\tmsg.len = env.digest_len + b_len;\n+\t\t\t\tmsg.val = rte_zmalloc(NULL, msg.len, 0);\n+\t\t\t\trte_memcpy(msg.val, b, b_len);\n+\t\t\t\trte_memcpy(msg.val + b_len, env.digest, env.digest_len);\n+\t\t\t\trte_free(env.digest);\n+\t\t\t\tenv.digest = msg.val;\n+\t\t\t\tenv.digest_len = msg.len;\n+\t\t\t}\n+\t\t}\n+\t}\n+\n \treturn 0;\n }\n \ndiff --git a/lib/cryptodev/rte_crypto_asym.h b/lib/cryptodev/rte_crypto_asym.h\nindex bdf92d4358..5c80e05da2 100644\n--- a/lib/cryptodev/rte_crypto_asym.h\n+++ b/lib/cryptodev/rte_crypto_asym.h\n@@ -315,6 +315,9 @@ struct rte_crypto_rsa_xform {\n \t\tstruct rte_crypto_rsa_priv_key_qt qt;\n \t\t/**< qt - Private key in quintuple format */\n \t};\n+\n+\tstruct rte_crypto_rsa_padding padding;\n+\t/**< RSA padding information */\n };\n \n /**\n@@ -451,9 +454,6 @@ struct rte_crypto_rsa_op_param {\n \t * This could be validated and overwritten by the PMD\n \t * with the signature length.\n \t */\n-\n-\tstruct rte_crypto_rsa_padding padding;\n-\t/**< RSA padding information */\n };\n \n /**\n",
    "prefixes": []
}