summaryrefslogtreecommitdiff
path: root/CryptoPkg/Test/UnitTest/Library
AgeCommit message (Collapse)AuthorFilesLines
2026-08-28CryptoPkg: Add Pkcs7Decrypt APIDoug Cook9-85/+1193
Add support for a Pkcs7Decrypt API, mirroring the Pkcs7Encrypt API. I expect that the primary use of Pkcs7Decrypt would be for testing the Pkcs7Encrypt API, but maybe somebody will need it for real work someday. Signed-off-by: Doug Cook <dcook@microsoft.com> Committed-by: Doug Flick <dougflick@microsoft.com>
2026-08-28CryptoPkg: Add Pkcs7Encrypt smoke testsDoug Flick8-0/+889
These don't actually decrypt anything, so calling them "unit tests" was a stretch. They're smoke tests: build an envelopedData ContentInfo for a recipient cert, then walk the DER and check the shape looks right (id-envelopedData, CMSVersion, the right number of RecipientInfo entries, the expected content-encryption OID). Covered: * AES-128/192/256-CBC happy paths. * Two recipients, just to confirm the SET grows. * The parameter-validation contract from BaseCryptLib.h (NULL stack/InData/output pointers, bogus CipherNid, bogus Flags). The DER walker is hand-rolled in the test file so we don't have to pull OpenSSL or mbedtls headers into a unit test that has to compile against both. It catches obvious shape regressions but won't notice if the CEK, IV, or PKCS#7 padding are wrong - a real round-trip needs a Pkcs7Decrypt API we don't have yet. Signed-off-by: Doug Flick <dougflick@microsoft.com>
2026-07-21CryptoPkg/BaseCryptLib: Add SLH-DSA SupportMichael G.A. Holland6-0/+4366
Created SLH-DSA API functions to configure public and private keys for SLH-DSA algorithm. This will allow users to sign and verify with SLH-DSA. Unit tests were added to confirm operation of the API. Signed-off-by: Michael G.A. Holland <michael.holland@intel.com>
2026-07-20CryptoPkg/BaseCryptLib: EdDsa updatesMichael G.A. Holland1-4/+4
Include validation checks for Context and ContextSize in sign and verify functions. Returned FALSE for EdDsaGeneratePubKey. Updated ReadMe to show EdDsa support Signed-off-by: Michael G.A. Holland <michael.holland@intel.com>
2026-07-14CryptoPkg/BaseCryptLib: Add ML-DSA SupportMichael G.A. Holland6-0/+2899
Created ML-DSA API functions to configure public and private keys for ML-DSA algorithm. This will allow users to sign and verify with ML-DSA. Unit tests were add to confirm operation of the API. Signed-off-by: Michael G.A. Holland <michael.holland@intel.com>
2026-07-01CryptoPkg/BaseCryptLib: Add ED448 verification and signature fcnsMichael G.A. Holland5-0/+929
Implemented signature and verification functions for ED448; Updated documentation and unit tests to cover new verification functions Signed-off-by: Michael G.A. Holland <michael.holland@intel.com>
2026-04-07CryptoPkg: Add digest-based RSA-PSS sign and verify APIsBaraneedharan Anbazhagan1-1/+70
Add RsaPssSignDigest() and RsaPssVerifyDigest() to BaseCryptLib for signing/verifying precomputed digests. Provide OpenSSL/MbedTLS/Null implementations, expose via EDKII_CRYPTO_PROTOCOL (v24), and add PCD controls for independent service enabling. Include unit tests. Signed-off-by: Anbazhagan Baraneedharan <anbazhagan@hp.com>
2026-02-24CryptoPkg: Replace include guards with #pragma onceMichael Kubacki1-4/+1
Replace traditional `#ifndef`/`#define`/`#endif` include guards with `#pragma` once. `#pragma once` is a widely supported preprocessor directive that prevents header files from being included multiple times. It is supported by all toolchains used to build edk2: GCC, Clang/LLVM, and MSVC. Does not include updates to OpenSSL generated header files checked into the repo. Those in `CryptoPkg\Library\OpensslLib\OpensslGen\`. Compared to macro-based include guards, `#pragma once`: - Eliminates the risk of macro name collisions or copy/paste errors where two headers inadvertently use the same guard macro. - Eliminate inconsistency in the way include guard macros are named (e.g., some files use `__FILE_H__`, others use `FILE_H_`, etc.). - Reduces boilerplate (three lines replaced by one). - Avoids polluting the macro namespace with guard symbols. - Can improve build times as the preprocessor can skip re-opening the file entirely, rather than re-reading it to find the matching `#endif` ("multiple-include optimization"). - Note that some compilers may already optimize traditional include guards, by recognzining the idiomatic pattern. This change is made acknowledging that overall portability of the code will technically be reduced, as `#pragma once` is not part of the C/C++ standards. However, this is considered acceptable given: 1. edk2 already defines a subset of supported compilers in BaseTools/Conf/tools_def.template, all of which have supported `#pragma once` for over two decades. 2. There have been concerns raised to the project about inconsistent include guard naming and potential macro collisions. Approximate compiler support dates: - MSVC: Supported since Visual C++ 4.2 (1996) - GCC: Supported since 3.4 (2004) (http://gnu.ist.utl.pt/software/gcc/gcc-3.4/changes.html) - Clang (LLVM based): Since initial release in 2007 Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
2025-11-24CryptoPkg/BaseCryptLibUnitTest: Separate MbedTls UnitTest Library.Longhaox Lee8-0/+202
Separate Unit test functions for MbedTls. BaseCryptLibMbedTls does not support all Crypto services So deprecate below function for MbedTls Unit test: TestVerifyEKUsWith3CertsInSignature() TestVerifyEKUsWith2CertsInSignature() TestNoEKUsInSignature() TestVerifyRsaCertPkcs1SignVerify TestVerifyPkcs7SignVerifyNonSelfIssued() TestVerifyDhGenerateKey() Pkcs1v2Decrypt Pkcs1v2EncryptDecrypt RsaOaepEncrypt (Interface) RsaOaepEncrypt (NoSeed) RsaOaepEncrypt (Seeded) RsaOaepDecrypt RsaOaepEncryptDecrypt RsaOaepEncryptPkcs1v2Decrypt Pkcs1v2EncryptRsaOaepDecrypt RsaOaepEncrypt (MdDefaultMgf1Default) RsaOaepDecrypt (MdDefaultMgf1Default) RsaOaepEncryptDecrypt (MdDefaultMgf1Default) RsaOaepEncrypt (MdSha1Bgf1Sha1 RsaOaepDecrypt (MdSha1Bgf1Sha1) RsaOaepEncryptDecrypt (MdSha1Bgf1Sha1) RsaOaepEncrypt (MdSha256Bgf1Sha256) RsaOaepDecrypt (MdSha256Bgf1Sha256) RsaOaepEncryptDecrypt (MdSha256Bgf1Sha256) TestVerifyBn() TestVerifyEcKey() TestPkcs7Attached() TestPkcs7Detached() TestVerifyPkcs7ContentData() REF: https://github.com/tianocore/edk2/issues/11605 Signed-off-by: Longhaox Lee <longhaox.lee@intel.com>
2025-11-24CryptoPkg: Unit test for Pkcs7GetAttachedContent()Longhaox Lee6-0/+497
MbebTls no support signature with content data. test would be fail in below test case: TestPkcs7Attached TestPkcs7Detached TestVerifyPkcs7ContentData REF: https://github.com/tianocore/edk2/issues/11605 Signed-off-by: Longhaox Lee <longhaox.lee@intel.com>
2025-11-22CryptoPkg: fix various typosPhilipp Schuster2-2/+2
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de>
2025-08-26CryptoPkg: Add Unit Test Host of Mbedtls CryptoLibYi Li1-1/+1
Currently BaseCryptLibMbedTls does not support all Crypto services, so the following case will fail: TestVerifyEKUsWith3CertsInSignature() TestVerifyEKUsWith2CertsInSignature() TestNoEKUsInSignature() TestVerifyRsaCertPkcs1SignVerify TestVerifyPkcs7SignVerifyNonSelfIssued() TestVerifyDhGenerateKey() Pkcs1v2Decrypt Pkcs1v2EncryptDecrypt RsaOaepEncrypt (Interface) RsaOaepEncrypt (NoSeed) RsaOaepEncrypt (Seeded) RsaOaepDecrypt RsaOaepEncryptDecrypt RsaOaepEncryptPkcs1v2Decrypt Pkcs1v2EncryptRsaOaepDecrypt RsaOaepEncrypt (MdDefaultMgf1Default) RsaOaepDecrypt (MdDefaultMgf1Default) RsaOaepEncryptDecrypt (MdDefaultMgf1Default) RsaOaepEncrypt (MdSha1Bgf1Sha1 RsaOaepDecrypt (MdSha1Bgf1Sha1) RsaOaepEncryptDecrypt (MdSha1Bgf1Sha1) RsaOaepEncrypt (MdSha256Bgf1Sha256) RsaOaepDecrypt (MdSha256Bgf1Sha256) RsaOaepEncryptDecrypt (MdSha256Bgf1Sha256) TestVerifyBn() TestVerifyEcKey() Signed-off-by: Yi Li <yi1.li@intel.com>
2025-08-26CryptoPkg: Add PKCS7 test case for partial certificate chainsYi Li1-1/+226
This case uses a non-self-issued certificate as the signing certificate and CA. BaseCryptLib can pass this case (X509_V_FLAG_PARTIAL_CHAIN ​​enabled). BaseCryptLibMbedTls cannot, because Mbedtls certificate chain validation lacks support for partial certificate chains currently. Signed-off-by: Yi Li <yi1.li@intel.com>
2025-04-21CryptoPkg: Resolve CodeQL ErrorsOliver Smith-Denny6-26/+96
This patch updates several CodeQL errors for potential null pointer access and unguarded header conclusion across production and test code that have been flagged in the build/security tab in GitHub. Signed-off-by: Oliver Smith-Denny <osde@microsoft.com>
2025-03-07CryptoPkg/Library/OpensslLib: Fix CLANG compatibility issuesMichael D Kinney4-20/+44
Update the CryptoPkg to support CLANGPDB and CLANGDWARF from both Windows and Linux host environments. * Add PcdOpensslLibAssemblySourceStyleNasm to select the correct optimized assembly source style for OpensslLib for IA32/X64. NASM style is for MSFT and CLANGPDB. GAS style is for GCC. Use this PCD in OpensslLibAccel.inf and OpensslLibFullAccel.inf to select between .nasm and .S files. * Add intrinsic functions required by CLANG IA32/X64 builds. * __ashlti3 * __lshrdi3 * Disable warning -Wno-error=unused-function for CLANG build compatibility * Set -D OPENSSL_NO_INLINE_ASM for CLANG build compatibility * Update TestBaseCryptLib to split out the implementation of main() into its own C file that is only use for host-based unit tests. This is due to CLANGPDB for host environments injecting a __main() call that can only be resolved in host based builds that link against host libraries. * Update Configure.py to update IA32/X64 [Sources] sections with feature flag expressions using the new PCD PcdOpensslLibAssemblySourceStyleNasm. Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
2024-09-23CryptoPkg: Add unit testcase for SM3Ard Biesheuvel1-0/+11
SM3 needs to be tested so we can verify that alternative implementations (such as the one I will be contributing to BaseCryptLibMbedTls) as well as the reference implementation produce the expected value. Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
2024-06-14CryptoPkg/Test: call ProcessLibraryConstructorListGerd Hoffmann1-0/+7
Needed to properly initialize BaseRngLib. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2024-04-07CryptoPkg/BaseCryptLibUnitTest: add unit test functionsChris Ruffin1-71/+687
Add unit test functions: TestVerifyPkcs1v2EncryptInterface() TestVerifyRsaOaepEncryptInterface() TestVerifyEncrypt() TestVerifyDecrypt() TestVerifyEncryptDecrypt() Signed-off-by: Chris Ruffin <v-chruffin@microsoft.com> Cc: Chris Ruffin <cruffin@millcore.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Yi Li <yi1.li@intel.com> Cc: Wenxing Hou <wenxing.hou@intel.com> Reviewed-by: Yi Li <yi1.li@intel.com>
2023-10-12CryptoPkg: Add MD5/SHA1/SHA2 functions based on MbedtlsWenxing Hou1-5/+28
Add MD5/SHA1/SHA256/SHA384/SHA512 APIs. REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4177 Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Yi Li <yi1.li@intel.com> Cc: Xiaoyu Lu <xiaoyu1.lu@intel.com> Cc: Guomin Jiang <guomin.jiang@intel.com> Signed-off-by: Wenxing Hou <wenxing.hou@intel.com> Reviewed-by: Yi Li <yi1.li@intel.com>
2023-10-12CryptoPkg: Add RSA functions based on MbedtlsWenxing Hou1-0/+10
Add RSA APIs. REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4177 Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Yi Li <yi1.li@intel.com> Cc: Xiaoyu Lu <xiaoyu1.lu@intel.com> Cc: Guomin Jiang <guomin.jiang@intel.com> Signed-off-by: Wenxing Hou <wenxing.hou@intel.com> Reviewed-by: Yi Li <yi1.li@intel.com>
2023-10-12CryptoPkg: Add HMAC functions based on MbedtlsWenxing Hou1-13/+47
Add HMAC APIS. REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4177 Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Yi Li <yi1.li@intel.com> Cc: Xiaoyu Lu <xiaoyu1.lu@intel.com> Cc: Guomin Jiang <guomin.jiang@intel.com> Signed-off-by: Wenxing Hou <wenxing.hou@intel.com>
2022-11-02CryptoPkg/Test: Simplify BaseCryptLib host based unit testsMichael D Kinney1-56/+0
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4130 Remove TestBaseCryptLibHostAccel.inf and instead use FILE_GUID override in DSC file to run the same unit test INF against OpensslLibFull.inf and OpensslLibFullAccel.inf Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Xiaoyu Lu <xiaoyu1.lu@intel.com> Cc: Guomin Jiang <guomin.jiang@intel.com> Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
2022-10-24CryptoPkg: Fixed host-based unit testsMichael D Kinney1-0/+56
* Build host-based tests using OpensslLib instance with all services enabled. * Build host-based tests using performance optimized OpensslLib instance with all services enabled. * Remove unused PCD gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled * Remove redundant and unnecessary [BuildOptions] * Limit host-based unit tests to only IA32/X64 Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Xiaoyu Lu <xiaoyu1.lu@intel.com> Cc: Guomin Jiang <guomin.jiang@intel.com> Cc: Christopher Zurcher <christopher.zurcher@microsoft.com> Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
2022-10-24CryptoPkg/Test/UnitTest/Library/BaseCryptLib: Unit test fixesMichael D Kinney2-6/+13
* Update ImageTimeStampTest to return UNIT_TEST_PASSED instead of Status. On success Status is TRUE(1), which was returning a unit test status of UNIT_TEST_ERROR_PREREQUISITE_NOT_MET. * Update HmacTests to use the *Free() service from the HMAC family instead of FreePool(). Using FreePool() generates ASSERT() because the context being freed was not allocated using AllocatePool(). Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Xiaoyu Lu <xiaoyu1.lu@intel.com> Cc: Guomin Jiang <guomin.jiang@intel.com> Cc: Christopher Zurcher <christopher.zurcher@microsoft.com> Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
2022-10-12CryptoPkg: add Unit Test for X509 new function.Qi Zhang5-0/+638
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4082 Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Xiaoyu Lu <xiaoyu1.lu@intel.com> Cc: Guomin Jiang <guomin.jiang@intel.com> Signed-off-by: Qi Zhang <qi1.zhang@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
2022-10-12CryptoPkg: add unit test for EC key interface.Qi Zhang1-0/+156
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4102 Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Xiaoyu Lu <xiaoyu1.lu@intel.com> Cc: Guomin Jiang <guomin.jiang@intel.com> Signed-off-by: Qi Zhang <qi1.zhang@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
2022-09-26CryptoPkg/Test: Add unit test for CryptoEcYi Li5-0/+295
Add unit test for CryptoEc. Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Xiaoyu Lu <xiaoyu1.lu@intel.com> Cc: Guomin Jiang <guomin.jiang@intel.com> Signed-off-by: Yi Li <yi1.li@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
2022-09-23CryptoPkg/Test: Add unit test for CryptoBnYi Li5-0/+272
Add unit test for CryptoBn. Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Xiaoyu Lu <xiaoyu1.lu@intel.com> Cc: Guomin Jiang <guomin.jiang@intel.com> Signed-off-by: Yi Li <yi1.li@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
2022-09-23CryptoPkg: add UnitTest for AeadAesGcm.Qi Zhang5-0/+118
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4036 Signed-off-by: Qi Zhang <qi1.zhang@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Xiaoyu Lu <xiaoyu1.lu@intel.com> Cc: Guomin Jiang <guomin.jiang@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
2022-09-23CryptoPkg: add Hkdf UnitTest.Qi Zhang5-14/+222
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4033 Signed-off-by: Qi Zhang <qi1.zhang@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Xiaoyu Lu <xiaoyu1.lu@intel.com> Cc: Guomin Jiang <guomin.jiang@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
2022-09-23CryptoPkg: add Hmac Sha384 to host UnitTest.Qi Zhang1-0/+19
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4025 Signed-off-by: Qi Zhang <qi1.zhang@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Xiaoyu Lu <xiaoyu1.lu@intel.com> Cc: Guomin Jiang <guomin.jiang@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
2022-04-12CryptoPkg/UnitTest: fix DH testcaseGerd Hoffmann1-3/+3
openssl 3.0 wants at least 512 bytes, otherwise it throws an error: error:0280007E:Diffie-Hellman routines::modulus too small Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Reviewed-by: Jiewen Yao <Jiewen.yao@intel.com>
2022-03-18CryptoPkg: Add new hash algorithm ParallelHash256HashAll in BaseCryptLib.Zhihao Li2-0/+149
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3596 Parallel hash function ParallelHash256HashAll, as defined in NIST's Special Publication 800-185, published December 2016. It utilizes multi-process to calculate the digest. Passed CI test. Onprotocol version code passed test. Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Xiaoyu Lu <xiaoyu1.lu@intel.com> Cc: Guomin Jiang <guomin.jiang@intel.com> Cc: Siyuan Fu <siyuan.fu@intel.com> Signed-off-by: Zhihao Li <zhihao.li@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
2021-12-07CryptoPkg: Apply uncrustify changesMichael Kubacki17-885/+894
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the CryptoPkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Jian J Wang <jian.j.wang@intel.com>
2021-05-14CryptoPkg: BaseCryptLib: Add RSA PSS verify supportSachin Agrawal6-0/+199
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3314 This patch uses Openssl's EVP API's to perform RSASSA-PSS verification of a binary blob. Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Xiaoyu Lu <xiaoyux.lu@intel.com> Cc: Guomin Jiang <guomin.jiang@intel.com> Signed-off-by: Sachin Agrawal <sachin.agrawal@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
2020-11-25CryptoPkg/Test/UnitTest/Library/BaseCryptLib: Fix MD5 Hash testsMichael D Kinney1-2/+7
Only include MD5 unit tests if ENABLE_MD5_DEPRECATED_INTERFACES is defined and define ENABLE_MD5_DEPRECATED_INTERFACES for host based unit tests so MD5 services are always tested. Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Xiaoyu Lu <xiaoyux.lu@intel.com> Cc: Guomin Jiang <guomin.jiang@intel.com> Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Jiewen Yao <Jiewen.yao@intel.com> Reviewed-by: Zhichao Gao <zhichao.gao@intel.com>
2020-10-18CryptoPkg: BaseCryptLib: Add unit tests (Host and Shell based)Matthew Carlson28-0/+5320
This adds a new INF for BaseCryptLib suitable for host based environments. It adds a host based unit test for BaseCryptLib that can also be built as a shell based Unit Test. In addition, this also adds a UnitTestHostCrtWrapper.c file, which provides some of the functionality not provided by the default host based unit test system that OpenSSL expects. This is used by UnitTestHostBaseCryptLib, a version of the BaseCryptLib meant specifically for host based unit testing. Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Xiaoyu Lu <xiaoyux.lu@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Guomin Jiang <guomin.jiang@intel.com> Signed-off-by: Matthew Carlson <matthewfcarlson@gmail.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>