aboutsummaryrefslogtreecommitdiffstats
path: root/src/libpts/plugins/imc_attestation/imc_attestation.c
diff options
context:
space:
mode:
authorAndreas Steffen <andreas.steffen@strongswan.org>2012-10-14 17:37:00 +0200
committerAndreas Steffen <andreas.steffen@strongswan.org>2012-10-14 17:37:00 +0200
commit5f085d7e13f8247a918245fed89273e9f43381dd (patch)
treecc3a8ba05e4ebd8cefe306f54d95256c8a0b0038 /src/libpts/plugins/imc_attestation/imc_attestation.c
parent07a3dee937b61dcd05e78dcd9e7a416bf944eb83 (diff)
downloadstrongswan-5f085d7e13f8247a918245fed89273e9f43381dd.tar.bz2
strongswan-5f085d7e13f8247a918245fed89273e9f43381dd.tar.xz
allow registration of multiple message type
Diffstat (limited to 'src/libpts/plugins/imc_attestation/imc_attestation.c')
-rw-r--r--src/libpts/plugins/imc_attestation/imc_attestation.c41
1 files changed, 8 insertions, 33 deletions
diff --git a/src/libpts/plugins/imc_attestation/imc_attestation.c b/src/libpts/plugins/imc_attestation/imc_attestation.c
index 61d0d64f2..a2b118d23 100644
--- a/src/libpts/plugins/imc_attestation/imc_attestation.c
+++ b/src/libpts/plugins/imc_attestation/imc_attestation.c
@@ -42,11 +42,11 @@
static const char imc_name[] = "Attestation";
-#define IMC_VENDOR_ID PEN_TCG
-#define IMC_SUBTYPE PA_SUBTYPE_TCG_PTS
+static pen_type_t msg_types[] = {
+ { PEN_TCG, PA_SUBTYPE_TCG_PTS }
+};
static imc_agent_t *imc_attestation;
-static os_info_t *os;
/**
* Supported PTS measurement algorithms
@@ -76,22 +76,13 @@ TNC_Result TNC_IMC_Initialize(TNC_IMCID imc_id,
{
return TNC_RESULT_FATAL;
}
- imc_attestation = imc_agent_create(imc_name, IMC_VENDOR_ID, IMC_SUBTYPE,
- imc_id, actual_version);
+ imc_attestation = imc_agent_create(imc_name, msg_types, 1, imc_id,
+ actual_version);
if (!imc_attestation)
{
return TNC_RESULT_FATAL;
}
- os = os_info_create();
- if (!os)
- {
- imc_attestation->destroy(imc_attestation);
- imc_attestation = NULL;
-
- return TNC_RESULT_FATAL;
- }
-
libpts_init();
if (min_version > TNC_IFIMC_VERSION_1 || max_version < TNC_IFIMC_VERSION_1)
@@ -147,27 +138,13 @@ TNC_Result TNC_IMC_NotifyConnectionChange(TNC_IMCID imc_id,
TNC_Result TNC_IMC_BeginHandshake(TNC_IMCID imc_id,
TNC_ConnectionID connection_id)
{
- linked_list_t *attr_list;
- pa_tnc_attr_t *attr;
- TNC_Result result = TNC_RESULT_SUCCESS;
-
if (!imc_attestation)
{
DBG1(DBG_IMC, "IMC \"%s\" has not been initialized", imc_name);
return TNC_RESULT_NOT_INITIALIZED;
}
- attr_list = linked_list_create();
- attr = ietf_attr_product_info_create(0, 0, os->get_name(os));
- attr_list->insert_last(attr_list, attr);
- attr = ietf_attr_string_version_create(os->get_version(os),
- chunk_empty, chunk_empty);
- attr_list->insert_last(attr_list, attr);
- result = imc_attestation->send_message(imc_attestation, connection_id,
- FALSE, 0, TNC_IMVID_ANY, attr_list);
- attr_list->destroy(attr_list);
-
- return result;
+ return TNC_RESULT_SUCCESS;
}
static TNC_Result receive_message(TNC_IMCID imc_id,
@@ -272,7 +249,8 @@ static TNC_Result receive_message(TNC_IMCID imc_id,
if (result == TNC_RESULT_SUCCESS && attr_list->get_count(attr_list))
{
result = imc_attestation->send_message(imc_attestation, connection_id,
- FALSE, 0, TNC_IMVID_ANY, attr_list);
+ FALSE, 0, TNC_IMVID_ANY, PEN_TCG, PA_SUBTYPE_TCG_PTS,
+ attr_list);
}
attr_list->destroy(attr_list);
@@ -346,9 +324,6 @@ TNC_Result TNC_IMC_Terminate(TNC_IMCID imc_id)
imc_attestation->destroy(imc_attestation);
imc_attestation = NULL;
- os->destroy(os);
- os = NULL;
-
return TNC_RESULT_SUCCESS;
}