tpm: TPM 2.0 supports SHA3 and CMAC

This commit is contained in:
Andreas Steffen
2020-10-07 16:54:32 +02:00
parent 78015d14ac
commit da1d7815ef
3 changed files with 23 additions and 3 deletions
+1
View File
@@ -59,6 +59,7 @@ ENUM_NEXT(tpm_alg_id_names, TPM_ALG_SM3_256, TPM_ALG_ECMQV, TPM_ALG_NULL,
"OAEP", "OAEP",
"ECDSA", "ECDSA",
"ECDH", "ECDH",
"ECDAA",
"SM2", "SM2",
"ECSCHNORR", "ECSCHNORR",
"ECMQV" "ECMQV"
+7 -3
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", "KDF1_SP800_108",
"ECC" "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", "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", "CTR",
"OFB", "OFB",
"CBC", "CBC",
+15
View File
@@ -108,6 +108,12 @@ static TPM2_ALG_ID hash_alg_to_tpm_alg_id(hash_algorithm_t alg)
return TPM2_ALG_SHA384; return TPM2_ALG_SHA384;
case HASH_SHA512: case HASH_SHA512:
return TPM2_ALG_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: default:
return TPM2_ALG_ERROR; 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; return HASH_SHA384;
case TPM2_ALG_SHA512: case TPM2_ALG_SHA512:
return HASH_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: default:
return HASH_UNKNOWN; return HASH_UNKNOWN;
} }
@@ -722,6 +734,7 @@ METHOD(tpm_tss_t, extend_pcr, bool,
HASH_SIZE_SHA1); HASH_SIZE_SHA1);
break; break;
case HASH_SHA256: case HASH_SHA256:
case HASH_SHA3_256:
if (data.len != HASH_SIZE_SHA256) if (data.len != HASH_SIZE_SHA256)
{ {
return FALSE; return FALSE;
@@ -730,6 +743,7 @@ METHOD(tpm_tss_t, extend_pcr, bool,
HASH_SIZE_SHA256); HASH_SIZE_SHA256);
break; break;
case HASH_SHA384: case HASH_SHA384:
case HASH_SHA3_384:
if (data.len != HASH_SIZE_SHA384) if (data.len != HASH_SIZE_SHA384)
{ {
return FALSE; return FALSE;
@@ -738,6 +752,7 @@ METHOD(tpm_tss_t, extend_pcr, bool,
HASH_SIZE_SHA384); HASH_SIZE_SHA384);
break; break;
case HASH_SHA512: case HASH_SHA512:
case HASH_SHA3_512:
if (data.len != HASH_SIZE_SHA512) if (data.len != HASH_SIZE_SHA512)
{ {
return FALSE; return FALSE;