From b8ae1f4de75260f48e1459692bac0d1b84246cc1 Mon Sep 17 00:00:00 2001 From: Star Zeng Date: Fri, 18 Nov 2016 13:13:21 +0800 Subject: [PATCH] SecurityPkg TPM2: Add GetHashMaskFromAlgo() into Tpm2CommandLib Add GetHashMaskFromAlgo() into Tpm2CommandLib for coming consumer. Cc: Jiewen Yao Cc: Chao Zhang Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Star Zeng Reviewed-by : Chao Zhang Reviewed-by: Jiewen Yao --- SecurityPkg/Include/Library/Tpm2CommandLib.h | 13 +++++++ SecurityPkg/Library/Tpm2CommandLib/Tpm2Help.c | 34 ++++++++++++++++--- 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/SecurityPkg/Include/Library/Tpm2CommandLib.h b/SecurityPkg/Include/Library/Tpm2CommandLib.h index 85a4c65e02..699270f127 100644 --- a/SecurityPkg/Include/Library/Tpm2CommandLib.h +++ b/SecurityPkg/Include/Library/Tpm2CommandLib.h @@ -1006,6 +1006,19 @@ GetHashSizeFromAlgo ( IN TPMI_ALG_HASH HashAlgo ); +/** + Get hash mask from algorithm. + + @param[in] HashAlgo Hash algorithm + + @return Hash mask +**/ +UINT32 +EFIAPI +GetHashMaskFromAlgo ( + IN TPMI_ALG_HASH HashAlgo + ); + /** Return if hash alg is supported in HashAlgorithmMask. diff --git a/SecurityPkg/Library/Tpm2CommandLib/Tpm2Help.c b/SecurityPkg/Library/Tpm2CommandLib/Tpm2Help.c index 95d4f7c84c..9aa77af97a 100644 --- a/SecurityPkg/Library/Tpm2CommandLib/Tpm2Help.c +++ b/SecurityPkg/Library/Tpm2CommandLib/Tpm2Help.c @@ -22,14 +22,15 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. typedef struct { TPMI_ALG_HASH HashAlgo; UINT16 HashSize; + UINT32 HashMask; } INTERNAL_HASH_INFO; STATIC INTERNAL_HASH_INFO mHashInfo[] = { - {TPM_ALG_SHA1, SHA1_DIGEST_SIZE}, - {TPM_ALG_SHA256, SHA256_DIGEST_SIZE}, - {TPM_ALG_SM3_256, SM3_256_DIGEST_SIZE}, - {TPM_ALG_SHA384, SHA384_DIGEST_SIZE}, - {TPM_ALG_SHA512, SHA512_DIGEST_SIZE}, + {TPM_ALG_SHA1, SHA1_DIGEST_SIZE, HASH_ALG_SHA1}, + {TPM_ALG_SHA256, SHA256_DIGEST_SIZE, HASH_ALG_SHA256}, + {TPM_ALG_SM3_256, SM3_256_DIGEST_SIZE, HASH_ALG_SM3_256}, + {TPM_ALG_SHA384, SHA384_DIGEST_SIZE, HASH_ALG_SHA384}, + {TPM_ALG_SHA512, SHA512_DIGEST_SIZE, HASH_ALG_SHA512}, }; /** @@ -55,6 +56,29 @@ GetHashSizeFromAlgo ( return 0; } +/** + Get hash mask from algorithm. + + @param[in] HashAlgo Hash algorithm + + @return Hash mask +**/ +UINT32 +EFIAPI +GetHashMaskFromAlgo ( + IN TPMI_ALG_HASH HashAlgo + ) +{ + UINTN Index; + + for (Index = 0; Index < sizeof(mHashInfo)/sizeof(mHashInfo[0]); Index++) { + if (mHashInfo[Index].HashAlgo == HashAlgo) { + return mHashInfo[Index].HashMask; + } + } + return 0; +} + /** Copy AuthSessionIn to TPM2 command buffer.