From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mx.groups.io with SMTP id smtpd.web09.14167.1664077144999759383 for ; Sat, 24 Sep 2022 20:39:05 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=EuKAj6c0; spf=pass (domain: intel.com, ip: 134.134.136.100, mailfrom: yi1.li@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1664077144; x=1695613144; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=iK3IkPYIgIcV9I0sSLcV2nFCG6F30neSpli2JK8qe2o=; b=EuKAj6c05VqyWRlm9II+fjKLyHXnofCMeixF9cHpxVI7IxsuIXRovJId vGnGA9i6UAjSVbQDt36nQAunvwm4MziJSrnEqNznTrL56mwisDfpPhu1P BQPyNagGSDk6WRS80A62Fcf6+jGxFMppA2PHzQB3uMnPfuG/Jh7W5Ix2/ ctNwI19rP6gULJgEUU4H0256fj4S3ZeqgAasqzSr3S24vplDrIlNYpqHI wxEnpyLJWdkCT2X9WYD1PMpuuaV8+FJmaVJgFFeDb15gGWIfXWlR+lKzg f2rA7WQLHnHZwXnZYg4QZIHsOF2Qpr+fXvv9t2L2xUGxVBR/smPnoP7c1 A==; X-IronPort-AV: E=McAfee;i="6500,9779,10480"; a="364859425" X-IronPort-AV: E=Sophos;i="5.93,343,1654585200"; d="scan'208";a="364859425" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Sep 2022 20:39:03 -0700 X-IronPort-AV: E=Sophos;i="5.93,343,1654585200"; d="scan'208";a="689158095" Received: from liyi4-desktop.ccr.corp.intel.com ([10.239.153.82]) by fmsmga004-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Sep 2022 20:39:02 -0700 From: "yi1 li" To: devel@edk2.groups.io Cc: Yi Li , Jiewen Yao , Jian J Wang , Xiaoyu Lu , Guomin Jiang , Michael D Kinney Subject: [PATCH V4 0/4] CryptoPkg: Add EC support Date: Sun, 25 Sep 2022 11:38:45 +0800 Message-Id: X-Mailer: git-send-email 2.31.1.windows.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3828 Review PR: https://github.com/tianocore/edk2/pull/3398 This patch sequence is used to add CryptEc library, which are wrapped over OpenSSL. The implementation provides library functions for EFI BaseCrypt protocol and EFI BaseCrypt Configuration Protocol. All APIs passed unit test and fuzzing test, detail as: 1. Unit test: The purpose of unit testing is to ensure that the function obtains the expected result under specific input, that is, to ensure the correctness of APIs. All test case show in patch 3 :CryptoPkg/Test: Add unit test for CryptoEc. 2. Fuzzing test: Various Fuzz Testing are employed across the all introduced APIs, and the test is used AFL (2.52b) and Libfuzzer (clang+llvm-11.0.0) as the fuzzer, based on HBFA. Fuzzing Pass Rate is 100%; The Code Coverage new APIs is 90.3%. All test case show in: https://github.com/liyi77/edk2-staging/tree/HBFA/HBFA/UefiHostFuzzTestCasePkg/TestCase/CryptoPkg V2 change: 1. Squash uncrustify tool update into previous patch. 2. Increase EDKII_CRYPTO_VERSION to 10. V3 change: Fix typo in comment. V4 change: Add ECC related usage reference Tested-by: Yi Li Cc: Jiewen Yao Cc: Jian J Wang Cc: Xiaoyu Lu Cc: Guomin Jiang Cc: Michael D Kinney Signed-off-by: Yi Li Yi Li (4): CryptoPkg: Add EC support CryptoPkg: Add EC APIs to DXE and protocol CryptoPkg: Add ECC related usage reference CryptoPkg/Test: Add unit test for CryptoEc CryptoPkg/CryptoPkg.dec | 28 + CryptoPkg/CryptoPkg.dsc | 1 + CryptoPkg/Driver/Crypto.c | 496 +++++++++++ CryptoPkg/Include/Library/BaseCryptLib.h | 424 +++++++++ .../Pcd/PcdCryptoServiceFamilyEnable.h | 25 + .../Library/BaseCryptLib/BaseCryptLib.inf | 2 + .../Library/BaseCryptLib/PeiCryptLib.inf | 1 + CryptoPkg/Library/BaseCryptLib/Pk/CryptEc.c | 765 ++++++++++++++++ .../Library/BaseCryptLib/Pk/CryptEcNull.c | 496 +++++++++++ .../Library/BaseCryptLib/SmmCryptLib.inf | 1 + .../BaseCryptLib/UnitTestHostBaseCryptLib.inf | 2 + .../BaseCryptLibNull/BaseCryptLibNull.inf | 1 + .../Library/BaseCryptLibNull/Pk/CryptEcNull.c | 496 +++++++++++ .../BaseCryptLibOnProtocolPpi/CryptLib.c | 469 ++++++++++ CryptoPkg/Private/Protocol/Crypto.h | 831 +++++++++++++----- CryptoPkg/Test/CryptoPkgHostUnitTest.dsc | 3 + .../BaseCryptLib/BaseCryptLibUnitTests.c | 1 + .../UnitTest/Library/BaseCryptLib/EcTests.c | 290 ++++++ .../Library/BaseCryptLib/TestBaseCryptLib.h | 2 + .../BaseCryptLib/TestBaseCryptLibHost.inf | 1 + .../BaseCryptLib/TestBaseCryptLibShell.inf | 1 + 21 files changed, 4136 insertions(+), 200 deletions(-) create mode 100644 CryptoPkg/Library/BaseCryptLib/Pk/CryptEc.c create mode 100644 CryptoPkg/Library/BaseCryptLib/Pk/CryptEcNull.c create mode 100644 CryptoPkg/Library/BaseCryptLibNull/Pk/CryptEcNull.c create mode 100644 CryptoPkg/Test/UnitTest/Library/BaseCryptLib/EcTests.c -- 2.31.1.windows.1