From patchwork Tue Feb 28 10:06:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sunyang Wu X-Patchwork-Id: 124570 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 88AB241D9B; Tue, 28 Feb 2023 11:09:33 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7299D40EE4; Tue, 28 Feb 2023 11:09:33 +0100 (CET) Received: from APC01-PSA-obe.outbound.protection.outlook.com (mail-psaapc01on2072.outbound.protection.outlook.com [40.107.255.72]) by mails.dpdk.org (Postfix) with ESMTP id F1AF64021F for ; Tue, 28 Feb 2023 11:09:31 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=J3XwpUbuMhUWfnrwoEGWOC1Lt2e8aZuBvLVksxB3UefcnQB8mLzh5NfMw1WCZ5mp0vTRmDSGTNADfkoVEPnoeU1cmmpZpGFTY69E3eYnCbw1qB1ZH9ffK2snf2QLIT6pKsnD74QQZDoNMX+IG0WXbDT14fifFLay+cQBIhFuOj10DiG4lsWGjsrCCbKvJ6SFaPQqxxVsWO9Dl+iajPVAvbtDJxWk40UoYu309fdjXZJiS5INVM7ppKhbplZ6DVASNDwqJohySbzUB27iem1j5IqJ0s3AiOcqweA5GAinFPPYrJYG0Mk+Ru+TXamEJUSF48roHLbYpepJm1Eo+zz9RA== 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=60+bQZouo3zTAtcUk9DVeA8QXhHO9991ePfRROWp4Co=; b=gTOufheTnuAHC5zzmT7JANZHacOSzk/0erVquRFTJz5xWaMiGejvmBXUNEVrQbYObv5Dz3pKjpGBU6Zj71/f8zY22RJfSiiYqNjswwnPnO6tjOO5ZPPHxZSPULOwkvN1k4VJgE4/58a/9aztZmgV3gbdxf3TUaUpLNgKdSlxlI7RlXL78DN44l4/mOyBnTHLS5GCX/oaSEKnr8uSfdqKsawsODLuKq5rlISEvTBJC3fM9uw7GfMj8avfYA01BZ7Oa1BDYKzWHo6nKuv6yGjrYDNvybcsN9LPkUpZF8z/DmfiDHbLQNun4/GAStfonwEEkPkv4rVxXuekaAGt7xhqFA== 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=60+bQZouo3zTAtcUk9DVeA8QXhHO9991ePfRROWp4Co=; b=HWDFTmHSH8tbNxNZuzgeNb/gTW8LiEI+CUaPBKZzDWyQoCOWKR9NfM1EH1vjOgy/udG2mkVyj+kq1zw3o3rx+WfR4MvJ33eGKL1kfxd8pDGTYpq74JnpSAZRrzpwdFiGzELgbEAVlAAVGeKCC8OIdAlyLOamIl0ke6VcvgvL5ACZeZI6iCLckxTPT7sdbzAM6OY3a1J+u5hwVF2Ot0TtYJ44OVHyzAzNMAzZSw69I4uETgI+VLRA+kT4gNDWjaGWbdjEBPaz+3Ri6T2P1vgXbEcRaCagKu9tn9hlyAbALhfzLvS4hEa2nOv8gYM4i8sz7CP4pnvToCM0BdsH5NRIQQ== 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 KL1PR0601MB4436.apcprd06.prod.outlook.com (2603:1096:820:67::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.17; Tue, 28 Feb 2023 10:09:29 +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 10:09:29 +0000 From: Sunyang Wu To: dev@dpdk.org Cc: kai.ji@intel.com, gakhil@marvell.com Subject: [PATCH] crypto/openssl: support SM3/SM4 in openssl Date: Tue, 28 Feb 2023 18:06:31 +0800 Message-Id: <20230228100631.42444-1-sunyang.wu@jaguarmicro.com> X-Mailer: git-send-email 2.19.0.rc0.windows.1 X-ClientProxiedBy: SI2P153CA0010.APCP153.PROD.OUTLOOK.COM (2603:1096:4:140::13) To KL1PR0601MB5567.apcprd06.prod.outlook.com (2603:1096:820:c5::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR0601MB5567:EE_|KL1PR0601MB4436:EE_ X-MS-Office365-Filtering-Correlation-Id: 5ba66008-c52c-419b-5545-08db1973e134 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8AGeWnU2iM1gTucKyPAMF4C2KOeAyjhZJdAZKTeA+g5HPzCRi2bQPS/ax9x/axNRv4w5153sXEN/in9d/CgjYsrFUTlx1OhhivmReQQv9aB1g/VKu8bIUdzkQ7teGBKA80R5V+5oU0mdsquhHEo5dg+AgC2Gu7O30Gs7Fqajs5GwnAt2xur88kMkn2hnhbAu4vYZAwmgam+6yuecyoActL2tUWyldOgstNouV6HhiTUm5u+5e3mD/tM6g3Ga8oTEnz2ZFDk9KYa+HRHle3M9On0XUGumfmWbtGHWY2Bg9KxljbqmE4aCZyJsAbNHVeGBKQWoTNYJLfRNyP4SG9X2ZLTiA0NMPTMokte1u8PGgNQsizcR7FzTrtTLVYQ6kNIUIO6ud5SSDDWliHiKl+w4BUKwck/a1GiB6Z4LEAop9JY0eHOxv00ecoj9kXEzDlXUdUwd6+6DX8zEdhVLmuFO5cOmyWzmkPf5mzDkPL9LeDBWIRZJYIKmWfTj0VQ+6mVeBgh0dUBEvqHw+MK3NM1Ml+nfWXuzOULwTxex4q2Gnqka4NZLTBahzbSfvrxDqvtCU9DAXkwYL7wRyNvZOOj4uiSjzoHWm9KZk7Kb4eK2ivjHybQ3t6g6LpzxCrtU0saeFGT6QvgYnx/v1ayeK2UjzMPJWsVhwHeE8g9VFMR5YCQ9e9txzUfRwXFTsFoTouuZOcc0/INPaoQ2IsT++KANjw== 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)(39830400003)(366004)(396003)(376002)(136003)(346002)(451199018)(38350700002)(41300700001)(38100700002)(2906002)(66556008)(66476007)(26005)(66946007)(186003)(6506007)(6512007)(83380400001)(6666004)(1076003)(4326008)(8676002)(6916009)(2616005)(52116002)(316002)(6486002)(36756003)(478600001)(5660300002)(8936002)(86362001)(44832011); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 9v4AdeY67VFsz+dYfTjWbLNQJb+V7awMoigCcdJbFnwh0rVIc2VK7XvVKHnbGM0u+nNDsZWUfduafZbm8XIXVF1sGC1glEHsCtfU70jSPjq/6OMakwl8re+PfSK0D8H3EakpCNE2jo/bUXMsp77YLn7UnME7UQZKiP/77BkmKOUmnbBZPmOZvpVYF9/Jma3EqLlssk7rPKcDemerMrfkxW/vTmfsXkEiq65hUkeXNs6H1ge0DxBzB+kVxla0RRcRI4gxZ0aDkvyEiQfUHkdDADXVVfzcp9CXXKK6mrr4Dyr2bPWeWVmWZob/I0yd3LmDxjOhrKAkGdhCFQ/h/kAxsFAwCu5sNJ/D3kDRS/Pde+NjwUx1Z61L+WjTOkpVG8vex7xbh1U3eqLPegwVannnBqnTuiRlkGp7xKMEZ08vrCykB8Gv9GZmA1Elt48mreqV37OrlHoTRaa1BIooK6KXyJrMqzJ6w7CLtYsx4iTC6pAJzw+VQvfW5H5RyeyT4h8BZTRJzGCMkYQbD/iczGPmWUpC9lz5aKNwbDq9bfuCDnN4BFi6FLE+Hou3aTFuowNzRneq3aVOce/5i9mshUMEaDwHFbj3lgcuQIhfO61sgslFZGaWbSlnZwo+6bmQUJz/LmaI7OAaRXnSn6gZqGBV9yIpAUHGn2zewwr5JwR8NUcX/OEg1ESnPg1z2udVjF3+zJT6f2axzONrijvCT6n0FKUJBh5f+6DSJ7IxBY6NHC6vtmBfRW5iD99nZWWVwq9BpuzCn/5v+PzDoF14eaHsGfBtCEF0WL61N73kDgYyJEvdPxBG9qhoAq7hBs/yF0rwgBjFrwTENsc8OfIHUKWqj8YBL0AMGe9ENrtlqyXG2TuxB8UWpf6U1VYbGmk1c4DUuM3kT5x2RksRjc1h1JIfrkT8Ls3IkJ/i4rju7cN3QPcZGCd3Vqvynoa2AecUaqtIuhL3Bf+RpZo1YISAAQ1AJJ1+S0IaEs2xYh/XdE+p3g5acaM5Sykg4V4JPPgUG5bHfgh8TZT+bZwpeoXFGmxJ/NvfyGwOxn2E6zcMoCVH1WQOoVRK/DlNCIvbOEyCF4EGFWm0MhH291G7x818BA1TpiD8iKXoEU8pIXRGZnWOzYbDgcEmvaMeh4wkMlUj2AneoxCzusQawFefNNagrB4Ay8lfYzuMbGca72CGCHmxoW+8U1WI8xorQrceIc4L6O67lc7pXYQJh/RVKdGDJeaXKIjQm5o4QN8NceLHVWv4ONGxYpHMmj7YkpG+Wr+M31R4aWTw7M7h1SBa+Q5KK62+ROxaaQqMMKlP03QDizjQLTyDBDQDMjVCvu7PuO79dA3TQWAkv8D7OGNO9r63j6bM4FgcsDweYBnMb3b9irmwwkDMff4b0vQLO8A3vQeJ1AQxbDbXLt+EbLk2sEzZlf/h0/3VNwS8wmBlhmFjB+1xru+VSaGlC/h7S6DooYNB2LFMmI1NVzG/kmN0qzcN937kndTcsBTqPXinnt2qn6D8GKCNhJIGQu4T/zVvIY7c1jZhW2paqeuKPoJHviilGHEXcqtf6S6L0hSX+W8nTm3RVCA+EWXgdVRuTezynLqyVqXYUemiZDsv80+y1Z1huI5/+w== X-OriginatorOrg: jaguarmicro.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5ba66008-c52c-419b-5545-08db1973e134 X-MS-Exchange-CrossTenant-AuthSource: KL1PR0601MB5567.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2023 10:09:29.5337 (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: RspoAqetZvgEjbMOWQAeJD/ciA6lP6KbVQPnueSo+ww8kVuvj+huE/CPrCJttlpEXafun62nD9qyuQZTXtDi4d+qjPd+D4Kyvs5dAqZ9Dac= X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR0601MB4436 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 | 20 +++++ drivers/crypto/openssl/rte_openssl_pmd_ops.c | 82 ++++++++++++++++++++ 4 files changed, 110 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..4c9f12355f 100644 --- a/drivers/crypto/openssl/rte_openssl_pmd.c +++ b/drivers/crypto/openssl/rte_openssl_pmd.c @@ -240,6 +240,17 @@ get_cipher_algo(enum rte_crypto_cipher_algorithm sess_algo, size_t keylen, res = -EINVAL; } break; +#ifndef OPENSSL_NO_SM4 + 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; +#endif default: res = -EINVAL; break; @@ -284,6 +295,11 @@ get_auth_algo(enum rte_crypto_auth_algorithm sessalgo, case RTE_CRYPTO_AUTH_SHA512_HMAC: *algo = EVP_sha512(); break; +#ifndef OPENSSL_NO_SM3 + case RTE_CRYPTO_AUTH_SM3: + *algo = EVP_sm3(); + break; +#endif default: res = -EINVAL; break; @@ -483,6 +499,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 +655,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 = {