+++ /dev/null
-/** @file\r
- BaseCrypto SM3 hash instance library.\r
- It can be registered to BaseCrypto router, to serve as hash engine.\r
-\r
- Copyright (c) 2013 - 2019, Intel Corporation. All rights reserved.<BR>\r
- SPDX-License-Identifier: BSD-2-Clause-Patent\r
-**/\r
-\r
-#include <PiPei.h>\r
-#include <Library/BaseLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-#include <Library/Tpm2CommandLib.h>\r
-#include <Library/DebugLib.h>\r
-#include <Library/BaseCryptLib.h>\r
-#include <Library/MemoryAllocationLib.h>\r
-#include <Library/HashLib.h>\r
-\r
-/**\r
- The function set SM3 to digest list.\r
-\r
- @param DigestList digest list\r
- @param Sm3Digest SM3 digest\r
-**/\r
-VOID\r
-Tpm2SetSm3ToDigestList (\r
- IN TPML_DIGEST_VALUES *DigestList,\r
- IN UINT8 *Sm3Digest\r
- )\r
-{\r
- DigestList->count = 1;\r
- DigestList->digests[0].hashAlg = TPM_ALG_SM3_256;\r
- CopyMem (\r
- DigestList->digests[0].digest.sm3_256,\r
- Sm3Digest,\r
- SM3_256_DIGEST_SIZE\r
- );\r
-}\r
-\r
-/**\r
- Start hash sequence.\r
-\r
- @param HashHandle Hash handle.\r
-\r
- @retval EFI_SUCCESS Hash sequence start and HandleHandle returned.\r
- @retval EFI_OUT_OF_RESOURCES No enough resource to start hash.\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-Sm3HashInit (\r
- OUT HASH_HANDLE *HashHandle\r
- )\r
-{\r
- VOID *Sm3Ctx;\r
- UINTN CtxSize;\r
-\r
- CtxSize = Sm3GetContextSize ();\r
- Sm3Ctx = AllocatePool (CtxSize);\r
- if (Sm3Ctx == NULL) {\r
- return EFI_OUT_OF_RESOURCES;\r
- }\r
-\r
- Sm3Init (Sm3Ctx);\r
-\r
- *HashHandle = (HASH_HANDLE)Sm3Ctx;\r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
- Update hash sequence data.\r
-\r
- @param HashHandle Hash handle.\r
- @param DataToHash Data to be hashed.\r
- @param DataToHashLen Data size.\r
-\r
- @retval EFI_SUCCESS Hash sequence updated.\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-Sm3HashUpdate (\r
- IN HASH_HANDLE HashHandle,\r
- IN VOID *DataToHash,\r
- IN UINTN DataToHashLen\r
- )\r
-{\r
- VOID *Sm3Ctx;\r
-\r
- Sm3Ctx = (VOID *)HashHandle;\r
- Sm3Update (Sm3Ctx, DataToHash, DataToHashLen);\r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
- Complete hash sequence complete.\r
-\r
- @param HashHandle Hash handle.\r
- @param DigestList Digest list.\r
-\r
- @retval EFI_SUCCESS Hash sequence complete and DigestList is returned.\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-Sm3HashFinal (\r
- IN HASH_HANDLE HashHandle,\r
- OUT TPML_DIGEST_VALUES *DigestList\r
- )\r
-{\r
- UINT8 Digest[SM3_256_DIGEST_SIZE];\r
- VOID *Sm3Ctx;\r
-\r
- Sm3Ctx = (VOID *)HashHandle;\r
- Sm3Final (Sm3Ctx, Digest);\r
-\r
- FreePool (Sm3Ctx);\r
-\r
- Tpm2SetSm3ToDigestList (DigestList, Digest);\r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r
-HASH_INTERFACE mSm3InternalHashInstance = {\r
- HASH_ALGORITHM_SM3_256_GUID,\r
- Sm3HashInit,\r
- Sm3HashUpdate,\r
- Sm3HashFinal,\r
-};\r
-\r
-/**\r
- The function register SM3 instance.\r
-\r
- @retval EFI_SUCCESS SM3 instance is registered, or system dose not support register SM3 instance\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-HashInstanceLibSm3Constructor (\r
- VOID\r
- )\r
-{\r
- EFI_STATUS Status;\r
-\r
- Status = RegisterHashInterfaceLib (&mSm3InternalHashInstance);\r
- if ((Status == EFI_SUCCESS) || (Status == EFI_UNSUPPORTED)) {\r
- //\r
- // Unsupported means platform policy does not need this instance enabled.\r
- //\r
- return EFI_SUCCESS;\r
- }\r
- return Status;\r
-}\r
+++ /dev/null
-## @file\r
-# Provides BaseCrypto SM3 hash service\r
-#\r
-# This library can be registered to BaseCrypto router, to serve as hash engine.\r
-#\r
-# Copyright (c) 2013 - 2019, Intel Corporation. All rights reserved.<BR>\r
-# SPDX-License-Identifier: BSD-2-Clause-Patent\r
-#\r
-##\r
-\r
-[Defines]\r
- INF_VERSION = 0x00010005\r
- BASE_NAME = HashInstanceLibSm3\r
- MODULE_UNI_FILE = HashInstanceLibSm3.uni\r
- FILE_GUID = C5865D5D-9ACE-39FB-DC7C-0511891D40F9\r
- MODULE_TYPE = BASE\r
- VERSION_STRING = 1.0\r
- LIBRARY_CLASS = NULL\r
- CONSTRUCTOR = HashInstanceLibSm3Constructor\r
-\r
-#\r
-# The following information is for reference only and not required by the build tools.\r
-#\r
-# VALID_ARCHITECTURES = IA32 X64\r
-#\r
-\r
-[Sources]\r
- HashInstanceLibSm3.c\r
-\r
-[Packages]\r
- MdePkg/MdePkg.dec\r
- SecurityPkg/SecurityPkg.dec\r
- CryptoPkg/CryptoPkg.dec\r
-\r
-[LibraryClasses]\r
- BaseLib\r
- BaseMemoryLib\r
- DebugLib\r
- Tpm2CommandLib\r
- MemoryAllocationLib\r
- BaseCryptLib\r
SecurityPkg/Library/HashInstanceLibSha256/HashInstanceLibSha256.inf\r
SecurityPkg/Library/HashInstanceLibSha384/HashInstanceLibSha384.inf\r
SecurityPkg/Library/HashInstanceLibSha512/HashInstanceLibSha512.inf\r
- SecurityPkg/Library/HashInstanceLibSm3/HashInstanceLibSm3.inf\r
\r
SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf {\r
<LibraryClasses>\r
NULL|SecurityPkg/Library/HashInstanceLibSha256/HashInstanceLibSha256.inf\r
NULL|SecurityPkg/Library/HashInstanceLibSha384/HashInstanceLibSha384.inf\r
NULL|SecurityPkg/Library/HashInstanceLibSha512/HashInstanceLibSha512.inf\r
- NULL|SecurityPkg/Library/HashInstanceLibSm3/HashInstanceLibSm3.inf\r
}\r
\r
SecurityPkg/Tcg/Tcg2Dxe/Tcg2Dxe.inf {\r
NULL|SecurityPkg/Library/HashInstanceLibSha256/HashInstanceLibSha256.inf\r
NULL|SecurityPkg/Library/HashInstanceLibSha384/HashInstanceLibSha384.inf\r
NULL|SecurityPkg/Library/HashInstanceLibSha512/HashInstanceLibSha512.inf\r
- NULL|SecurityPkg/Library/HashInstanceLibSm3/HashInstanceLibSm3.inf\r
PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf\r
}\r
SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigDxe.inf {\r