tpm: TPM 2.0 supports SHA3 and CMAC

This commit is contained in:
Andreas Steffen 2020-09-15 12:32:05 +02:00
parent 78015d14ac
commit da1d7815ef
3 changed files with 23 additions and 3 deletions

View File

@ -59,6 +59,7 @@ ENUM_NEXT(tpm_alg_id_names, TPM_ALG_SM3_256, TPM_ALG_ECMQV, TPM_ALG_NULL,
"OAEP",
"ECDSA",
"ECDH",
"ECDAA",
"SM2",
"ECSCHNORR",
"ECMQV"

View File

@ -62,11 +62,15 @@ ENUM_NEXT(tpm_alg_id_names, TPM2_ALG_KDF1_SP800_56A, TPM2_ALG_ECC, TPM2_ALG_ECMQ
"KDF1_SP800_108",
"ECC"
);
ENUM_NEXT(tpm_alg_id_names, TPM2_ALG_SYMCIPHER, TPM2_ALG_CAMELLIA, TPM2_ALG_ECC,
ENUM_NEXT(tpm_alg_id_names, TPM2_ALG_SYMCIPHER, TPM2_ALG_SHA3_512, TPM2_ALG_ECC,
"SYMCIPHER",
"CAMELLIA"
"CAMELLIA",
"SHA3_256",
"SHA3_384",
"SHA3_512"
);
ENUM_NEXT(tpm_alg_id_names, TPM2_ALG_CTR, TPM2_ALG_ECB, TPM2_ALG_CAMELLIA,
ENUM_NEXT(tpm_alg_id_names, TPM2_ALG_CMAC, TPM2_ALG_ECB, TPM2_ALG_SHA3_512,
"CMAC",
"CTR",
"OFB",
"CBC",

View File

@ -108,6 +108,12 @@ static TPM2_ALG_ID hash_alg_to_tpm_alg_id(hash_algorithm_t alg)
return TPM2_ALG_SHA384;
case HASH_SHA512:
return TPM2_ALG_SHA512;
case HASH_SHA3_256:
return TPM2_ALG_SHA3_256;
case HASH_SHA3_384:
return TPM2_ALG_SHA3_384;
case HASH_SHA3_512:
return TPM2_ALG_SHA3_512;
default:
return TPM2_ALG_ERROR;
}
@ -128,6 +134,12 @@ static hash_algorithm_t hash_alg_from_tpm_alg_id(TPM2_ALG_ID alg)
return HASH_SHA384;
case TPM2_ALG_SHA512:
return HASH_SHA512;
case TPM2_ALG_SHA3_256:
return HASH_SHA3_256;
case TPM2_ALG_SHA3_384:
return HASH_SHA3_384;
case TPM2_ALG_SHA3_512:
return HASH_SHA3_512;
default:
return HASH_UNKNOWN;
}
@ -722,6 +734,7 @@ METHOD(tpm_tss_t, extend_pcr, bool,
HASH_SIZE_SHA1);
break;
case HASH_SHA256:
case HASH_SHA3_256:
if (data.len != HASH_SIZE_SHA256)
{
return FALSE;
@ -730,6 +743,7 @@ METHOD(tpm_tss_t, extend_pcr, bool,
HASH_SIZE_SHA256);
break;
case HASH_SHA384:
case HASH_SHA3_384:
if (data.len != HASH_SIZE_SHA384)
{
return FALSE;
@ -738,6 +752,7 @@ METHOD(tpm_tss_t, extend_pcr, bool,
HASH_SIZE_SHA384);
break;
case HASH_SHA512:
case HASH_SHA3_512:
if (data.len != HASH_SIZE_SHA512)
{
return FALSE;