Disable mandatory ECP support for attestion
This commit is contained in:
@@ -66,6 +66,8 @@ TNC_Result TNC_IMC_Initialize(TNC_IMCID imc_id,
|
||||
TNC_Version max_version,
|
||||
TNC_Version *actual_version)
|
||||
{
|
||||
bool mandatory_dh_groups;
|
||||
|
||||
if (imc_attestation)
|
||||
{
|
||||
DBG1(DBG_IMC, "IMC \"%s\" has already been initialized", imc_name);
|
||||
@@ -78,8 +80,11 @@ TNC_Result TNC_IMC_Initialize(TNC_IMCID imc_id,
|
||||
return TNC_RESULT_FATAL;
|
||||
}
|
||||
|
||||
mandatory_dh_groups = lib->settings->get_bool(lib->settings,
|
||||
"%s.plugins.imc-attestation.mandatory_dh_groups", TRUE, lib->ns);
|
||||
|
||||
if (!pts_meas_algo_probe(&supported_algorithms) ||
|
||||
!pts_dh_group_probe(&supported_dh_groups))
|
||||
!pts_dh_group_probe(&supported_dh_groups, mandatory_dh_groups))
|
||||
{
|
||||
imc_attestation->destroy(imc_attestation);
|
||||
imc_attestation = NULL;
|
||||
|
||||
@@ -706,6 +706,7 @@ imv_agent_if_t *imv_attestation_agent_create(const char *name, TNC_IMVID id,
|
||||
private_imv_attestation_agent_t *this;
|
||||
imv_agent_t *agent;
|
||||
char *hash_alg, *dh_group, *cadir;
|
||||
bool mandatory_dh_groups;
|
||||
|
||||
agent = imv_agent_create(name, msg_types, countof(msg_types), id,
|
||||
actual_version);
|
||||
@@ -718,6 +719,8 @@ imv_agent_if_t *imv_attestation_agent_create(const char *name, TNC_IMVID id,
|
||||
"%s.plugins.imv-attestation.hash_algorithm", "sha256", lib->ns);
|
||||
dh_group = lib->settings->get_str(lib->settings,
|
||||
"%s.plugins.imv-attestation.dh_group", "ecp256", lib->ns);
|
||||
mandatory_dh_groups = lib->settings->get_bool(lib->settings,
|
||||
"%s.plugins.imv-attestation.mandatory_dh_groups", TRUE, lib->ns);
|
||||
cadir = lib->settings->get_str(lib->settings,
|
||||
"%s.plugins.imv-attestation.cadir", NULL, lib->ns);
|
||||
|
||||
@@ -742,7 +745,7 @@ imv_agent_if_t *imv_attestation_agent_create(const char *name, TNC_IMVID id,
|
||||
libpts_init();
|
||||
|
||||
if (!pts_meas_algo_probe(&this->supported_algorithms) ||
|
||||
!pts_dh_group_probe(&this->supported_dh_groups) ||
|
||||
!pts_dh_group_probe(&this->supported_dh_groups, mandatory_dh_groups) ||
|
||||
!pts_meas_algo_update(hash_alg, &this->supported_algorithms) ||
|
||||
!pts_dh_group_update(dh_group, &this->supported_dh_groups))
|
||||
{
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
/**
|
||||
* Described in header.
|
||||
*/
|
||||
bool pts_dh_group_probe(pts_dh_group_t *dh_groups)
|
||||
bool pts_dh_group_probe(pts_dh_group_t *dh_groups, bool mandatory_dh_groups)
|
||||
{
|
||||
enumerator_t *enumerator;
|
||||
diffie_hellman_group_t dh_group;
|
||||
@@ -68,14 +68,23 @@ bool pts_dh_group_probe(pts_dh_group_t *dh_groups)
|
||||
|
||||
if (*dh_groups & PTS_DH_GROUP_IKE19)
|
||||
{
|
||||
/* mandatory PTS DH group is available */
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
if (*dh_groups == PTS_DH_GROUP_NONE)
|
||||
{
|
||||
DBG1(DBG_PTS, "no PTS DH group available");
|
||||
return FALSE;
|
||||
}
|
||||
if (mandatory_dh_groups)
|
||||
{
|
||||
DBG1(DBG_PTS, format2, "mandatory", diffie_hellman_group_names,
|
||||
ECP_256_BIT);
|
||||
return FALSE;
|
||||
}
|
||||
return FALSE;
|
||||
|
||||
/* at least one optional PTS DH group is available */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -59,10 +59,13 @@ enum pts_dh_group_t {
|
||||
/**
|
||||
* Probe available PTS Diffie-Hellman groups
|
||||
*
|
||||
* @param dh_groups returns set of available DH groups
|
||||
* @return TRUE if mandatory DH groups are available
|
||||
* @param dh_groups returns set of available DH groups
|
||||
* @param mandatory_dh_groups if TRUE enforce mandatory PTS DH groups
|
||||
* @return TRUE if mandatory DH groups are available
|
||||
* or at least one optional DH group if
|
||||
* mandatory_dh_groups is set to FALSE.
|
||||
*/
|
||||
bool pts_dh_group_probe(pts_dh_group_t *dh_groups);
|
||||
bool pts_dh_group_probe(pts_dh_group_t *dh_groups, bool mandatory_dh_groups);
|
||||
|
||||
/**
|
||||
* Update supported Diffie-Hellman groups according to configuration
|
||||
|
||||
Reference in New Issue
Block a user