security/tpm/tss/tcg-2.0: Use tlcl_get_hash_size_from_algo() for hash size
mashal_TPMT_HA() uses size of SHA-256 hash. Use tlcll_get_hash_size_from_algo() to determince the hash size. BUG=N/A TEST=Build binary and verified logging on Facebook FBG-1701 Change-Id: I739260e13e9cd10a61d52e13e8741b12ec868d7f Signed-off-by: Frans Hendriks <fhendriks@eltan.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/33251 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Lance Zhao <lance.zhao@gmail.com> Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
This commit is contained in:
parent
63f73f2a60
commit
7e220cac2d
|
@ -79,6 +79,9 @@ uint32_t tlcl_get_capability(TPM_CAP capability, uint32_t property,
|
|||
*/
|
||||
void *tpm_process_command(TPM_CC command, void *command_body);
|
||||
|
||||
/* Return digest size of hash algorithm */
|
||||
uint16_t tlcl_get_hash_size_from_algo(TPMI_ALG_HASH hash_algo);
|
||||
|
||||
#endif
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -352,6 +352,38 @@ uint32_t tlcl_define_space(uint32_t space_index, size_t space_size,
|
|||
}
|
||||
}
|
||||
|
||||
uint16_t tlcl_get_hash_size_from_algo(TPMI_ALG_HASH hash_algo)
|
||||
{
|
||||
uint16_t value;
|
||||
|
||||
switch (hash_algo) {
|
||||
case TPM_ALG_ERROR:
|
||||
value = 1;
|
||||
break;
|
||||
case TPM_ALG_SHA1:
|
||||
value = SHA1_DIGEST_SIZE;
|
||||
break;
|
||||
case TPM_ALG_SHA256:
|
||||
value = SHA256_DIGEST_SIZE;
|
||||
break;
|
||||
case TPM_ALG_SHA384:
|
||||
value = SHA384_DIGEST_SIZE;
|
||||
break;
|
||||
case TPM_ALG_SHA512:
|
||||
value = SHA512_DIGEST_SIZE;
|
||||
break;
|
||||
case TPM_ALG_SM3_256:
|
||||
value = SM3_256_DIGEST_SIZE;
|
||||
break;
|
||||
default:
|
||||
printk(BIOS_SPEW, "%s: unknown hash algorithm %d\n", __func__,
|
||||
hash_algo);
|
||||
value = 0;
|
||||
};
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
uint32_t tlcl_disable_platform_hierarchy(void)
|
||||
{
|
||||
struct tpm2_response *response;
|
||||
|
|
|
@ -84,7 +84,7 @@ static int marshal_TPMT_HA(struct obuf *ob, TPMT_HA *tpmtha)
|
|||
|
||||
rc |= marshal_TPMI_ALG_HASH(ob, tpmtha->hashAlg);
|
||||
rc |= obuf_write(ob, tpmtha->digest.sha256,
|
||||
sizeof(tpmtha->digest.sha256));
|
||||
tlcl_get_hash_size_from_algo(tpmtha->hashAlg));
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
|
|
@ -38,12 +38,28 @@ typedef TPM_HANDLE TPMI_SH_AUTH_SESSION;
|
|||
typedef TPM_HANDLE TPM_RH;
|
||||
|
||||
/* Some hardcoded algorithm values. */
|
||||
/* Table 7 - TPM_ALG_ID Constants */
|
||||
#define TPM_ALG_ERROR ((TPM_ALG_ID)0x0000)
|
||||
#define TPM_ALG_HMAC ((TPM_ALG_ID)0x0005)
|
||||
#define TPM_ALG_NULL ((TPM_ALG_ID)0x0010)
|
||||
#define TPM_ALG_SHA1 ((TPM_ALG_ID)0x0004)
|
||||
#define TPM_ALG_SHA256 ((TPM_ALG_ID)0x000b)
|
||||
#define TPM_ALG_SHA384 ((TPM_ALG_ID)0x000C)
|
||||
#define TPM_ALG_SHA512 ((TPM_ALG_ID)0x000D)
|
||||
#define TPM_ALG_SM3_256 ((TPM_ALG_ID)0x0012)
|
||||
|
||||
/* Annex A Algorithm Constants */
|
||||
|
||||
/* Table 205 - Defines for SHA1 Hash Values */
|
||||
#define SHA1_DIGEST_SIZE 20
|
||||
/* Table 206 - Defines for SHA256 Hash Values */
|
||||
#define SHA256_DIGEST_SIZE 32
|
||||
/* Table 207 - Defines for SHA384 Hash Values */
|
||||
#define SHA384_DIGEST_SIZE 48
|
||||
/* Table 208 - Defines for SHA512 Hash Values */
|
||||
#define SHA512_DIGEST_SIZE 64
|
||||
/* Table 209 - Defines for SM3_256 Hash Values */
|
||||
#define SM3_256_DIGEST_SIZE 32
|
||||
|
||||
/* Some hardcoded hierarchies. */
|
||||
#define TPM_RH_NULL 0x40000007
|
||||
|
|
Loading…
Reference in New Issue