]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
tpm: TPM 2.0 supports SHA3 and CMAC
authorAndreas Steffen <andreas.steffen@strongswan.org>
Tue, 15 Sep 2020 10:32:05 +0000 (12:32 +0200)
committerAndreas Steffen <andreas.steffen@strongswan.org>
Wed, 7 Oct 2020 14:54:32 +0000 (16:54 +0200)
src/libtpmtss/tpm_tss_tss2_names_v1.c
src/libtpmtss/tpm_tss_tss2_names_v2.c
src/libtpmtss/tpm_tss_tss2_v2.c

index a9cbe99d49d9f2cfc87745524e4cf549a9fbd55b..a706c0938fc600cfe1fbfae3a7acb77f7068fe41 100644 (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"
index 2b48408c48a98bbbf98277bdb9e91100718f62a2..e306d7aedbe7788ff80f91a9be33388a06cafe28 100644 (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",
index fef32e16b7c833bdc1d5d1fa06c9e2f47904fc34..8fc4e5648564e01840cf85d84d84c0a32af9f7ff 100644 (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;