From patchwork Tue Jul 3 15:24:25 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shally Verma X-Patchwork-Id: 42160 X-Patchwork-Delegate: pablo.de.lara.guarch@intel.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 506B61BF60; Tue, 3 Jul 2018 17:25:27 +0200 (CEST) Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0077.outbound.protection.outlook.com [104.47.36.77]) by dpdk.org (Postfix) with ESMTP id 04A331BF5B for ; Tue, 3 Jul 2018 17:25:24 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xKw+Z9TcD6OJLDsT6R4225IOk/z+nrfPAykknR+VYNQ=; b=endhRjKfW7SyvMLOKLSkV9/X0cCtoJlwKMvExyPenGcjchmg3p3zzCF2IdO8H+mSyjFmDVUKB2ZYCz2dNTsHJGEpIlrm3fCmPF3Imfpnbj55PhnJSKvqEMCarLUUx7CC/4P+/SoB0J/zwUTW0y1ba1PsmirRqjBoEPTbmAd9Ad8= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; Received: from hyd1sverma-dt.caveonetworks.com (115.113.156.2) by DM5PR0701MB3640.namprd07.prod.outlook.com (2603:10b6:4:7e::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.906.24; Tue, 3 Jul 2018 15:25:21 +0000 From: Shally Verma To: pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, pathreya@caviumnetworks.com, nmurthy@caviumnetworks.com, Ashish Gupta , Sunila Sahu , Umesh Kartha Date: Tue, 3 Jul 2018 20:54:25 +0530 Message-Id: <1530631466-26427-4-git-send-email-shally.verma@caviumnetworks.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1530631466-26427-1-git-send-email-shally.verma@caviumnetworks.com> References: <1530631466-26427-1-git-send-email-shally.verma@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: PN1PR0101CA0014.INDPRD01.PROD.OUTLOOK.COM (2603:1096:c00:e::24) To DM5PR0701MB3640.namprd07.prod.outlook.com (2603:10b6:4:7e::12) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ff10f81a-d532-4fc6-e4ef-08d5e0f93246 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(5600053)(711020)(2017052603328)(7153060)(7193020); SRVR:DM5PR0701MB3640; X-Microsoft-Exchange-Diagnostics: 1; DM5PR0701MB3640; 3:c2wmadbc0mdRKekLw+jUl7tzLoBph7IqS1Rr4JZFcFPbB29oxjb0yAYD9Fg2jOH1I6TEzzRIJy4yNWfB4sXY1atldu2xeakQEYjRHjGjVfSN2MKurnCpNc7QdK4YaQo/BxmnMo+hKSOcJARNj+WsHQZYxAozNMgbRZ0uLxFwFAQSW0Oz5tmZ7YkJ/mhRmDl+DVgaI0wVolv+0CwgCkzXDSrZKacKpAAEArTf7IqlVwdoQQFJonDsJUgLGx5e3Qqa; 25:aOP3k2GTMBrGaVY8PF9jHW43U8AZobpqQ62NGENj7+7C3TN2SDbFkkmoy3YWf+6U2bka+Vn7XkoGcjh5qNap2KvD4g8St06EAV0K/lQZRZzFYv3hBvRmAXgSvHIlTaWVS1RtsILcr6H22zFSFAmySv+Icnjni98PWNjROjIOlzi1j0pPhMZzXVcDXHpL7bhXgDYzXLrt8eV9JYUgyJbvbKx3p34iLOmcSH5np2LANOcM93LQptQYI55HIw1N3HWSyPQrWe7oZkUm/w1yA3rxgrXipexf9Yqy5hl0mC6TebxjxtJn2IxNbcb1TTderG7CAItqkXbLn78cUCcemZFK+Q==; 31:X9ptpFqUc2PLHDBH5zl8kiazpCV7LIlE6bEtE6eIVjPINMTMmDQh2WUzp+XUO9r0Ldk4NwHnhjDxI8foDNDWYW7C4FlydspC3BtFIbJ33CbZAzj56dC5tSZctp9CoZnZqPW8MB1NBmdcOiQHrOUDQPRMTPZqb42ctIAV2fpsRT6/nvI6gfXi9WARhMvKCvjBViS99CbzBQB0ijt83DUPX39l0IrVljrhsyXgKhVftBA= X-MS-TrafficTypeDiagnostic: DM5PR0701MB3640: X-Microsoft-Exchange-Diagnostics: 1; DM5PR0701MB3640; 20:zC66eO5TnvECYy2JDlRKCQvtRsAnGCpWTv+DOJyXWrJapPpPrL44ewUn6AM9GP4dGmJzK4ekmwh2+WRwwDNrEoFJwDSzKXYv+qx4t4sowJGdVzqp5xCarFo13iWdUDEHVNywk7YmVMSZ6kXMc8/uvjmNRWGf/1oKeRpATFPpU6SBU0BGYw4FSY64y+cYMGhktSkQtgNtSh5P6uzRax2AtsE/fYQTgR4ezT9vVo+AFnKFOkS0nsZrJou3xFgNpKUgvwTzVfgvJPQkKqdUxphvZ4Y2Pj5fjK0HYf4o8ptz3w/um3/KHzm538ayBnSnao3dpe9DPhmvjTlY/E+xbfMK7p1ryaUFQh4+dw8e/Mhu1WPwG7BM2LIIzBd8g2JhNPQjSo8klG7RoTfoWVQhSjGKj4FtV2ssMQZHeHDT2W6eQcaIjoyyBA8gFyaiVuh6qu8TIQZrQ25P7V4C+25rXN8BHrLeH4X9FTeTDnMe3l4bySmK84AJhcHNa6glSmsx1gunhmjSnNtFCH3CRXEy0q7pGxP3GnGHcRVxBFc8fECfmDGNZRgl8YBc1F8x2x3sG1tjsL/gNCOP0WPJEISvakSy14YZvDi/hVTn4nYPkpoes0k=; 4:wByLIfRRcDPyA+lxuk8k2mMhH2o5TauDAfAgI1YFfEZVesoR269dnxWRYrK3lh4qDA9pn1RyOoW6NKBuCZmd+xg9HhRIZOwDOzU3OcqPpaA8wOg2CcdKJn7J71YEu18OTY4QwTsWNNA6BYw2KGxCYAOolnhJlpLBJgho2k9Ijq+MljAI40P9wVmsgIBSVoDyrj78h8HWl9lWRniETOcwL2o9OP1xkKOuHGgClE6lI7U6+un0FD1nZ+p9+6/YFzFzQ4fmJR55Uy6vEyOTL7aAbQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(10201501046)(3231254)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123558120)(20161123564045)(6072148)(201708071742011)(7699016); SRVR:DM5PR0701MB3640; BCL:0; PCL:0; RULEID:; SRVR:DM5PR0701MB3640; X-Forefront-PRVS: 0722981D2A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(136003)(346002)(376002)(39860400002)(396003)(366004)(199004)(189003)(50226002)(53936002)(55236004)(316002)(6506007)(107886003)(54906003)(42882007)(305945005)(386003)(68736007)(51416003)(575784001)(7736002)(4326008)(72206003)(8676002)(6486002)(478600001)(25786009)(81156014)(81166006)(76176011)(2361001)(6512007)(97736004)(69596002)(6116002)(16526019)(3846002)(186003)(2351001)(44832011)(5660300001)(6916009)(53416004)(8936002)(66066001)(47776003)(476003)(106356001)(16586007)(956004)(2616005)(11346002)(105586002)(2906002)(52116002)(446003)(50466002)(14444005)(26005)(48376002)(36756003)(486006); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR0701MB3640; H:hyd1sverma-dt.caveonetworks.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR0701MB3640; 23:MCtYL4W/sVMzlE1YPK+UatxfFYWBNywaEgeQuLE?= vtwsjw/22RQm2hPVeX+DvbZYtUv06Arn+qBlgB0JfZCdlEbrzgP9DQTnKXoRk20T3Hk5SlYwrc3oZoKgjE2nNXb2NIaCdRSICso91Z7EzhCjmcAfvwOffY8Z3ehHsyEReDypnSAcIp9C2/Rj/QElkAqStRpv+RKGL1BlGcVririaxqu7grXu6jtgKkD4KO/Mz3qicMS7s8mI2uJ51GVCamUyIqdHQkoFjKAHowi+2WVxuw6Yjy2prXpr+7WF6FgZyuqI7ycnvH65TA1N96aBgSlK8N8uuqEC0fhsALgOJuqVvfIS5IB1iXVyZpambGS+BXr8SyqO6OpCNljvPRqhZQm66EvnaunSLIY0sL06w5WRmlsF8bJcJrUWG+GGC+2a9RIqnv0j50m5uSnIFsNDkLScudUKzEKLJuvna0u7CK7bVxsZQmash5xewvFiMm2ZKxi09mu2Cm5U0EeL9f58YCPdeftpZ9bTNbYBUQ9bx3sAwvRxvQ9vhSovqYBJk0cQi0vq3TsAjaY4Eo6DCG9rOyTiB++0/LBQCM7PxWx8INU5n8uhWU0wDtFHyQDjj71F2xraFH3G6lkt9ttTpnu/4zSfEiV7vRdZ2e0aiuKIyEnUbpZb0ZSMd/v7Agc1G61C1XXIYnrGj0mT36EcF4/M/pK8UqDUJusGouAFKgX0tLXYROB24/MkPc4flHvwDDEEA73IFZ/5BZRnEk+9QxSMXpcUEXKaC4BhTGxj/XY3DOX749PN4X9Wen59LsnCRxXR398TZiQ7tswfrEHgFsnKeXsQAoUzvtPUucl8SKA39kKcadfMMJ8sQgoqPdvwknWD55rypeRZ6AG+YqP/htN8XfHExpPeI4uJMIPoDv8IgrVLrSQHwwtF2k9LVEh4QaOjvEvzSo3SCooohmouuBfxL739LcBSHCfC3WnWmmCa9YOifKPfvnlzDVB7KF/k7bcM7a35P4vQMz1UBKWzuyjbZdOhNaf1RWQXvv0/K0yCDDvQ8tlN9frtICw5R+yyc4fauEdWZ9ZMw+LHXYGSBeQW59rbrQGEDOnuelI5OscpN9pizrWsLnT/ikdH5UsMxNmDvZL6dkGNismvq++QVou7nwcL8rA96gNX27YsX2x4aueM4JO7kuqrfn1+FEhEhMYGAxbdsGXP5UJlJLqlVkzrqIbde+eYhTMM/K2xb4zAOmpq6OCee+iK+pbJWNe0YhomzzHFYbheVuWKNSodFURTjLrXV0lRsNZ8puKh2fwx+cGVHnpqEvf2YWa5Cz+F+f4sqt79IXCFzvEiJutVtdfFVXxPgYoKHoJEHIQ93X8+utgvFo8SlPWBu6/s8rFWYxdmm5FA= X-Microsoft-Antispam-Message-Info: y2qT7XzgsctMF84d8GPISroTMgg5KrQEWYPaH2jA9RsyOF4YL+DDBVJUJ88hziUnXKaCjt5Mc4Ik47x5qaw3fWePc1PBr6zfSh8yBTQGtv3IAD4UfiM/wlRaZJf1D1hGsYUV8dsxUw/dSrj2Yyw70JTAVfXZw13v+3fkzbx3C4WIXThKIxLGsAkbSffXO04Fg+Kdqf5K24kyx+Ntpt8SBqBQjEDhoOCi/DRYGMA4oHDiau5AOafVKa3BQyl/q7tsVpdznQakaBObJKeg59X46ITVWJLKCSK3jHS5L5ecPdpGUAmwyGz08nsp/IwBXcO1w6poKGgE481fc2vNMtSnrTp4Wl7iN/1uA5WFzmCV+oA= X-Microsoft-Exchange-Diagnostics: 1; DM5PR0701MB3640; 6:/a6OhbvFu6ouzqZyM1cFvJdBmVNJvgfYUNlsQUJyPDRz0wUcnoW7pA4QUrCM0Xk3FRvLYq1/kbqDQgawZseqkbZBcmr/+Jb72nayWl/fAWqJ157AGg7jrBnwv6yyn1pYumTzPv5XipE0rgnZTeDKC5yOo8eRfIe8YWwINE/J6br2Vyzod6GSU0Zi43S478mOW3Eef3jYah1zJUPbl+SCS4I78Jz0meZ82DZfYPGE2ECDwGpl/+ZxOC27ph6XTx6TMjQ1dQXcC5Pf8msdrkEMYtyMTAc1wssCXFnvPob3Djd1jpil3wX4mJqylwsJHuQDNdNh7uY/vRz7RBBLKRmFA4TKF295BdxmFJPJdT91RJjQogSa9PrrVF3PqKcLjLFvJIWy5gUfbHaMfBDCsCLV/ex+8GG1rCup4DUUAj8Btrad4+J7BpcwDLAwomLm3fCr2s1MowVseh3zOSAZ/pe59A==; 5:fyiY9XWJfXNNqGsyoF4irMO0XBJC7v9QxOywmnBMoXVJvfjC8opsxjwDolS7FAXzTQvbOLQyrcEa9DClaHWskYHn2QhtFO7gqEc7Ae7UymHRGSeGJmuXl/oa7mLkrvjL+mT5HNgl8H7CJZmZn5QgVfLpfuYmL3kd57RhZyXiymE=; 24:VwSHAZsuX8NVii6PwlrK1viWuukwstf07B+3M0HYAEi/A75Ms7WnPLZtFY5MhTs81pNbCKAmzUszV3bYLngCt33BFX4DoRIE73BRYBV8Am8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM5PR0701MB3640; 7:xoo3j7LCjQCj7DIAm5IxFTApa62kq+KkI1alOrczUnVCg5PsTtGxblxjkumSRCi3YjmitCDz+scU7SBOlBYXCKYkbRXemN/KXEiDlaljuLQkqE+aaZAJ25BOv7BHxAhb+hdhmBD+zMHrP3qcVJno+gq+Z3rptV260K/BhmKT2vGetW6rpGcKJfabDqcvQ+JbLgMXPGPszJvtKFKtSBGrfZuKzXoTox3GS6z+au3NCKTp9i2uyJpDoACw39+exjKm X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jul 2018 15:25:21.3921 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ff10f81a-d532-4fc6-e4ef-08d5e0f93246 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR0701MB3640 Subject: [dpdk-dev] [PATCH v4 3/4] lib/cryptodev: add asymmetric crypto capability in cryptodev X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Ashish Gupta Extend cryptodev with asymmetric capability APIs and definitions. Signed-off-by: Shally Verma Signed-off-by: Sunila Sahu Signed-off-by: Ashish Gupta Signed-off-by: Umesh Kartha --- lib/librte_cryptodev/rte_cryptodev.c | 76 ++++++++++++++++++ lib/librte_cryptodev/rte_cryptodev.h | 103 ++++++++++++++++++++++++- lib/librte_cryptodev/rte_cryptodev_version.map | 5 ++ 3 files changed, 183 insertions(+), 1 deletion(-) diff --git a/lib/librte_cryptodev/rte_cryptodev.c b/lib/librte_cryptodev/rte_cryptodev.c index 47fc2e5..2e4b128 100644 --- a/lib/librte_cryptodev/rte_cryptodev.c +++ b/lib/librte_cryptodev/rte_cryptodev.c @@ -242,6 +242,24 @@ rte_cryptodev_get_aead_algo_enum(enum rte_crypto_aead_algorithm *algo_enum, return -1; } +int __rte_experimental +rte_cryptodev_asym_get_xform_enum(enum rte_crypto_asym_xform_type *xform_enum, + const char *xform_string) +{ + unsigned int i; + + for (i = 1; i < RTE_DIM(rte_crypto_asym_xform_strings); i++) { + if (strcmp(xform_string, + rte_crypto_asym_xform_strings[i]) == 0) { + *xform_enum = (enum rte_crypto_asym_xform_type) i; + return 0; + } + } + + /* Invalid string */ + return -1; +} + /** * The crypto auth operation strings identifiers. * It could be used in application command line. @@ -312,6 +330,28 @@ param_range_check(uint16_t size, const struct rte_crypto_param_range *range) return -1; } +const struct rte_cryptodev_asymmetric_xform_capability * __rte_experimental +rte_cryptodev_asym_capability_get(uint8_t dev_id, + const struct rte_cryptodev_asym_capability_idx *idx) +{ + const struct rte_cryptodev_capabilities *capability; + struct rte_cryptodev_info dev_info; + unsigned int i = 0; + + memset(&dev_info, 0, sizeof(struct rte_cryptodev_info)); + rte_cryptodev_info_get(dev_id, &dev_info); + + while ((capability = &dev_info.capabilities[i++])->op != + RTE_CRYPTO_OP_TYPE_UNDEFINED) { + if (capability->op != RTE_CRYPTO_OP_TYPE_ASYMMETRIC) + continue; + + if (capability->asym.xform_capa.xform_type == idx->type) + return &capability->asym.xform_capa; + } + return NULL; +}; + int rte_cryptodev_sym_capability_check_cipher( const struct rte_cryptodev_symmetric_capability *capability, @@ -363,6 +403,42 @@ rte_cryptodev_sym_capability_check_aead( return 0; } +int __rte_experimental +rte_cryptodev_asym_xform_capability_check_optype( + const struct rte_cryptodev_asymmetric_xform_capability *capability, + enum rte_crypto_asym_op_type op_type) +{ + if (capability->op_types & (1 << op_type)) + return 1; + + return 0; +} + +int __rte_experimental +rte_cryptodev_asym_xform_capability_check_modlen( + const struct rte_cryptodev_asymmetric_xform_capability *capability, + uint16_t modlen) +{ + /* no need to check for limits, if min or max = 0 */ + if (capability->modlen.min != 0) { + if (modlen < capability->modlen.min) + return -1; + } + + if (capability->modlen.max != 0) { + if (modlen > capability->modlen.max) + return -1; + } + + /* in any case, check if given modlen is module increment */ + if (capability->modlen.increment != 0) { + if (modlen % (capability->modlen.increment)) + return -1; + } + + return 0; +} + const char * rte_cryptodev_get_feature_name(uint64_t flag) diff --git a/lib/librte_cryptodev/rte_cryptodev.h b/lib/librte_cryptodev/rte_cryptodev.h index 89dcd40..ec87a77 100644 --- a/lib/librte_cryptodev/rte_cryptodev.h +++ b/lib/librte_cryptodev/rte_cryptodev.h @@ -143,6 +143,35 @@ struct rte_cryptodev_symmetric_capability { }; }; +/** + * Asymmetric Xform Crypto Capability + * + */ +struct rte_cryptodev_asymmetric_xform_capability { + enum rte_crypto_asym_xform_type xform_type; + /**< Transform type: RSA/MODEXP/DH/DSA/MODINV */ + + uint32_t op_types; + /**< bitmask for supported rte_crypto_asym_op_type */ + + __extension__ + union { + struct rte_crypto_param_range modlen; + /**< Range of modulus length supported by modulus based xform. + * Value 0 mean implementation default + */ + }; +}; + +/** + * Asymmetric Crypto Capability + * + */ +struct rte_cryptodev_asymmetric_capability { + struct rte_cryptodev_asymmetric_xform_capability xform_capa; +}; + + /** Structure used to capture a capability of a crypto device */ struct rte_cryptodev_capabilities { enum rte_crypto_op_type op; @@ -152,6 +181,8 @@ struct rte_cryptodev_capabilities { union { struct rte_cryptodev_symmetric_capability sym; /**< Symmetric operation capability parameters */ + struct rte_cryptodev_asymmetric_capability asym; + /**< Asymmetric operation capability parameters */ }; }; @@ -166,7 +197,17 @@ struct rte_cryptodev_sym_capability_idx { }; /** - * Provide capabilities available for defined device and algorithm + * Structure used to describe asymmetric crypto xforms + * Each xform maps to one asym algorithm. + * + */ +struct rte_cryptodev_asym_capability_idx { + enum rte_crypto_asym_xform_type type; + /**< Asymmetric xform (algo) type */ +}; + +/** + * Provide capabilities available for defined device and algorithm * * @param dev_id The identifier of the device. * @param idx Description of crypto algorithms. @@ -180,6 +221,20 @@ rte_cryptodev_sym_capability_get(uint8_t dev_id, const struct rte_cryptodev_sym_capability_idx *idx); /** + * Provide capabilities available for defined device and algorithm + * + * @param dev_id The identifier of the device. + * @param algo Description of crypto algorithms. + * + * @return + * - Return description of the asymmetric crypto capability if exist. + * - Return NULL if the capability not exist. + */ +const struct rte_cryptodev_asymmetric_xform_capability * __rte_experimental +rte_cryptodev_asym_capability_get(uint8_t dev_id, + const struct rte_cryptodev_asym_capability_idx *idx); + +/** * Check if key size and initial vector are supported * in crypto cipher capability * @@ -235,6 +290,36 @@ rte_cryptodev_sym_capability_check_aead( uint16_t iv_size); /** + * Check if op type is supported + * + * @param capability Description of the asymmetric crypto capability. + * @param op_type op type + * + * @return + * - Return 1 if the op type is supported + * - Return 0 if unsupported + */ +int __rte_experimental +rte_cryptodev_asym_xform_capability_check_optype( + const struct rte_cryptodev_asymmetric_xform_capability *capability, + enum rte_crypto_asym_op_type op_type); + +/** + * Check if modulus length is in supported range + * + * @param capability Description of the asymmetric crypto capability. + * @param modlen modulus length. + * + * @return + * - Return 0 if the parameters are in range of the capability. + * - Return -1 if the parameters are out of range of the capability. + */ +int __rte_experimental +rte_cryptodev_asym_xform_capability_check_modlen( + const struct rte_cryptodev_asymmetric_xform_capability *capability, + uint16_t modlen); + +/** * Provide the cipher algorithm enum, given an algorithm string * * @param algo_enum A pointer to the cipher algorithm @@ -279,6 +364,22 @@ int rte_cryptodev_get_aead_algo_enum(enum rte_crypto_aead_algorithm *algo_enum, const char *algo_string); +/** + * Provide the Asymmetric xform enum, given an xform string + * + * @param xform_enum A pointer to the xform type + * enum to be filled + * @param xform_string xform string + * + * @return + * - Return -1 if string is not valid + * - Return 0 if the string is valid + */ +int __rte_experimental +rte_cryptodev_asym_get_xform_enum(enum rte_crypto_asym_xform_type *xform_enum, + const char *xform_string); + + /** Macro used at end of crypto PMD list */ #define RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST() \ { RTE_CRYPTO_OP_TYPE_UNDEFINED } diff --git a/lib/librte_cryptodev/rte_cryptodev_version.map b/lib/librte_cryptodev/rte_cryptodev_version.map index 9cdc0ee..aac1498 100644 --- a/lib/librte_cryptodev/rte_cryptodev_version.map +++ b/lib/librte_cryptodev/rte_cryptodev_version.map @@ -97,14 +97,19 @@ DPDK_18.05 { EXPERIMENTAL { global: + rte_cryptodev_asym_capability_get; rte_cryptodev_asym_get_header_session_size; rte_cryptodev_asym_get_private_session_size; + rte_cryptodev_asym_get_xform_enum; rte_cryptodev_asym_session_clear; rte_cryptodev_asym_session_create; rte_cryptodev_asym_session_free; rte_cryptodev_asym_session_get_app_private_data; rte_cryptodev_asym_session_init; rte_cryptodev_asym_session_set_private_data; + rte_cryptodev_asym_xform_capability_check_optype; rte_cryptodev_sym_session_get_private_data; rte_cryptodev_sym_session_set_private_data; + rte_crypto_asym_op_strings; + rte_crypto_asym_xform_strings; };