get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 42721,
    "url": "http://patches.dpdk.org/api/patches/42721/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1531236801-5931-2-git-send-email-shally.verma@caviumnetworks.com/",
    "project": {
        "id": 1,
        "url": "http://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": "<1531236801-5931-2-git-send-email-shally.verma@caviumnetworks.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1531236801-5931-2-git-send-email-shally.verma@caviumnetworks.com",
    "date": "2018-07-10T15:33:18",
    "name": "[v5,1/4] cryptodev: add asymmetric xform and op definitions",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "a42468b08ff843f3e3356e47327e9f5a12f1c355",
    "submitter": {
        "id": 960,
        "url": "http://patches.dpdk.org/api/people/960/?format=api",
        "name": "Shally Verma",
        "email": "shally.verma@caviumnetworks.com"
    },
    "delegate": {
        "id": 22,
        "url": "http://patches.dpdk.org/api/users/22/?format=api",
        "username": "pdelarag",
        "first_name": "Pablo",
        "last_name": "de Lara Guarch",
        "email": "pablo.de.lara.guarch@intel.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1531236801-5931-2-git-send-email-shally.verma@caviumnetworks.com/mbox/",
    "series": [
        {
            "id": 499,
            "url": "http://patches.dpdk.org/api/series/499/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=499",
            "date": "2018-07-10T15:33:17",
            "name": "crypto: add asym crypto support",
            "version": 5,
            "mbox": "http://patches.dpdk.org/series/499/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/42721/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/42721/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 281C41B488;\n\tTue, 10 Jul 2018 17:34:03 +0200 (CEST)",
            "from NAM03-BY2-obe.outbound.protection.outlook.com\n\t(mail-by2nam03on0083.outbound.protection.outlook.com [104.47.42.83])\n\tby dpdk.org (Postfix) with ESMTP id 02C511B475\n\tfor <dev@dpdk.org>; Tue, 10 Jul 2018 17:34:00 +0200 (CEST)",
            "from hyd1sverma-dt.caveonetworks.com (115.113.156.2) by\n\tDM5PR0701MB3639.namprd07.prod.outlook.com (2603:10b6:4:7e::11) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n\t15.20.930.20; Tue, 10 Jul 2018 15:33:57 +0000"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=gGlud7NFHSBLznShHawUpso8gelf7peXfSiPnUyzVFo=;\n\tb=g6gIp9opeT0bhfi1cXPQaN8JcTyE18lw2tkfg1UNbv+vRglFOBoeB6dJHFB+2bDAm70d5qOhPH+x4J7rDIzghCVVpsQWa9HW1AAt6Z2vcrwTmLkZsySqhPxsjUjuMwnfxfZIp4bZhVSNMjL3S1JZuvZwFmgIbUuxuqWH6ATLLzk=",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=Shally.Verma@cavium.com; ",
        "From": "Shally Verma <shally.verma@caviumnetworks.com>",
        "To": "pablo.de.lara.guarch@intel.com",
        "Cc": "dev@dpdk.org, pathreya@caviumnetworks.com, nmurthy@caviumnetworks.com,\n\tUmesh Kartha <umesh.kartha@caviumnetworks.com>,\n\tSunila Sahu <sunila.sahu@caviumnetworks.com>,\n\tAshish Gupta <ashish.gupta@caviumnetworks.com>",
        "Date": "Tue, 10 Jul 2018 21:03:18 +0530",
        "Message-Id": "<1531236801-5931-2-git-send-email-shally.verma@caviumnetworks.com>",
        "X-Mailer": "git-send-email 1.9.1",
        "In-Reply-To": "<1531236801-5931-1-git-send-email-shally.verma@caviumnetworks.com>",
        "References": "<1531236801-5931-1-git-send-email-shally.verma@caviumnetworks.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[115.113.156.2]",
        "X-ClientProxiedBy": "BM1PR0101CA0007.INDPRD01.PROD.OUTLOOK.COM\n\t(2603:1096:b00:18::17) To DM5PR0701MB3639.namprd07.prod.outlook.com\n\t(2603:10b6:4:7e::11)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "8a6d72ba-c5b4-441d-c379-08d5e67a8e94",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0;\n\tRULEID:(7020095)(4652040)(8989117)(5600053)(711020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020);\n\tSRVR:DM5PR0701MB3639; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; DM5PR0701MB3639;\n\t3:4tUsH1WjDr2k39wrjukmRtiCbJ1acWfpN/wV6qZmdsrT+rPJ2oiBKZ/cPn0XWUJ3QL5Oi/8R5BddEIMBQ/qQuSfvyQjye9/1PASE2cygnkEE7b16aC1m+n4R4wm2YClYtHoukyN2Uet2t04Y/Qyj+V5N+ludf72YZz5IUPZhXesSCz2LeCVdyKiGjslAvJ3WkAd+//qeOia+y4mibdTKopQ+cx0mo8qQm1kzSIbnxzfwT1Zvid/t09jKz+fCRK25;\n\t25:kATQ9SyMaPVgAd4x4UUErhJ47R3U3GBo8+Tsyr42/ATaMdOA5iebiwm62pueh8Q+Y/c3T838ApVaKyUAKAboaQoLY9b1rfxb1Cw10A6xUSrC1iwL70+FfoOno8oJ6sNko3r6WQMaIkwwhHfO8UiXG16iRC/09G8gzZUjfK2saOXNQ0myKG0UCKxGacW8b1IATCQPPDHHCAegOjDW5wX+iTrOjke1sssqWOiMkI4GW3GovoZPegEW+bj6bmsr/SuYcHf0K/E2pzqBn7T93xr2j7pXR0H5ekOQQN/l/yAFt05+IIjCVmY6dMLNAMLpI3d8FoIrLse15cEruyPV1P90qQ==;\n\t31:lc6s9HZKHqdfu4msrolWrmJRJy48b6fqgb2T87ZoP2S8F+5cBTXZWWf+8tk/rHQIa2qEMXhJGv7m/a0ccqCWm0SXCrq5L/LFEzAvuRDSMDicl3gcP2CvT3UsGIkBqLxmfM6oAgGfyF0TxyeX3h2w47fFoC7Ce3qucMfaI5sBt6GyzD8nhj2Hh45A39KsROcSt6Y4q+dNdnTAR8NZsjhTrlM32eHkGCLyCCYq8bVhOXU=",
            "1; DM5PR0701MB3639;\n\t20:tnFTri9FXiZ4w4C2nbBaswyJzRJFIKIw85FJkAAV1VFHprhIz3f22ThSeV3U0RIfXu2iZZJAY/xhWKC6SQryYU5IihM35llemRCZ2y1QX6Y+/IEWCEEH4QhOr1R0CCXEWMhnLKz7keE3vVALD/l73F7oWXwNoNjUuUOUwKrd5Go0OW7OgOcao2CXk4gutFJYJdENiZbs7DmPkzlfbHGNLuNyQVOniSKgI0AGTVhqyvs3+dY7K+xOq5dhKwoSFKZVhPGr1ZzC/+IUqXfjyCgiJm+PnO8XAQhygNZvbDGEqZf05VPtkXbfaMvX7VwztpsWDFP22Jw67F0JJYMOKCYIr/BmNuyF/BnFHLgcbGLknlVFks7VBHHs1iX+W/5XSOE9DoNlVVt61K8PQqFCsiVgH3GzKLx+Gw4sJQyyWEXZqL8jNuXmLxO256ybKVZ4LYnRa5CnZx3z99EZ+jORpSoZszvg4ic/Udi9wxBnUuiT8jx3+rGEY7fs3Nwykl/q8Rxss0jkHSt3CNg+5DIFUXvhxxc4cy43atypN/Ht7AWfVMEV7bVHGc774qQKQncNjB5rC0kCgF5szoEaze1FDwPXwU4OlfDdLCKRGd8hb4GB8P8=;\n\t4:rSE3Un05H6zKvCmHBLEV2XA6p9vSNVXLQL89CFWuRfZUg+kRd5lwcRLGUtiGVUsZFTbgxeC1axzJW4FhQfoE4dF7vP4pYIRoZBr7g6ELVHhIwRHcPIHgvtiibU9X7Dgbu+38pQSIesjyEtIKmVWp5M+fGSDNAi2IpUZE43mtVJGTZEd/snKYM6q0z/G9pEXC/LDrZkn9Uq4hCTEd3U+CZvz2XdqxFFxRZno9AUGtFPJS37jhj1ETIkBqxG6BYSp9W9oO/hw9NCToUH53/1gHkg==",
            "=?us-ascii?Q?1; DM5PR0701MB3639;\n\t23:SOvNNSvAD6NdtZ8v9w+wAtowGUrv5Vq1N356+Ix?=\n\tZ4q8OZMvbKlCoVsd3KAyeiz86crp2owd+l/ABBB+2SkKZqtcuP8Ns6pWuQzA3ZjI+C+YdXxu9zslLvbZPdEBg4yZP9Xx9sSA/HRnvnR5/tNrlyYZjrK6GNNwHuKIRM34W8RTsCkLBUgYx5eSRe4nwKv14qthrF1MWZd9mFF4LIFdXCaxoRODVgedQNtrF+sE2UIYJ2QTULV05qn7PluWBuqdIIRU3+Mh86EiIoe5Ljsjr/jWpJgfp6eMhpOLV+XMbiDCta0A5TwzhloJnC6zb24QnHwj3KR3MCMhMBM8YmU8LLTr7jKYIbtdAQDeZeHhbCKr8daQVtIa9zzryz8Q7O6UtAAsG5ZCT4Izl8nkmkFcDTNhOXl9za8uRDfwtOMtay7Tr6+j8fg9ZVFzbv3ksNCj9ODKM7d/330gzJPw7asSET+n+Z99NrKthNn567zcGaMKQwxVuwV0v4aFjTDXmLCSbLbVRFJ1DDpY+b2e+jSPUyPWWyttKgB9L5nDEg+6wKA5vC074Zqsl5TOYdMcZ27WSv+4hQx2ZHIb8UKI7q6LzvNHugry9T2OgTkCk6MUPZ+QbYwYHtPVF4OREnQZY7l/h+Lqk+O3dvPVHEqYrDFG1/RzlPdukD4RSthAtCiaL656K+im2CSfvkoWqHlTAyZRX96PrTX4bVT/+Jf1HQt88z7zkt06Y6DWm6fbFt3WiwgKZd3hn26fWQInH8sggWVRZaATG/qSKPYgIyKqM9aSAM7i11HXI4uQo1lrOd6MQfmXgT46U3k7x7wMrj/zqp2p+qTajrb1qhphMT9l5RcMi2wp+PlpqN24DXgJP++/0bAqYLgZer2tAMFmGUf4E3HzXjwBTbKsOa2LKsPdPT7XIc4RFQIxc98DUs1ammdAqqC9WAH2DthywGLqDYTCw6w8JoVXvaxngOTZHGnl1fRNzERgGN7ijVuKW8iG9/SvgxTB1/2kmS8Y8OyCQVeahTtFmhaC8srT37uweIcq546RRZ/QTQ+ts0EncwJYGh0hBe+uqM7xyR0IOglkbydq+HSqQVpX1kLn9OmloDOwZZJhoosvTHJOvYpjoVSAlnOkVbLpMW1x8x1FAtsIIqA1v/jd4bD+jRJDCVVvmXP7KfqPqnkkql9dQk/8KeXxyhO3xj67LgHQftLmH1wf10GrXyiw/EkNxzxQHzNjuTyf+5JZerWEAf7eZKgJew9PStAULjv0zN0OmgBHGlBkNZsJLa5xXhyv5+LySJn2QUYfXYWOIKFwaUBneoC4xdyatwioU1PDcHoQfk+wT+3ZHLEtKVraacOLHLFqpCYoNGzuE3EuLYyzQUGDT71g8zfTG82SJGpxrTDnUG1eic4eJInCj9VEw",
            "1; DM5PR0701MB3639;\n\t6:BkZXi2idF2nDkhTXP3mRO74EC7K3zXkXdLUa6OrMMdF3/FlX6MabvXeKL+OpRziMxKzDYR/TGxTUDjC0BJC+zxNbNR19YOePWGiyjFkM0Hwf1mdYY4tcxKKaBgWEPwz/03oy1L8pw4VUVdHIq8NEf3LHbow0zPBfwnut2bw5UosKMbm9wExHGvWqsa0Tkl0FLbEdzkbwThHND4Q/1Z5/m4UWNBnyFpWKfdRDvHryiBFVGih1mkV6iRN1MHkuUD2AMDMmAKhsmxoDsD46qsOivnyikP4UxJumkyjivw18tHP4Qgws6nA0LzIqoRgOoZvaHql7qTx9qEsOzG85AOdW+Q3ffeHdsanGIuhw/BOLJeFBRAIX4+1UBfMLJwAZXuZfKCU3sN2vuyRNpQjxROFxM9Y3qujLUImqAULb4ZeWX0S5AfINn2Ap0t1Ll1IfIO9V+QLVED3itVKpTcx6ZztNdg==;\n\t5:tQ57I2BIiRzEXC+0HUqG13OGYLu7Vkx2nSiij457NhSQ85oR2SBeMBjTIzgn5mn8ic6PInldcezlG9zFo/Z6yfiS3rRpHlKPtnqUi698sxmuR11wBHw3fYUTl9yw9kQxIGJXnJgHOr8ev02Gto6fI9f9GPT4GeNvFTbCI/htQ+I=;\n\t24:Z6VZm/GvrqT0ZQ8hLLuR7Y+JvdeVeezz2jjz4XpiQC1v5E3KDMQtVGUOYcEFD7kpFJhZsqhSc39Id7bn4jn0LhWzwC8KkBrHn6tzqXXrLZA=",
            "1; DM5PR0701MB3639;\n\t7:9PD6RIEU4zRzmGj75f4tws7yhVdzwc3SzTT4mzG6g006kAz0Y0gJhWPU/muaQZYq0cQhh2y2g7vsMWm/+uTXNCLc4WWsTpjcyTprhiYJZT+RRa0hAHMQziduNDrsEmu+lPnyCNySZNVg3nnJdpv9SiYwntKiRnhJHZp2kbkfPnqeUE4idCR3nbtpGvhhjuFHGDjnr7I0hS4zxNRSSCv9J+pHlao/vkdFlHBiTpzbhsPXkji4ZDI79aH6BIRO7ABT"
        ],
        "X-MS-TrafficTypeDiagnostic": "DM5PR0701MB3639:",
        "X-Microsoft-Antispam-PRVS": "<DM5PR0701MB3639631A6031307260725591F05B0@DM5PR0701MB3639.namprd07.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:;",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3002001)(3231311)(944501410)(52105095)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123564045)(20161123558120)(6072148)(201708071742011)(7699016);\n\tSRVR:DM5PR0701MB3639; BCL:0; PCL:0; RULEID:; SRVR:DM5PR0701MB3639; ",
        "X-Forefront-PRVS": "0729050452",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(396003)(346002)(376002)(366004)(39860400002)(136003)(199004)(189003)(47776003)(2361001)(68736007)(53416004)(76176011)(66066001)(6486002)(6666003)(186003)(105586002)(16586007)(316002)(6916009)(51416003)(50466002)(97736004)(48376002)(72206003)(54906003)(8676002)(14444005)(4326008)(478600001)(5660300001)(16526019)(50226002)(6512007)(2906002)(386003)(3846002)(6506007)(44832011)(106356001)(107886003)(2616005)(26005)(55236004)(69596002)(6116002)(956004)(81166006)(2351001)(305945005)(25786009)(81156014)(53936002)(36756003)(8936002)(11346002)(52116002)(476003)(7736002)(486006)(42882007)(446003)(473944003);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR0701MB3639;\n\tH:hyd1sverma-dt.caveonetworks.com; FPR:; SPF:None; LANG:en;\n\tPTR:InfoNoRecords; A:1; MX:1; ",
        "Received-SPF": "None (protection.outlook.com: cavium.com does not designate\n\tpermitted sender hosts)",
        "X-Microsoft-Antispam-Message-Info": "q1GdMoDpzthb0BAGS6NwhbR0XmTy+U8DlRDrqDkwORH+LySoJOZdT1JXdm+Ne8KfDCex/rTRJ1rIYbluoZUqfiOSs2TvI2VaYuEq7HIm7YLgDUKbsKkW/5TbHSmcA89lJZHC8h5UWSytpshCTE0ZfM474twgS/I12TkWFPuq3F1T0e4oXLSmSC0RbIXhjvqeGNcDC/5AWn+J7GMnQdYwCKzkytfJ/3Y3qEeA0GD/fuclky0CI+Am7IWsB4ryTWgnvf/Ooj1MY7RbdgspArYU/LwWAz5nIf4+L/HBnrMiu3+kxgF7K+aGAhVGU2NpXk5FuxeVKHfr3uX7syHEMdoQ/qNx5YBgNYj2voFandTVMpE=",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "caviumnetworks.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "10 Jul 2018 15:33:57.1178\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "8a6d72ba-c5b4-441d-c379-08d5e67a8e94",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "711e4ccf-2e9b-4bcf-a551-4094005b6194",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DM5PR0701MB3639",
        "Subject": "[dpdk-dev] [PATCH v5 1/4] cryptodev: add asymmetric xform and op\n\tdefinitions",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<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\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Umesh Kartha <umesh.kartha@caviumnetworks.com>\n\nAdd rte_crypto_asym.h with supported xforms\nand associated op structures and APIs\n\nAPI currently supports:\n- RSA Encrypt, Decrypt, Sign and Verify\n- Modular Exponentiation and Inversion\n- DSA Sign and Verify\n- Diffie-hellman private key exchange\n- Diffie-hellman public key exchange\n- Diffie-hellman shared secret compute\n- Diffie-hellman public/private key pair generation\nusing xform chain\n\nSigned-off-by: Shally Verma <shally.verma@caviumnetworks.com>\nSigned-off-by: Sunila Sahu <sunila.sahu@caviumnetworks.com>\nSigned-off-by: Ashish Gupta <ashish.gupta@caviumnetworks.com>\nSigned-off-by: Umesh Kartha <umesh.kartha@caviumnetworks.com>\n---\n lib/librte_cryptodev/Makefile          |   1 +\n lib/librte_cryptodev/meson.build       |   3 +-\n lib/librte_cryptodev/rte_crypto_asym.h | 496 +++++++++++++++++++++++++++++++++\n 3 files changed, 499 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/lib/librte_cryptodev/Makefile b/lib/librte_cryptodev/Makefile\nindex bba8dee..c114888 100644\n--- a/lib/librte_cryptodev/Makefile\n+++ b/lib/librte_cryptodev/Makefile\n@@ -23,6 +23,7 @@ SYMLINK-y-include += rte_crypto.h\n SYMLINK-y-include += rte_crypto_sym.h\n SYMLINK-y-include += rte_cryptodev.h\n SYMLINK-y-include += rte_cryptodev_pmd.h\n+SYMLINK-y-include += rte_crypto_asym.h\n \n # versioning export map\n EXPORT_MAP := rte_cryptodev_version.map\ndiff --git a/lib/librte_cryptodev/meson.build b/lib/librte_cryptodev/meson.build\nindex bd5fed8..295f509 100644\n--- a/lib/librte_cryptodev/meson.build\n+++ b/lib/librte_cryptodev/meson.build\n@@ -6,5 +6,6 @@ sources = files('rte_cryptodev.c', 'rte_cryptodev_pmd.c')\n headers = files('rte_cryptodev.h',\n \t'rte_cryptodev_pmd.h',\n \t'rte_crypto.h',\n-\t'rte_crypto_sym.h')\n+\t'rte_crypto_sym.h',\n+\t'rte_crypto_asym.h')\n deps += ['kvargs', 'mbuf']\ndiff --git a/lib/librte_cryptodev/rte_crypto_asym.h b/lib/librte_cryptodev/rte_crypto_asym.h\nnew file mode 100644\nindex 0000000..8915143\n--- /dev/null\n+++ b/lib/librte_cryptodev/rte_crypto_asym.h\n@@ -0,0 +1,496 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright(c) 2018 Cavium Networks\n+ */\n+\n+#ifndef _RTE_CRYPTO_ASYM_H_\n+#define _RTE_CRYPTO_ASYM_H_\n+\n+/**\n+ * @file rte_crypto_asym.h\n+ *\n+ * RTE Definitions for Asymmetric Cryptography\n+ *\n+ * Defines asymmetric algorithms and modes, as well as supported\n+ * asymmetric crypto operations.\n+ */\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+#include <string.h>\n+#include <stdint.h>\n+\n+#include <rte_memory.h>\n+#include <rte_mempool.h>\n+#include <rte_common.h>\n+\n+typedef struct rte_crypto_param_t {\n+\tuint8_t *data;\n+\t/**< pointer to buffer holding data */\n+\trte_iova_t iova;\n+\t/**< IO address of data buffer */\n+\tsize_t length;\n+\t/**< length of data in bytes */\n+} rte_crypto_param;\n+\n+/** asym xform type name strings */\n+extern const char *\n+rte_crypto_asym_xform_strings[];\n+\n+/** asym operations type name strings */\n+extern const char *\n+rte_crypto_asym_op_strings[];\n+\n+/**\n+ * Asymmetric crypto transformation types.\n+ * Each xform type maps to one asymmetric algorithm\n+ * performing specific operation\n+ *\n+ */\n+enum rte_crypto_asym_xform_type {\n+\tRTE_CRYPTO_ASYM_XFORM_UNSPECIFIED = 0,\n+\t/**< Invalid xform. */\n+\tRTE_CRYPTO_ASYM_XFORM_NONE,\n+\t/**< Xform type None.\n+\t * May be supported by PMD to support\n+\t * passthrough op for debugging purpose.\n+\t * if xform_type none , op_type is disregarded.\n+\t */\n+\tRTE_CRYPTO_ASYM_XFORM_RSA,\n+\t/**< RSA. Performs Encrypt, Decrypt, Sign and Verify.\n+\t * Refer to rte_crypto_asym_op_type\n+\t */\n+\tRTE_CRYPTO_ASYM_XFORM_DH,\n+\t/**< Deffie-Hellman.\n+\t * Performs Key Generate and Shared Secret Compute.\n+\t * Refer to rte_crypto_asym_op_type\n+\t */\n+\tRTE_CRYPTO_ASYM_XFORM_DSA,\n+\t/**< Digital Signature Algorithm\n+\t * Performs Signature Generation and Verification.\n+\t * Refer to rte_crypto_asym_op_type\n+\t */\n+\tRTE_CRYPTO_ASYM_XFORM_MODINV,\n+\t/**< Modular Inverse\n+\t * Perform Modulus inverse b^(-1) mod n\n+\t */\n+\tRTE_CRYPTO_ASYM_XFORM_MODEX,\n+\t/**< Modular Exponentiation\n+\t * Perform Modular Exponentiation b^e mod n\n+\t */\n+\tRTE_CRYPTO_ASYM_XFORM_TYPE_LIST_END\n+\t/**< End of list */\n+};\n+\n+/**\n+ * Asymmetric crypto operation type variants\n+ */\n+enum rte_crypto_asym_op_type {\n+\tRTE_CRYPTO_ASYM_OP_ENCRYPT,\n+\t/**< Asymmetric Encrypt operation */\n+\tRTE_CRYPTO_ASYM_OP_DECRYPT,\n+\t/**< Asymmetric Decrypt operation */\n+\tRTE_CRYPTO_ASYM_OP_SIGN,\n+\t/**< Signature Generation operation */\n+\tRTE_CRYPTO_ASYM_OP_VERIFY,\n+\t/**< Signature Verification operation */\n+\tRTE_CRYPTO_ASYM_OP_PRIVATE_KEY_GENERATE,\n+\t/**< DH Private Key generation operation */\n+\tRTE_CRYPTO_ASYM_OP_PUBLIC_KEY_GENERATE,\n+\t/**< DH Public Key generation operation */\n+\tRTE_CRYPTO_ASYM_OP_SHARED_SECRET_COMPUTE,\n+\t/**< DH Shared Secret compute operation */\n+\tRTE_CRYPTO_ASYM_OP_LIST_END\n+};\n+\n+/**\n+ * Padding types for RSA signature.\n+ */\n+enum rte_crypto_rsa_padding_type {\n+\tRTE_CRYPTO_RSA_PADDING_NONE = 0,\n+\t/**< RSA no padding scheme */\n+\tRTE_CRYPTO_RSA_PKCS1_V1_5_BT0,\n+\t/**< RSA PKCS#1 V1.5 Block Type 0 padding scheme\n+\t * as descibed in rfc2313\n+\t */\n+\tRTE_CRYPTO_RSA_PKCS1_V1_5_BT1,\n+\t/**< RSA PKCS#1 V1.5 Block Type 01 padding scheme\n+\t * as descibed in rfc2313\n+\t */\n+\tRTE_CRYPTO_RSA_PKCS1_V1_5_BT2,\n+\t/**< RSA PKCS#1 V1.5 Block Type 02 padding scheme\n+\t * as descibed in rfc2313\n+\t */\n+\tRTE_CRYPTO_RSA_PADDING_OAEP,\n+\t/**< RSA PKCS#1 OAEP padding scheme */\n+\tRTE_CRYPTO_RSA_PADDING_PSS,\n+\t/**< RSA PKCS#1 PSS padding scheme */\n+\tRTE_CRYPTO_RSA_PADDING_TYPE_LIST_END\n+};\n+\n+/**\n+ * RSA private key type enumeration\n+ *\n+ * enumerates private key format required to perform RSA crypto\n+ * transform.\n+ *\n+ */\n+enum rte_crypto_rsa_priv_key_type {\n+\tRTE_RSA_KEY_TYPE_EXP,\n+\t/**< RSA private key is an exponent */\n+\tRTE_RSA_KET_TYPE_QT,\n+\t/**< RSA private key is in quintuple format\n+\t * See rte_crypto_rsa_priv_key_qt\n+\t */\n+};\n+\n+/**\n+ * Structure describing RSA private key in quintuple format.\n+ * See PKCS V1.5 RSA Cryptography Standard.\n+ */\n+struct rte_crypto_rsa_priv_key_qt {\n+\trte_crypto_param p;\n+\t/**< p - Private key component P\n+\t * Private key component of RSA parameter  required for CRT method\n+\t * of private key operations in Octet-string network byte order\n+\t * format.\n+\t */\n+\n+\trte_crypto_param q;\n+\t/**< q - Private key component Q\n+\t * Private key component of RSA parameter  required for CRT method\n+\t * of private key operations in Octet-string network byte order\n+\t * format.\n+\t */\n+\n+\trte_crypto_param dP;\n+\t/**< dP - Private CRT component\n+\t * Private CRT component of RSA parameter  required for CRT method\n+\t * RSA private key operations in Octet-string network byte order\n+\t * format.\n+\t * dP = d mod ( p - 1 )\n+\t */\n+\n+\trte_crypto_param dQ;\n+\t/**< dQ - Private CRT component\n+\t * Private CRT component of RSA parameter  required for CRT method\n+\t * RSA private key operations in Octet-string network byte order\n+\t * format.\n+\t * dQ = d mod ( q - 1 )\n+\t */\n+\n+\trte_crypto_param qInv;\n+\t/**< qInv - Private CRT component\n+\t * Private CRT component of RSA parameter  required for CRT method\n+\t * RSA private key operations in Octet-string network byte order\n+\t * format.\n+\t * qInv = inv q mod p\n+\t */\n+};\n+\n+/**\n+ * Asymmetric RSA transform data\n+ *\n+ * Structure describing RSA xform params\n+ *\n+ */\n+struct rte_crypto_rsa_xform {\n+\trte_crypto_param n;\n+\t/**< n - Prime modulus\n+\t * Prime modulus data of RSA operation in Octet-string network\n+\t * byte order format.\n+\t */\n+\n+\trte_crypto_param e;\n+\t/**< e - Public key exponent\n+\t * Public key exponent used for RSA public key operations in Octet-\n+\t * string network byte order format.\n+\t */\n+\n+\tenum rte_crypto_rsa_priv_key_type key_type;\n+\n+\t__extension__\n+\tunion {\n+\t\t\trte_crypto_param d;\n+\t\t\t/**< d - Private key exponent\n+\t\t\t * Private key exponent used for RSA\n+\t\t\t * private key operations in\n+\t\t\t * Octet-string  network byte order format.\n+\t\t\t */\n+\n+\t\t\tstruct rte_crypto_rsa_priv_key_qt qt;\n+\t\t\t/**< qt - Private key in quintuple format */\n+\t};\n+};\n+\n+/**\n+ * Asymmetric Modular exponentiation transform data\n+ *\n+ * Structure describing modular exponentation xform param\n+ *\n+ */\n+struct rte_crypto_modex_xform {\n+\trte_crypto_param modulus;\n+\t/**< modulus\n+\t * Prime modulus of the modexp transform operation in octet-string\n+\t * network byte order format.\n+\t */\n+\n+\trte_crypto_param exponent;\n+\t/**< exponent\n+\t * Private exponent of the modexp transform operation in\n+\t * octet-string network byte order format.\n+\t */\n+};\n+\n+/**\n+ * Asymmetric modular inverse transform operation\n+ *\n+ * Structure describing modulus inverse xform params\n+ *\n+ */\n+struct rte_crypto_modinv_xform {\n+\trte_crypto_param modulus;\n+\t/**<\n+\t * Pointer to the prime modulus data for modular\n+\t * inverse operation in octet-string network byte\n+\t * order format.\n+\t */\n+};\n+\n+/**\n+ * Asymmetric DH transform data\n+ *\n+ * Structure describing deffie-hellman xform params\n+ *\n+ */\n+struct rte_crypto_dh_xform {\n+\tenum rte_crypto_asym_op_type type;\n+\t/**< Setup xform for key generate or shared secret compute */\n+\n+\trte_crypto_param p;\n+\t/**< p : Prime modulus data\n+\t * DH prime modulous data in octet-string network byte order format.\n+\t *\n+\t */\n+\n+\trte_crypto_param g;\n+\t/**< g : Generator\n+\t * DH group generator data in octet-string network byte order\n+\t * format.\n+\t *\n+\t */\n+};\n+\n+/**\n+ * Asymmetric Digital Signature transform operation\n+ *\n+ * Structure describing DSA xform params\n+ *\n+ */\n+struct rte_crypto_dsa_xform {\n+\trte_crypto_param p;\n+\t/**< p - Prime modulus\n+\t * Prime modulus data for DSA operation in Octet-string network byte\n+\t * order format.\n+\t */\n+\trte_crypto_param q;\n+\t/**< q : Order of the subgroup.\n+\t * Order of the subgroup data in Octet-string network byte order\n+\t * format.\n+\t * (p-1) % q = 0\n+\t */\n+\trte_crypto_param g;\n+\t/**< g: Generator of the subgroup\n+\t * Generator  data in Octet-string network byte order format.\n+\t */\n+\trte_crypto_param x;\n+\t/**< x: Private key of the signer in octet-string network\n+\t * byte order format.\n+\t * Used when app has pre-defined private key.\n+\t * Valid only when xform chain is DSA ONLY.\n+\t * if xform chain is DH private key generate + DSA, then DSA sign\n+\t * compute will use internally generated key.\n+\t */\n+};\n+\n+/**\n+ * Operations params for modular operations:\n+ * exponentiation and invert\n+ *\n+ */\n+struct rte_crypto_mod_op_param {\n+\trte_crypto_param base;\n+\t/**<\n+\t * Pointer to base of modular exponentiation/inversion data in\n+\t * Octet-string network byte order format.\n+\t */\n+};\n+\n+/**\n+ * Asymmetric crypto transform data\n+ *\n+ * Structure describing asym xforms.\n+ */\n+struct rte_crypto_asym_xform {\n+\tstruct rte_crypto_asym_xform *next;\n+\t/**< Pointer to next xform to set up xform chain.*/\n+\tenum rte_crypto_asym_xform_type xform_type;\n+\t/**< Asymmetric crypto transform */\n+\n+\t__extension__\n+\tunion {\n+\t\tstruct rte_crypto_rsa_xform rsa;\n+\t\t/**< RSA xform parameters */\n+\n+\t\tstruct rte_crypto_modex_xform modex;\n+\t\t/**< Modular Exponentiation xform parameters */\n+\n+\t\tstruct rte_crypto_modinv_xform modinv;\n+\t\t/**< Modulus Inverse xform parameters */\n+\n+\t\tstruct rte_crypto_dh_xform dh;\n+\t\t/**< DH xform parameters */\n+\n+\t\tstruct rte_crypto_dsa_xform dsa;\n+\t\t/**< DSA xform parameters */\n+\t};\n+};\n+\n+struct rte_cryptodev_asym_session;\n+\n+/**\n+ * RSA operation params\n+ *\n+ */\n+struct rte_crypto_rsa_op_param {\n+\tenum rte_crypto_asym_op_type op_type;\n+\t/**< Type of RSA operation for transform */;\n+\n+\trte_crypto_param message;\n+\t/**<\n+\t * Pointer to data\n+\t * - to be encrypted for RSA public encrypt.\n+\t * - to be decrypted for RSA private decrypt.\n+\t * - to be signed for RSA sign generation.\n+\t * - to be authenticated for RSA sign verification.\n+\t */\n+\n+\trte_crypto_param sign;\n+\t/**<\n+\t * Pointer to RSA signature data. If operation is RSA\n+\t * sign @ref RTE_CRYPTO_ASYM_OP_SIGN, buffer will be\n+\t * over-written with generated signature.\n+\t *\n+\t * Length of the signature data will be equal to the\n+\t * RSA prime modulus length.\n+\t */\n+\n+\tenum rte_crypto_rsa_padding_type pad;\n+\t/**< RSA padding scheme to be used for transform */\n+\n+\tenum rte_crypto_auth_algorithm md;\n+\t/**< Hash algorithm to be used for data hash if padding\n+\t * scheme is either OAEP or PSS. Valid hash algorithms\n+\t * are:\n+\t * MD5, SHA1, SHA224, SHA256, SHA384, SHA512\n+\t */\n+\n+\tenum rte_crypto_auth_algorithm mgf1md;\n+\t/**<\n+\t * Hash algorithm to be used for mask generation if\n+\t * padding scheme is either OAEP or PSS. If padding\n+\t * scheme is unspecified data hash algorithm is used\n+\t * for mask generation. Valid hash algorithms are:\n+\t * MD5, SHA1, SHA224, SHA256, SHA384, SHA512\n+\t */\n+};\n+\n+/**\n+ * Deffie-Hellman Operations params.\n+ * @note:\n+ */\n+struct rte_crypto_dh_op_param {\n+\trte_crypto_param pub_key;\n+\t/**<\n+\t * Output generated public key when xform type is\n+\t * DH PUB_KEY_GENERATION.\n+\t * Input peer public key when xform type is DH\n+\t * SHARED_SECRET_COMPUTATION\n+\t * pub_key is in octet-string network byte order format.\n+\t *\n+\t */\n+\n+\trte_crypto_param priv_key;\n+\t/**<\n+\t * Output generated private key if xform type is\n+\t * DH PRIVATE_KEY_GENERATION\n+\t * Input when xform type is DH SHARED_SECRET_COMPUTATION.\n+\t * priv_key is in octet-string network byte order format.\n+\t *\n+\t */\n+\n+\trte_crypto_param shared_secret;\n+\t/**<\n+\t * Output with calculated shared secret\n+\t * when dh xform set up with op type = SHARED_SECRET_COMPUTATION.\n+\t * shared_secret is an octet-string network byte order format.\n+\t *\n+\t */\n+};\n+\n+/**\n+ * DSA Operations params\n+ *\n+ */\n+struct rte_crypto_dsa_op_param {\n+\tenum rte_crypto_asym_op_type op_type;\n+\t/**< Signature Generation or Verification */\n+\trte_crypto_param message;\n+\t/**< input message to be signed or verified */\n+\trte_crypto_param r;\n+\t/**< dsa sign component 'r' value\n+\t *\n+\t * output if op_type = sign generate,\n+\t * input if op_type = sign verify\n+\t */\n+\trte_crypto_param s;\n+\t/**< dsa sign component 's' value\n+\t *\n+\t * output if op_type = sign generate,\n+\t * input if op_type = sign verify\n+\t */\n+\trte_crypto_param y;\n+\t/**< y : Public key of the signer.\n+\t * Public key data of the signer in Octet-string network byte order\n+\t * format.\n+\t * y = g^x mod p\n+\t */\n+};\n+\n+/**\n+ * Asymmetric Cryptographic Operation.\n+ *\n+ * Structure describing asymmetric crypto operation params.\n+ *\n+ */\n+struct rte_crypto_asym_op {\n+\tstruct rte_cryptodev_asym_session *session;\n+\t/**< Handle for the initialised session context */\n+\n+\t__extension__\n+\tunion {\n+\t\tstruct rte_crypto_rsa_op_param rsa;\n+\t\tstruct rte_crypto_mod_op_param modex;\n+\t\tstruct rte_crypto_mod_op_param modinv;\n+\t\tstruct rte_crypto_dh_op_param dh;\n+\t\tstruct rte_crypto_dsa_op_param dsa;\n+\t};\n+} __rte_cache_aligned;\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* _RTE_CRYPTO_ASYM_H_ */\n",
    "prefixes": [
        "v5",
        "1/4"
    ]
}