aboutsummaryrefslogtreecommitdiffstats
path: root/src/libimcv/plugins/imv_attestation/imv_attestation.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libimcv/plugins/imv_attestation/imv_attestation.c')
-rw-r--r--src/libimcv/plugins/imv_attestation/imv_attestation.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/libimcv/plugins/imv_attestation/imv_attestation.c b/src/libimcv/plugins/imv_attestation/imv_attestation.c
index 10ee35ef0..87832a730 100644
--- a/src/libimcv/plugins/imv_attestation/imv_attestation.c
+++ b/src/libimcv/plugins/imv_attestation/imv_attestation.c
@@ -58,6 +58,11 @@ static pts_meas_algorithms_t supported_algorithms = PTS_MEAS_ALGO_NONE;
static pts_dh_group_t supported_dh_groups = PTS_DH_GROUP_NONE;
/**
+ * Supported PTS Diffie Hellman Groups
+ */
+static pts_dh_group_t supported_dh_groups = 0;
+
+/**
* PTS file measurement database
*/
static pts_database_t *pts_db;
@@ -92,6 +97,10 @@ TNC_Result TNC_IMV_Initialize(TNC_IMVID imv_id,
{
return TNC_RESULT_FATAL;
}
+ if (!pts_probe_dh_groups(&supported_dh_groups))
+ {
+ return TNC_RESULT_FATAL;
+ }
imv_attestation = imv_agent_create(imv_name, IMV_VENDOR_ID, IMV_SUBTYPE,
imv_id, actual_version);
if (!imv_attestation)
@@ -118,6 +127,24 @@ TNC_Result TNC_IMV_Initialize(TNC_IMVID imv_id,
return TNC_RESULT_FATAL;
}
+ /**
+ * Specify supported PTS Diffie Hellman Groups
+ *
+ * ike2: PTS_DH_GROUP_IKE2
+ * ike5: PTS_DH_GROUP_IKE2 | PTS_DH_GROUP_IKE5
+ * ike14: PTS_DH_GROUP_IKE2 | PTS_DH_GROUP_IKE5 | PTS_DH_GROUP_IKE14
+ * ike19: PTS_DH_GROUP_IKE2 | PTS_DH_GROUP_IKE5 | PTS_DH_GROUP_IKE14 | PTS_DH_GROUP_IKE19
+ * ike20: PTS_DH_GROUP_IKE2 | PTS_DH_GROUP_IKE5 | PTS_DH_GROUP_IKE14 | PTS_DH_GROUP_IKE19 | PTS_DH_GROUP_IKE20
+ *
+ * we expect the PTS-IMC to select the strongest supported group
+ */
+ dh_group = lib->settings->get_str(lib->settings,
+ "libimcv.plugins.imv-attestation.dh_group", "ike19");
+ if (!pts_update_supported_dh_groups(dh_group, &supported_dh_groups))
+ {
+ return TNC_RESULT_FATAL;
+ }
+
/* create a PTS credential manager */
pts_credmgr = credential_manager_create();