tpm2: Allow to runtime-disable ECMQV

Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
This commit is contained in:
Stefan Berger 2023-06-26 08:09:57 -04:00 committed by Stefan Berger
parent 289611fada
commit c6e4785063
2 changed files with 14 additions and 3 deletions

View File

@ -139,7 +139,7 @@ static const struct {
[TPM_ALG_ECDAA] = OTHER(ALG_ECDAA, "ecdaa", false, 1),
[TPM_ALG_SM2] = SIGNING(ALG_SM2, "sm2", false, 1),
[TPM_ALG_ECSCHNORR] = SIGNING(ALG_ECSCHNORR, "ecschnorr", false, 1),
[TPM_ALG_ECMQV] = OTHER(ALG_ECMQV, "ecmqv", false, 1),
[TPM_ALG_ECMQV] = OTHER(ALG_ECMQV, "ecmqv", true, 1),
[TPM_ALG_KDF1_SP800_56A] = HASH(ALG_KDF1_SP800_56A, "kdf1-sp800-56a", false, 1),
[TPM_ALG_KDF2] = HASH(ALG_KDF2, "kdf2", false, 1),
[TPM_ALG_KDF1_SP800_108] = HASH(ALG_KDF1_SP800_108, "kdf1-sp800-108", false, 1),

View File

@ -1492,6 +1492,10 @@ TPMI_ECC_KEY_EXCHANGE_Unmarshal(TPMI_ECC_KEY_EXCHANGE *target, BYTE **buffer, IN
#if ALG_SM2
case TPM_ALG_SM2:
#endif
if (!RuntimeAlgorithmCheckEnabled(&g_RuntimeProfile.RuntimeAlgorithm, // libtpms added begin
*target)) {
rc = TPM_RC_SCHEME;
} // libtpms added end
break;
case TPM_ALG_NULL:
if (allowNull) {
@ -1499,9 +1503,11 @@ TPMI_ECC_KEY_EXCHANGE_Unmarshal(TPMI_ECC_KEY_EXCHANGE *target, BYTE **buffer, IN
}
default:
rc = TPM_RC_SCHEME;
*target = orig_target; // libtpms added
}
}
if (rc != TPM_RC_SUCCESS) { // libtpms added begin
*target = orig_target;
} // libtpms added end
return rc;
}
@ -3879,6 +3885,9 @@ TPMI_ALG_ECC_SCHEME_Unmarshal(TPMI_ALG_ECC_SCHEME *target, BYTE **buffer, INT32
#if ALG_ECMQV
case TPM_ALG_ECMQV:
#endif
if (!RuntimeAlgorithmCheckEnabled(&g_RuntimeProfile.RuntimeAlgorithm, *target)) { // libtpms added begin
rc = TPM_RC_SCHEME;
} // libtpms added end
break;
case TPM_ALG_NULL:
if (allowNull) {
@ -3886,9 +3895,11 @@ TPMI_ALG_ECC_SCHEME_Unmarshal(TPMI_ALG_ECC_SCHEME *target, BYTE **buffer, INT32
}
default:
rc = TPM_RC_SCHEME;
*target = orig_target; // libtpms added
}
}
if (rc != TPM_RC_SUCCESS) { // libtpms added begin
*target = orig_target;
} // libtpms added end
return rc;
}