From patchwork Tue Feb 28 08:54:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sunyang Wu X-Patchwork-Id: 124564 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id BCB8C400C9; Tue, 28 Feb 2023 09:54:27 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A3FAD40EE4; Tue, 28 Feb 2023 09:54:27 +0100 (CET) Received: from APC01-SG2-obe.outbound.protection.outlook.com (mail-sgaapc01on2052.outbound.protection.outlook.com [40.107.215.52]) by mails.dpdk.org (Postfix) with ESMTP id 9E8334021F for ; Tue, 28 Feb 2023 09:54:25 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jGhSu71T7sgp0eYS3vAxGOopN+s8sYiCwtQVYz9ezm3HFa6Y9VfMhA+u1bAuEjhMgIjRgkWdRvbWFG4YL2Obu4QMVDvrbm4fUrJZZdWG3ZIFFeH31/INhDZPo5WYimSmP1fqf8/t6dNmkj1Uml7yMpSA4ncpVTXGzD5g52hmyaci/Gh7qAXovjES8wZ8uBkeCuWiGvMKziTAu5jujNOUL3SQ8/smRBOid3HAz8ODQh6X+181FNoRXknL9gveG1rny7yu/EUA5Vxn0zLug8ffNVgxCg0wn/B53XlxY6kvMtiUVJjrbCqqwpHqN1TEA/ZzQrKkya/L46F+WP4Lzfy9dw== 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=aVWjFdBhXWSY3KXylliB4qdQ9HUQ85xkZ8ICROhWWio=; b=CrYewkfg/lUb7XAWuNpacMS010x2FJ6lWE7zjm5yMIyIAZ951cdYEwd9BA6D4F7NTnzYeHeAOEgAQyvUNeGIM+uTOUUt6IOxGkRBhFx9aVRFb28GRA1Mj3OnOnlKRwWD6t1xCFuZFrH3D3Uqu7tZcVxDPZUFlxxL9Rfda9tcHM3kV5WV8mLD3hsK7yswY35umLByUwdxy0eNHBhg3KSta6Kzp2Q69Vq6BqA6MSrBYrVclzoJODsXAU7QJq13OfxDH8dOK4qUWi2dzFmqNG4v0aLDkeFKmOrDPy+yoheQHCDkUhUNTgZpE4owzv3fooXu7WUEn1hDCPvSNAnBK5PVsA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=jaguarmicro.com; dmarc=pass action=none header.from=jaguarmicro.com; dkim=pass header.d=jaguarmicro.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jaguarmicro.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aVWjFdBhXWSY3KXylliB4qdQ9HUQ85xkZ8ICROhWWio=; b=i9ibWrYHo0PwQ4Yv1i28u9zOp7mLXJ9B4ZrSipTDoQusDeLz2Wt9oUsvpXaA5OaNOY4ksBA7ta/0HScznZHeJPpt6JR9bIVJrhrikejuHA91pnjoq56Fsn4hjkGPZVocSr1Jzb2aCP76PNYPCI54sdgsbo1KpkkbVJBfa8urUA7bG+BTolK++9VUjQ0SSftOwZGISTBwfDjgKkyBkDOGQ1ihb+BcFuQ23IPXkWuXrBxo3hwjpKnaZKfXKbhBCYPSIFxw2Fnw9TZIA6gVE4mtH5zXapA+Lee9SU2/CKoGKlT2GA0qgBhRZnlFG0/+rsEiZ5L985TBHd+M+TpNhxPkvg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=jaguarmicro.com; Received: from KL1PR0601MB5567.apcprd06.prod.outlook.com (2603:1096:820:c5::14) by TY0PR06MB5377.apcprd06.prod.outlook.com (2603:1096:400:214::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.16; Tue, 28 Feb 2023 08:54:22 +0000 Received: from KL1PR0601MB5567.apcprd06.prod.outlook.com ([fe80::ff57:6e6:7820:a9fc]) by KL1PR0601MB5567.apcprd06.prod.outlook.com ([fe80::ff57:6e6:7820:a9fc%2]) with mapi id 15.20.6156.017; Tue, 28 Feb 2023 08:54:22 +0000 From: Sunyang Wu To: dev@dpdk.org Cc: kai.ji@intel.com Subject: [PATCH] crypto/openssl: support SM3/SM4 in openssl Date: Tue, 28 Feb 2023 16:54:10 +0800 Message-Id: <20230228085410.27972-1-sunyang.wu@jaguarmicro.com> X-Mailer: git-send-email 2.19.0.rc0.windows.1 X-ClientProxiedBy: SGAP274CA0008.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:b6::20) To KL1PR0601MB5567.apcprd06.prod.outlook.com (2603:1096:820:c5::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR0601MB5567:EE_|TY0PR06MB5377:EE_ X-MS-Office365-Filtering-Correlation-Id: 36562125-a7ec-440d-09f4-08db1969624f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: SCjkeVV250jMNPXNelkYFUA59r0vqKaaFtikllLFCgxDP/acRHSRyzNPhVA2z6tPZX6aSTKX8AYA4z1wiOcupmgcAi0EVwXBaJoACpBE/j8lv9Au1oXW5gFrluW9lT47OSMbyZRqWUpoKean5Kcg55l/Fjr9fMDxr8Szd4U/Fx2S7lxtj5twfsGXcKqhQrph21u130OuRybWLqAAsEJ1LpGCoVvfv7ja5fZ95U7/ktGnE86OC6pUA1v8NKZDbjBq43KQZ54QyXvjbwrYWgckshFot1CWFePhGR8EyuBEyaqj91PNmExxv5Hp7HTePX9lmdJaRjNuklnEqx+Lqt4/nkocWpETQScIHD5+SZwiMQ+tSa/Go3BQgTGs7FGKO4mZ3WSddnimIkkLz7Hj6GLUKFzqohxeiv5Ozc0WTaNE57WQ75sHR35btxm4lM/KXKzKqtYcr26Wa1ciBI8GYcGtzm579msDzQc1U0nxj+nyuLrgxZKX7G209T6117z8Yy5F5vTXFL5AStt2NMl1cxa+Ie5vl26pMtSnCYPvRQBedD6WkSj3KhEaMSCOGNmdJnxepvUXckT2FybjDtInt+awf1378KQeaBjP53va44CdGktTkAu9wkhWbk1PBup7h6/DlEBguxiGvXmbQCmhRgEAnnq6CpNcWDyEF11dpRVDABZLHqDXHJ5/AfmMOJySHyLkmUizeM0GpAS45Aw2rCvdXQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR0601MB5567.apcprd06.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(396003)(39840400004)(366004)(346002)(136003)(376002)(451199018)(44832011)(36756003)(41300700001)(5660300002)(86362001)(186003)(2616005)(478600001)(316002)(6506007)(1076003)(6486002)(6666004)(26005)(52116002)(6512007)(2906002)(38350700002)(66556008)(38100700002)(8676002)(6916009)(4326008)(66946007)(83380400001)(66476007)(8936002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: GnIZLKLs1bkHx8LY2hepEYvASNhlyE836/iu4YkebzMAXm03iflmvQouxG9d8rTbB85Si5nDlrSIHnHH4WiCyUKxOqFpPbTQQa8S4421gsJ6/SBJA4lQHEPVGOoUUREsFe3cSgQK3TYsOqmBiqeRsqDXx8uVfZ/LsViv63NkxqWUkudKCPAAWgnWZylJGJqnHC/a5l5AGhmln+s9QZiy70SQSkxXED4LjDFPzUoI3/bB6em1gZyM38+hihFFMedAOdP8p/iGqqEMPTwLOCTdJIcrxN16fjPeTgKis743QBbVBduQnL7u/m5yFiqrrIs4oBEoLbIUC/INPRAmGreHkG4BEiorhnetTWwblbrhYJmaTehx08+ZVk0wQvhD/51Mv70mXsN4UI/OD1SDwMHvOhvD6wYJKaCt1Kv2eH6X6ciEyxAlHV0meMzKlonQDXgNKkgctYFLwXIfqz/OES7PEo8oTio/S5UIPfcEIBLjDSdzFM0zRZY0BOkRJehAvnd4D2l/FnAZ3eTDcilO42H1jPRDcmUuhY0wpkMiMhDrDkCwsYrRON+Vx8dUMrraX+1FuP8yVyI9/ZMCkQ6zOZkQyhJ06REJAbIUOQcUBomqLBKXDSWUnkv3WvKRzrj2VrWnW7VGtGuzYwLTfbTgplaZXLwryRPpE5HS7l+LvD2gg2OpCPvamnRXKYmQKMqD3dxfupFYh4gFxBSPViyldwTZ4J77BwVJbGcv53mKi2aGa0Em7iVaw1zcGq4R191MFXlGQ5lR/DXopUAOdZg2McHoNXyXd9ADNtfM5e2KvD0RiMEcUEmsKUXuLzGHjxDop2d+iwQ12s3+FWEu2ZVs9frvCqKKaUuKhKT4WV1k85IFgEPenKMNM9KPT0OKpcnzFVfAmSq+1xUVLfAPPyPtqRBBr3cFHd3DdeBBgIPJNZm1oqaSzig6qIfhEXe14B+6KHdm4Nb4hqVptbFISjSrmISfIfmRohZm1ky4N+RqT4d093bj8+ErqOqMbh5KJXmEaYIn6IefT7PcyIamC374itNfld6aP7VVT6eK6CpRFVLsoRhci0pHHYHXbbtYlbowtj43d9pa9C+8eYF2choCICigHARR4PLIR3u9lE2RNOE99Yx9TfiBCfBh4YpeGsOnJ+1pd0WNEsW9xHQQ319W8ifvO/9wvddgtpV+m3zq2KMS9ESn8jq+i5+nEpYryZy1/B1uE42mT50EORdTwOwflJrK+2zzVBV5OfMkBGPaF9T193AY9vjFl3kNvLywUrWq5u/a2ZpOVBmz6q8TrBwWxnAzufWPb0G1m+7A1AnvdzbppfwUKhGE0UUckxW3pSyK4FieMhUHb1m1Pf255tpZgMTO50tYEkJZIvkwnsDH++P4Ek1Gl05fdalxg1uk1p7QlGkjy6sjvaNHQGyMAHqj97AIEfcR0dWS9sk6NgPXxAE9THXTPBnqjJGutWpKkXwXE+ff9tUZWtzrQaOC4rxrQVA4G/sivsQrOiYeqG1b5ClCviczTtrLIPZesoN8cy+FwQw7/Mwg8fC/1u3E2KIEJIuBn8SJypt22xsth3N8uBVGyoU5RXg+6IRP/mft+VzAjESR6Ch3mGS9UrVBwS9dAoK/Jg== X-OriginatorOrg: jaguarmicro.com X-MS-Exchange-CrossTenant-Network-Message-Id: 36562125-a7ec-440d-09f4-08db1969624f X-MS-Exchange-CrossTenant-AuthSource: KL1PR0601MB5567.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2023 08:54:21.7789 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 1e45a5c2-d3e1-46b3-a0e6-c5ebf6d8ba7b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: mt7mcc6R0jCufHmdhamrsDwAlEMcL/h9L9KX9GMaTO3/8wgqc8R857zlHA/jh8r7fmpVD6V4zcS1Cw3C4rzPgrqzEaofbE96nWYmofR1Bgk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY0PR06MB5377 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 Added SM3 support in openssl, and added SM4-EBC/ SM4-CBC/SM4-CTR support in openssl. Signed-off-by: Sunyang Wu --- doc/guides/cryptodevs/features/openssl.ini | 4 + doc/guides/cryptodevs/openssl.rst | 4 + drivers/crypto/openssl/rte_openssl_pmd.c | 15 ++++ drivers/crypto/openssl/rte_openssl_pmd_ops.c | 82 ++++++++++++++++++++ 4 files changed, 105 insertions(+) diff --git a/doc/guides/cryptodevs/features/openssl.ini b/doc/guides/cryptodevs/features/openssl.ini index 4b0f9b162e..efa339da55 100644 --- a/doc/guides/cryptodevs/features/openssl.ini +++ b/doc/guides/cryptodevs/features/openssl.ini @@ -27,6 +27,9 @@ AES CTR (256) = Y 3DES CBC = Y 3DES CTR = Y DES DOCSIS BPI = Y +SM4 ECB = Y +SM4 CBC = Y +SM4 CTR = Y ; ; Supported authentication algorithms of the 'openssl' crypto driver. ; @@ -44,6 +47,7 @@ SHA384 HMAC = Y SHA512 = Y SHA512 HMAC = Y AES GMAC = Y +SM3 = Y ; ; Supported AEAD algorithms of the 'openssl' crypto driver. diff --git a/doc/guides/cryptodevs/openssl.rst b/doc/guides/cryptodevs/openssl.rst index 03041ceda1..07dbd2763b 100644 --- a/doc/guides/cryptodevs/openssl.rst +++ b/doc/guides/cryptodevs/openssl.rst @@ -19,10 +19,13 @@ OpenSSL PMD has support for: Supported cipher algorithms: +* ``RTE_CRYPTO_CIPHER_SM4_ECB`` * ``RTE_CRYPTO_CIPHER_3DES_CBC`` * ``RTE_CRYPTO_CIPHER_AES_CBC`` +* ``RTE_CRYPTO_CIPHER_SM4_CBC`` * ``RTE_CRYPTO_CIPHER_AES_CTR`` * ``RTE_CRYPTO_CIPHER_3DES_CTR`` +* ``RTE_CRYPTO_CIPHER_SM4_CTR`` * ``RTE_CRYPTO_CIPHER_DES_DOCSISBPI`` Supported authentication algorithms: @@ -34,6 +37,7 @@ Supported authentication algorithms: * ``RTE_CRYPTO_AUTH_SHA256`` * ``RTE_CRYPTO_AUTH_SHA384`` * ``RTE_CRYPTO_AUTH_SHA512`` +* ``RTE_CRYPTO_AUTH_SM3`` * ``RTE_CRYPTO_AUTH_MD5_HMAC`` * ``RTE_CRYPTO_AUTH_SHA1_HMAC`` * ``RTE_CRYPTO_AUTH_SHA224_HMAC`` diff --git a/drivers/crypto/openssl/rte_openssl_pmd.c b/drivers/crypto/openssl/rte_openssl_pmd.c index abcb641a44..76fcd8c93a 100644 --- a/drivers/crypto/openssl/rte_openssl_pmd.c +++ b/drivers/crypto/openssl/rte_openssl_pmd.c @@ -239,6 +239,14 @@ get_cipher_algo(enum rte_crypto_cipher_algorithm sess_algo, size_t keylen, default: res = -EINVAL; } + case RTE_CRYPTO_CIPHER_SM4_ECB: + *algo = EVP_sm4_ecb(); + break; + case RTE_CRYPTO_CIPHER_SM4_CBC: + *algo = EVP_sm4_cbc(); + break; + case RTE_CRYPTO_CIPHER_SM4_CTR: + *algo = EVP_sm4_ctr(); break; default: res = -EINVAL; @@ -284,6 +292,9 @@ get_auth_algo(enum rte_crypto_auth_algorithm sessalgo, case RTE_CRYPTO_AUTH_SHA512_HMAC: *algo = EVP_sha512(); break; + case RTE_CRYPTO_AUTH_SM3: + *algo = EVP_sm3(); + break; default: res = -EINVAL; break; @@ -483,6 +494,9 @@ openssl_set_session_cipher_parameters(struct openssl_session *sess, case RTE_CRYPTO_CIPHER_3DES_CBC: case RTE_CRYPTO_CIPHER_AES_CBC: case RTE_CRYPTO_CIPHER_AES_CTR: + case RTE_CRYPTO_CIPHER_SM4_ECB: + case RTE_CRYPTO_CIPHER_SM4_CBC: + case RTE_CRYPTO_CIPHER_SM4_CTR: sess->cipher.mode = OPENSSL_CIPHER_LIB; sess->cipher.algo = xform->cipher.algo; sess->cipher.ctx = EVP_CIPHER_CTX_new(); @@ -636,6 +650,7 @@ openssl_set_session_auth_parameters(struct openssl_session *sess, case RTE_CRYPTO_AUTH_SHA256: case RTE_CRYPTO_AUTH_SHA384: case RTE_CRYPTO_AUTH_SHA512: + case RTE_CRYPTO_AUTH_SM3: sess->auth.mode = OPENSSL_AUTH_AS_AUTH; if (get_auth_algo(xform->auth.algo, &sess->auth.auth.evp_algo) != 0) diff --git a/drivers/crypto/openssl/rte_openssl_pmd_ops.c b/drivers/crypto/openssl/rte_openssl_pmd_ops.c index 29ad1b9505..bd908b40fa 100644 --- a/drivers/crypto/openssl/rte_openssl_pmd_ops.c +++ b/drivers/crypto/openssl/rte_openssl_pmd_ops.c @@ -269,6 +269,28 @@ static const struct rte_cryptodev_capabilities openssl_pmd_capabilities[] = { }, } }, } }, + { + /* SM3 */ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, + {.sym = { + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, + {.auth = { + .algo = RTE_CRYPTO_AUTH_SM3, + .block_size = 64, + .key_size = { + .min = 0, + .max = 0, + .increment = 0 + }, + .digest_size = { + .min = 32, + .max = 32, + .increment = 0 + }, + .aad_size = { 0 } + }, } + }, } + }, { /* AES CBC */ .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, {.sym = { @@ -494,6 +516,66 @@ static const struct rte_cryptodev_capabilities openssl_pmd_capabilities[] = { }, } }, } }, + { /* SM4 ECB */ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, + {.sym = { + .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, + {.cipher = { + .algo = RTE_CRYPTO_CIPHER_SM4_ECB, + .block_size = 16, + .key_size = { + .min = 16, + .max = 16, + .increment = 0 + }, + .iv_size = { + .min = 0, + .max = 0, + .increment = 0 + } + }, } + }, } + }, + { /* SM4 CBC */ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, + {.sym = { + .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, + {.cipher = { + .algo = RTE_CRYPTO_CIPHER_SM4_CBC, + .block_size = 16, + .key_size = { + .min = 16, + .max = 16, + .increment = 0 + }, + .iv_size = { + .min = 16, + .max = 16, + .increment = 0 + } + }, } + }, } + }, + { /* SM4 CTR */ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, + {.sym = { + .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, + {.cipher = { + .algo = RTE_CRYPTO_CIPHER_SM4_CTR, + .block_size = 16, + .key_size = { + .min = 16, + .max = 16, + .increment = 0 + }, + .iv_size = { + .min = 16, + .max = 16, + .increment = 0 + } + }, } + }, } + }, { /* RSA */ .op = RTE_CRYPTO_OP_TYPE_ASYMMETRIC, {.asym = {