]> git.proxmox.com Git - mirror_edk2.git/blame - SecurityPkg/Library/HashLibBaseCryptoRouter/HashLibBaseCryptoRouterCommon.c
SecurityPkg/HashLibBaseCryptoRouter: recognize the SM3 digest algorithm
[mirror_edk2.git] / SecurityPkg / Library / HashLibBaseCryptoRouter / HashLibBaseCryptoRouterCommon.c
CommitLineData
c1d93242 1/** @file\r
07309c3d 2 This is BaseCrypto router support function.\r
c1d93242 3\r
07309c3d 4Copyright (c) 2013 - 2016, Intel Corporation. All rights reserved. <BR>\r
289b714b 5SPDX-License-Identifier: BSD-2-Clause-Patent\r
c1d93242
JY
6\r
7**/\r
8\r
9#include <PiPei.h>\r
10#include <Library/BaseLib.h>\r
11#include <Library/BaseMemoryLib.h>\r
12#include <Library/Tpm2CommandLib.h>\r
13#include <Library/DebugLib.h>\r
14#include <Library/MemoryAllocationLib.h>\r
15#include <Library/HashLib.h>\r
1abfa4ce 16#include <Protocol/Tcg2Protocol.h>\r
c1d93242
JY
17\r
18typedef struct {\r
19 EFI_GUID Guid;\r
20 UINT32 Mask;\r
21} TPM2_HASH_MASK;\r
22\r
23TPM2_HASH_MASK mTpm2HashMask[] = {\r
1abfa4ce
JY
24 {HASH_ALGORITHM_SHA1_GUID, HASH_ALG_SHA1},\r
25 {HASH_ALGORITHM_SHA256_GUID, HASH_ALG_SHA256},\r
26 {HASH_ALGORITHM_SHA384_GUID, HASH_ALG_SHA384},\r
27 {HASH_ALGORITHM_SHA512_GUID, HASH_ALG_SHA512},\r
7c1126d3 28 {HASH_ALGORITHM_SM3_256_GUID, HASH_ALG_SM3_256},\r
c1d93242
JY
29};\r
30\r
31/**\r
32 The function get hash mask info from algorithm.\r
33\r
34 @param HashGuid Hash Guid\r
35\r
36 @return HashMask\r
37**/\r
38UINT32\r
39EFIAPI\r
40Tpm2GetHashMaskFromAlgo (\r
41 IN EFI_GUID *HashGuid\r
42 )\r
43{\r
44 UINTN Index;\r
45 for (Index = 0; Index < sizeof(mTpm2HashMask)/sizeof(mTpm2HashMask[0]); Index++) {\r
46 if (CompareGuid (HashGuid, &mTpm2HashMask[Index].Guid)) {\r
47 return mTpm2HashMask[Index].Mask;\r
48 }\r
49 }\r
50 return 0;\r
51}\r
52\r
53/**\r
54 The function set digest to digest list.\r
55\r
56 @param DigestList digest list\r
57 @param Digest digest data\r
58**/\r
59VOID\r
60EFIAPI\r
61Tpm2SetHashToDigestList (\r
62 IN OUT TPML_DIGEST_VALUES *DigestList,\r
63 IN TPML_DIGEST_VALUES *Digest\r
64 )\r
65{\r
66 CopyMem (\r
67 &DigestList->digests[DigestList->count],\r
68 &Digest->digests[0],\r
69 sizeof(Digest->digests[0])\r
70 );\r
71 DigestList->count ++;\r
72}\r