From da1d7815ef576a08593b7d6b28083a566ac78008 Mon Sep 17 00:00:00 2001 From: Andreas Steffen Date: Tue, 15 Sep 2020 12:32:05 +0200 Subject: [PATCH] tpm: TPM 2.0 supports SHA3 and CMAC --- src/libtpmtss/tpm_tss_tss2_names_v1.c | 1 + src/libtpmtss/tpm_tss_tss2_names_v2.c | 10 +++++++--- src/libtpmtss/tpm_tss_tss2_v2.c | 15 +++++++++++++++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/libtpmtss/tpm_tss_tss2_names_v1.c b/src/libtpmtss/tpm_tss_tss2_names_v1.c index a9cbe99d49..a706c0938f 100644 --- a/src/libtpmtss/tpm_tss_tss2_names_v1.c +++ b/src/libtpmtss/tpm_tss_tss2_names_v1.c @@ -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" diff --git a/src/libtpmtss/tpm_tss_tss2_names_v2.c b/src/libtpmtss/tpm_tss_tss2_names_v2.c index 2b48408c48..e306d7aedb 100644 --- a/src/libtpmtss/tpm_tss_tss2_names_v2.c +++ b/src/libtpmtss/tpm_tss_tss2_names_v2.c @@ -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", diff --git a/src/libtpmtss/tpm_tss_tss2_v2.c b/src/libtpmtss/tpm_tss_tss2_v2.c index fef32e16b7..8fc4e56485 100644 --- a/src/libtpmtss/tpm_tss_tss2_v2.c +++ b/src/libtpmtss/tpm_tss_tss2_v2.c @@ -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; -- 2.47.2