make IMC/IMV pairs independent of libcharon
authorAndreas Steffen <andreas.steffen@strongswan.org>
Wed, 1 Jun 2011 14:32:01 +0000 (16:32 +0200)
committerAndreas Steffen <andreas.steffen@strongswan.org>
Wed, 1 Jun 2011 14:33:44 +0000 (16:33 +0200)
50 files changed:
configure.in
src/Makefile.am
src/libcharon/Makefile.am
src/libcharon/plugins/tnc_imc/Makefile.am
src/libcharon/plugins/tnc_imc/tnc_imc_manager.c
src/libcharon/plugins/tnc_imv/Makefile.am
src/libcharon/plugins/tnc_imv/tnc_imv_manager.c
src/libcharon/plugins/tnc_imv/tnc_imv_recommendations.c
src/libcharon/plugins/tnccs_11/Makefile.am
src/libcharon/plugins/tnccs_11/messages/imc_imv_msg.h
src/libcharon/plugins/tnccs_11/messages/tnccs_preferred_language_msg.h
src/libcharon/plugins/tnccs_11/messages/tnccs_recommendation_msg.h
src/libcharon/plugins/tnccs_11/tnccs_11.c
src/libcharon/plugins/tnccs_20/Makefile.am
src/libcharon/plugins/tnccs_20/batch/pb_tnc_batch.c
src/libcharon/plugins/tnccs_20/messages/pb_assessment_result_msg.c
src/libcharon/plugins/tnccs_20/messages/pb_error_msg.c
src/libcharon/plugins/tnccs_20/messages/pb_pa_msg.c
src/libcharon/plugins/tnccs_20/tnccs_20.c
src/libcharon/tnc/imc/imc.h
src/libcharon/tnc/imv/imv.h
src/libcharon/tnc/imv/imv_recommendations.h
src/libcharon/tnc/pen/pen.c [deleted file]
src/libcharon/tnc/pen/pen.h [deleted file]
src/libcharon/tnc/tnccs/tnccs.h
src/libcharon/tnc/tncif.c [deleted file]
src/libcharon/tnc/tncif.h [deleted file]
src/libcharon/tnc/tncifimc.h [deleted file]
src/libcharon/tnc/tncifimv.c [deleted file]
src/libcharon/tnc/tncifimv.h [deleted file]
src/libimcv/Makefile.am
src/libimcv/imc/imc_agent.h
src/libimcv/imc/imc_state.h
src/libimcv/imv/imv_agent.h
src/libimcv/imv/imv_state.h
src/libimcv/ita/ita_attr_command.c
src/libimcv/pa_tnc/pa_tnc_attr.h
src/libimcv/plugins/imc_test/Makefile.am
src/libimcv/plugins/imc_test/imc_test.c
src/libimcv/plugins/imv_test/Makefile.am
src/libimcv/plugins/imv_test/imv_test.c
src/libstrongswan/Makefile.am
src/libstrongswan/pen/pen.c [new file with mode: 0644]
src/libstrongswan/pen/pen.h [new file with mode: 0644]
src/libtncif/Makefile.am [new file with mode: 0644]
src/libtncif/tncif.c [new file with mode: 0644]
src/libtncif/tncif.h [new file with mode: 0644]
src/libtncif/tncifimc.h [new file with mode: 0644]
src/libtncif/tncifimv.c [new file with mode: 0644]
src/libtncif/tncifimv.h [new file with mode: 0644]

index 89188b1..b223afd 100644 (file)
@@ -953,6 +953,7 @@ AM_CONDITIONAL(USE_CONFTEST, test x$conftest = xtrue)
 AM_CONDITIONAL(USE_LIBSTRONGSWAN, test x$charon = xtrue -o x$pluto = xtrue -o x$tools = xtrue -o x$conftest = xtrue)
 AM_CONDITIONAL(USE_LIBHYDRA, test x$charon = xtrue -o x$pluto = xtrue)
 AM_CONDITIONAL(USE_LIBCHARON, test x$charon = xtrue -o x$conftest = xtrue)
+AM_CONDITIONAL(USE_LIBTNCIF, test x$charon = xtrue -o x$conftest = xtrue -o x$imcv = xtrue)
 AM_CONDITIONAL(USE_FILE_CONFIG, test x$pluto = xtrue -o x$stroke = xtrue)
 AM_CONDITIONAL(USE_IPSEC_SCRIPT, test x$pluto = xtrue -o x$stroke = xtrue -o x$tools = xtrue -o x$conftest = xtrue)
 AM_CONDITIONAL(USE_LIBCAP, test x$capabilities = xlibcap)
@@ -1035,6 +1036,7 @@ AC_OUTPUT(
        src/libfreeswan/Makefile
        src/libsimaka/Makefile
        src/libtls/Makefile
+       src/libtncif/Makefile
        src/libimcv/Makefile
        src/libimcv/plugins/imc_test/Makefile
        src/libimcv/plugins/imv_test/Makefile
index 4bafcbd..3d56faa 100644 (file)
@@ -16,6 +16,10 @@ if USE_TLS
   SUBDIRS += libtls
 endif
 
+if USE_LIBTNCIF
+  SUBDIRS += libtncif
+endif
+
 if USE_IMCV
   SUBDIRS += libimcv
 endif
index 08f3981..27bea75 100644 (file)
@@ -90,11 +90,9 @@ sa/tasks/ike_reauth.c sa/tasks/ike_reauth.h \
 sa/tasks/ike_auth_lifetime.c sa/tasks/ike_auth_lifetime.h \
 sa/tasks/ike_vendor.c sa/tasks/ike_vendor.h \
 sa/tasks/task.c sa/tasks/task.h \
-tnc/tncif.h tnc/tncif.c tnc/tncifimc.h tnc/tncifimv.h tnc/tncifimv.c \
 tnc/imc/imc.h tnc/imc/imc_manager.h \
 tnc/imv/imv.h tnc/imv/imv_manager.h \
 tnc/imv/imv_recommendations.c tnc/imv/imv_recommendations.h \
-tnc/pen/pen.h tnc/pen/pen.c \
 tnc/tnccs/tnccs.c tnc/tnccs/tnccs.h \
 tnc/tnccs/tnccs_manager.c tnc/tnccs/tnccs_manager.h
 
@@ -104,7 +102,8 @@ INCLUDES = \
        -I${linux_headers} \
        -I$(top_srcdir)/src/libstrongswan \
        -I$(top_srcdir)/src/libhydra \
-       -I$(top_srcdir)/src/libcharon
+       -I$(top_srcdir)/src/libcharon \
+       -I$(top_srcdir)/src/libtncif 
 
 AM_CFLAGS = \
        -DIPSEC_DIR=\"${ipsecdir}\" \
index 2c55181..42a4ea8 100644 (file)
@@ -1,6 +1,6 @@
 
 INCLUDES = -I$(top_srcdir)/src/libstrongswan -I$(top_srcdir)/src/libhydra \
-       -I$(top_srcdir)/src/libcharon
+       -I$(top_srcdir)/src/libcharon -I$(top_srcdir)/src/libtncif
 
 AM_CFLAGS = -rdynamic
 
index ccf6aea..c8cc06e 100644 (file)
@@ -16,7 +16,8 @@
 #include "tnc_imc_manager.h"
 
 #include <tnc/imc/imc_manager.h>
-#include <tnc/tncifimc.h>
+
+#include <tncifimc.h>
 
 #include <debug.h>
 #include <library.h>
index 3ba283b..6ad7cff 100644 (file)
@@ -1,6 +1,6 @@
 
 INCLUDES = -I$(top_srcdir)/src/libstrongswan -I$(top_srcdir)/src/libhydra \
-       -I$(top_srcdir)/src/libcharon
+       -I$(top_srcdir)/src/libcharon -I$(top_srcdir)/src/libtncif
 
 AM_CFLAGS = -rdynamic
 
@@ -8,6 +8,7 @@ if MONOLITHIC
 noinst_LTLIBRARIES = libstrongswan-tnc-imv.la
 else
 plugin_LTLIBRARIES = libstrongswan-tnc-imv.la
+libstrongswan_tnc_imv_la_LIBADD = $(top_builddir)/src/libtncif/libtncif.la
 endif
 
 libstrongswan_tnc_imv_la_SOURCES = \
index 579ab06..28d7f73 100644 (file)
@@ -17,7 +17,8 @@
 #include "tnc_imv_recommendations.h"
 
 #include <tnc/imv/imv_manager.h>
-#include <tnc/tncifimv.h>
+
+#include <tncifimv.h>
 
 #include <debug.h>
 #include <daemon.h>
index 5cc6b0c..9603779 100644 (file)
@@ -14,7 +14,9 @@
 
 #include <debug.h>
 #include <daemon.h>
-#include <tnc/tncifimv.h>
+
+#include <tncifimv.h>
+
 #include <tnc/imv/imv.h>
 #include <tnc/imv/imv_recommendations.h>
 
index 1042c35..165346a 100644 (file)
@@ -1,6 +1,7 @@
 
 INCLUDES = -I$(top_srcdir)/src/libstrongswan -I$(top_srcdir)/src/libhydra \
-       -I$(top_srcdir)/src/libcharon -I$(top_srcdir)/src/libtls ${xml_CFLAGS}
+       -I$(top_srcdir)/src/libcharon -I$(top_srcdir)/src/libtls \
+       -I$(top_srcdir)/src/libtncif ${xml_CFLAGS}
 
 AM_CFLAGS = -rdynamic
 
@@ -10,6 +11,7 @@ if MONOLITHIC
 noinst_LTLIBRARIES = libstrongswan-tnccs-11.la
 else
 plugin_LTLIBRARIES = libstrongswan-tnccs-11.la
+libstrongswan_tnccs_11_la_LIBADD += $(top_builddir)/src/libtncif/libtncif.la
 endif
 
 libstrongswan_tnccs_11_la_SOURCES = \
index 02f0719..3477fa7 100644 (file)
@@ -25,7 +25,7 @@ typedef struct imc_imv_msg_t imc_imv_msg_t;
 
 #include "tnccs_msg.h"
 
-#include <tnc/tncif.h>
+#include <tncif.h>
 
 /**
  * Classs representing the PB-PA message type.
index d301ab2..c2de7fe 100644 (file)
@@ -25,7 +25,7 @@ typedef struct tnccs_preferred_language_msg_t tnccs_preferred_language_msg_t;
 
 #include "tnccs_msg.h"
 
-#include <tnc/tncif.h>
+#include <tncif.h>
 
 /**
  * Class representing the TNCCS-PreferredLanguage message type
index 685049e..3a67a3b 100644 (file)
@@ -25,7 +25,7 @@ typedef struct tnccs_recommendation_msg_t tnccs_recommendation_msg_t;
 
 #include "tnccs_msg.h"
 
-#include <tnc/tncifimv.h>
+#include <tncifimv.h>
 
 /**
  * Class representing the TNCCS-Recommendation message type
index 86f1c26..ed25764 100644 (file)
@@ -25,8 +25,6 @@
 #include <daemon.h>
 #include <debug.h>
 #include <threading/mutex.h>
-#include <tnc/tncif.h>
-#include <tnc/tncifimv.h>
 #include <tnc/tnccs/tnccs.h>
 
 typedef struct private_tnccs_11_t private_tnccs_11_t;
index a520086..9a1e915 100644 (file)
@@ -1,6 +1,7 @@
 
 INCLUDES = -I$(top_srcdir)/src/libstrongswan -I$(top_srcdir)/src/libhydra \
-       -I$(top_srcdir)/src/libcharon -I$(top_srcdir)/src/libtls
+       -I$(top_srcdir)/src/libcharon -I$(top_srcdir)/src/libtls \
+       -I$(top_srcdir)/src/libtncif
 
 AM_CFLAGS = -rdynamic
 
@@ -8,6 +9,7 @@ if MONOLITHIC
 noinst_LTLIBRARIES = libstrongswan-tnccs-20.la
 else
 plugin_LTLIBRARIES = libstrongswan-tnccs-20.la
+libstrongswan_tnccs_20_la_LIBADD = $(top_builddir)/src/libtncif/libtncif.la
 endif
 
 libstrongswan_tnccs_20_la_SOURCES = \
index 28c42c2..efc6d3e 100644 (file)
@@ -23,7 +23,7 @@
 #include <bio/bio_writer.h>
 #include <bio/bio_reader.h>
 #include <tnc/tnccs/tnccs.h>
-#include <tnc/pen/pen.h>
+#include <pen/pen.h>
 
 ENUM(pb_tnc_batch_type_names, PB_BATCH_CDATA, PB_BATCH_CLOSE,
        "CDATA",
index cb10e00..0d558c0 100644 (file)
 
 #include "pb_assessment_result_msg.h"
 
+#include <tncifimv.h>
+
 #include <bio/bio_writer.h>
 #include <bio/bio_reader.h>
-#include <tnc/tncifimv.h>
 #include <debug.h>
 
 typedef struct private_pb_assessment_result_msg_t private_pb_assessment_result_msg_t;
index 3251439..a90e734 100644 (file)
@@ -19,7 +19,7 @@
 #include <bio/bio_writer.h>
 #include <bio/bio_reader.h>
 #include <tnc/tnccs/tnccs.h>
-#include <tnc/pen/pen.h>
+#include <pen/pen.h>
 
 ENUM(pb_tnc_error_code_names, PB_ERROR_UNEXPECTED_BATCH_TYPE,
                                                          PB_ERROR_VERSION_NOT_SUPPORTED,
index 2f36e15..9126a0f 100644 (file)
@@ -20,7 +20,7 @@
 #include <bio/bio_writer.h>
 #include <bio/bio_reader.h>
 #include <tnc/tnccs/tnccs.h>
-#include <tnc/pen/pen.h>
+#include <pen/pen.h>
 #include <debug.h>
 
 ENUM(pa_tnc_subtype_names, PA_SUBTYPE_TESTING, PA_SUBTYPE_NEA_CLIENT,
index 3d7853d..df3fe85 100644 (file)
 #include <debug.h>
 #include <daemon.h>
 #include <threading/mutex.h>
-#include <tnc/tncif.h>
-#include <tnc/tncifimv.h>
 #include <tnc/tnccs/tnccs.h>
-#include <tnc/pen/pen.h>
+#include <pen/pen.h>
 
 typedef struct private_tnccs_20_t private_tnccs_20_t;
 
index fe8f25b..ddedf71 100644 (file)
@@ -24,7 +24,8 @@
 #ifndef IMC_H_
 #define IMC_H_
 
-#include <tnc/tncifimc.h>
+#include <tncifimc.h>
+
 #include <library.h>
 
 typedef struct imc_t imc_t;
index 26874ab..df338d4 100644 (file)
@@ -24,7 +24,8 @@
 #ifndef IMV_H_
 #define IMV_H_
 
-#include <tnc/tncifimv.h>
+#include <tncifimv.h>
+
 #include <library.h>
 
 typedef struct imv_t imv_t;
index 3a6e25c..071b6b3 100644 (file)
@@ -21,7 +21,7 @@
 #ifndef IMV_RECOMMENDATIONS_H_
 #define IMV_RECOMMENDATIONS_H_
 
-#include <tnc/tncifimv.h>
+#include <tncifimv.h>
 #include <library.h>
 
 typedef enum recommendation_policy_t recommendation_policy_t;
diff --git a/src/libcharon/tnc/pen/pen.c b/src/libcharon/tnc/pen/pen.c
deleted file mode 100644 (file)
index 3dd9221..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2011 Andreas Steffen
- * HSR Hochschule fuer Technik Rapperswil
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * for more details.
- */
-
-#include "pen.h"
-
-ENUM_BEGIN(pen_names, PEN_IETF, PEN_IETF,
-       "IETF");
-ENUM_NEXT(pen_names, PEN_MICROSOFT, PEN_MICROSOFT, PEN_IETF,
-       "Microsoft");
-ENUM_NEXT(pen_names, PEN_OSC, PEN_OSC, PEN_MICROSOFT,
-       "OSC");
-ENUM_NEXT(pen_names, PEN_TCG, PEN_TCG, PEN_OSC,
-       "TCG");
-ENUM_NEXT(pen_names, PEN_FHH, PEN_FHH, PEN_TCG,
-       "FHH");
-ENUM_NEXT(pen_names, PEN_ITA, PEN_ITA, PEN_FHH,
-       "ITA-HSR");
-ENUM_NEXT(pen_names, PEN_RESERVED, PEN_RESERVED, PEN_ITA,
-       "Reserved");
-ENUM_END(pen_names, PEN_RESERVED);
-
diff --git a/src/libcharon/tnc/pen/pen.h b/src/libcharon/tnc/pen/pen.h
deleted file mode 100644 (file)
index e6eb7fc..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2011 Andreas Steffen
- * HSR Hochschule fuer Technik Rapperswil
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * for more details.
- */
-
-/**
- * @defgroup pen pen
- * @ingroup tnc
- *
- * @defgroup pent pen
- * @{ @ingroup pen
- */
-
-#ifndef PEN_H_
-#define PEN_H_
-
-#include <library.h>
-
-typedef enum pen_t pen_t;
-
-enum pen_t {
-       PEN_IETF =              0x000000,       /*        0 */
-       PEN_MICROSOFT = 0x000137,       /*      311 */
-       PEN_OSC =               0x002358,       /*     9048 */
-       PEN_TCG =               0x005597,       /*    21911 */
-       PEN_FHH =               0x0080ab,       /*    32939 */
-       PEN_ITA =               0x00902a,       /*    36906 */
-       PEN_RESERVED =  0xffffff,       /* 16777215 */
-};
-
-/**
- * enum names for pen_t.
- */
-extern enum_name_t *pen_names;
-
-#endif /** PEN_H_ @}*/
index f97282c..dc8a422 100644 (file)
 #ifndef TNCCS_H_
 #define TNCCS_H_
 
-#include <tnc/tncif.h>
-#include <tnc/tncifimc.h>
-#include <tnc/tncifimv.h>
+#include <tncif.h>
+#include <tncifimc.h>
+#include <tncifimv.h>
+
 #include <library.h>
 
 typedef enum tnccs_type_t tnccs_type_t;
diff --git a/src/libcharon/tnc/tncif.c b/src/libcharon/tnc/tncif.c
deleted file mode 100644 (file)
index b195685..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (C) 2011 Andreas Steffen
- * HSR Hochschule fuer Technik Rapperswil
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * for more details.
- */
-
-#include "tncif.h"
-
-ENUM(TNC_Connection_State_names,
-        TNC_CONNECTION_STATE_CREATE, TNC_CONNECTION_STATE_DELETE,
-       "Create",
-       "Handshake",
-       "Allowed",
-       "Isolated",
-       "None",
-       "Delete",
-);
-
diff --git a/src/libcharon/tnc/tncif.h b/src/libcharon/tnc/tncif.h
deleted file mode 100644 (file)
index 42a0232..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-/* tncif.h
- *
- * Trusted Network Connect IF-IMV API version 1.20
- * Microsoft Windows DLL Platform Binding C Header
- * February 5, 2007
- *
- * Copyright(c) 2005-2007, Trusted Computing Group, Inc. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in
- *   the documentation and/or other materials provided with the
- *   distribution.
- * - Neither the name of the Trusted Computing Group nor the names of
- *   its contributors may be used to endorse or promote products
- *   derived from this software without specific prior written
- *   permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * Contact the Trusted Computing Group at
- * admin@trustedcomputinggroup.org for information on specification
- * licensing through membership agreements.
- *
- * Any marks and brands contained herein are the property of their
- * respective owners.
- *
- * Trusted Network Connect IF-IMC/IF-IMV API version 1.00 Revision 3
- * Microsoft Windows DLL Platform Binding C Header
- * Common definitions for IF-IMC and IF-IMV
- * extracted from tncifimc.h and tncifimv.h
- * Feb 12, 2007
- */
-
-/**
- * @defgroup tnc tnc
- * @ingroup libcharon
- *
- * @defgroup tncif tncif
- * @{ @ingroup tnc
- */
-
-#ifndef TNCIF_H_
-#define TNCIF_H_
-
-#include <library.h>
-
-/* Basic Types */
-typedef unsigned long TNC_UInt32;
-typedef unsigned char *TNC_BufferReference;
-
-/* Derived Types */
-typedef TNC_UInt32 TNC_ConnectionID;
-typedef TNC_UInt32 TNC_ConnectionState;
-typedef TNC_UInt32 TNC_RetryReason;
-typedef TNC_UInt32 TNC_MessageType;
-typedef TNC_MessageType *TNC_MessageTypeList;
-typedef TNC_UInt32 TNC_VendorID;
-typedef TNC_UInt32 TNC_MessageSubtype;
-typedef TNC_UInt32 TNC_Version;
-typedef TNC_UInt32 TNC_Result;
-
-/* Result Codes */
-#define TNC_RESULT_SUCCESS 0
-#define TNC_RESULT_NOT_INITIALIZED 1
-#define TNC_RESULT_ALREADY_INITIALIZED 2
-#define TNC_RESULT_NO_COMMON_VERSION 3
-#define TNC_RESULT_CANT_RETRY 4
-#define TNC_RESULT_WONT_RETRY 5
-#define TNC_RESULT_INVALID_PARAMETER 6
-#define TNC_RESULT_CANT_RESPOND 7
-#define TNC_RESULT_ILLEGAL_OPERATION 8
-#define TNC_RESULT_OTHER 9
-#define TNC_RESULT_FATAL 10
-
-/* Network Connection ID Values */
-#define TNC_CONNECTIONID_ANY 0xFFFFFFFF
-
-/* Network Connection State Values */
-#define TNC_CONNECTION_STATE_CREATE 0
-#define TNC_CONNECTION_STATE_HANDSHAKE 1
-#define TNC_CONNECTION_STATE_ACCESS_ALLOWED 2
-#define TNC_CONNECTION_STATE_ACCESS_ISOLATED 3
-#define TNC_CONNECTION_STATE_ACCESS_NONE 4
-#define TNC_CONNECTION_STATE_DELETE 5
-
-extern enum_name_t *TNC_Connection_State_names;
-
-/* Vendor ID Values */
-#define TNC_VENDORID_TCG 0
-#define TNC_VENDORID_ANY ((TNC_VendorID) 0xffffff)
-/* Message Subtype Values */
-#define TNC_SUBTYPE_ANY ((TNC_MessageSubtype) 0xff)
-
-#endif /** TNCIF_H_ @}*/
diff --git a/src/libcharon/tnc/tncifimc.h b/src/libcharon/tnc/tncifimc.h
deleted file mode 100644 (file)
index c6ddabd..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-/* tncifimc.h
- *
- * Trusted Network Connect IF-IMC API version 1.20 Revision 8
- * Microsoft Windows DLL Platform Binding C Header
- * February 5, 2007
- *
- * Copyright(c) 2005-2007, Trusted Computing Group, Inc. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in
- *   the documentation and/or other materials provided with the
- *   distribution.
- * - Neither the name of the Trusted Computing Group nor the names of
- *   its contributors may be used to endorse or promote products
- *   derived from this software without specific prior written
- *   permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * Contact the Trusted Computing Group at
- * admin@trustedcomputinggroup.org for information on specification
- * licensing through membership agreements.
- *
- * Any marks and brands contained herein are the property of their
- * respective owners.
- *
- */
-
-/**
- * @defgroup tncifimc tncifimc
- * @{ @ingroup tnc
- */
-
-#ifndef TNCIFIMC_H_
-#define TNCIFIMC_H_
-
-#include "tncif.h"
-
-/* Derived Types */
-
-typedef TNC_UInt32 TNC_IMCID;
-
-/* Function pointers */
-
-typedef TNC_Result (*TNC_IMC_InitializePointer)(
-    TNC_IMCID imcID,
-    TNC_Version minVersion,
-    TNC_Version maxVersion,
-    TNC_Version *pOutActualVersion);
-typedef TNC_Result (*TNC_IMC_NotifyConnectionChangePointer)(
-    TNC_IMCID imcID,
-    TNC_ConnectionID connectionID,
-    TNC_ConnectionState newState);
-typedef TNC_Result (*TNC_IMC_BeginHandshakePointer)(
-    TNC_IMCID imcID,
-    TNC_ConnectionID connectionID);
-typedef TNC_Result (*TNC_IMC_ReceiveMessagePointer)(
-    TNC_IMCID imcID,
-    TNC_ConnectionID connectionID,
-    TNC_BufferReference message,
-    TNC_UInt32 messageLength,
-    TNC_MessageType messageType);
-typedef TNC_Result (*TNC_IMC_BatchEndingPointer)(
-    TNC_IMCID imcID,
-    TNC_ConnectionID connectionID);
-typedef TNC_Result (*TNC_IMC_TerminatePointer)(
-    TNC_IMCID imcID);
-typedef TNC_Result (*TNC_TNCC_ReportMessageTypesPointer)(
-    TNC_IMCID imcID,
-    TNC_MessageTypeList supportedTypes,
-    TNC_UInt32 typeCount);
-typedef TNC_Result (*TNC_TNCC_SendMessagePointer)(
-    TNC_IMCID imcID,
-    TNC_ConnectionID connectionID,
-    TNC_BufferReference message,
-    TNC_UInt32 messageLength,
-    TNC_MessageType messageType);
-typedef TNC_Result (*TNC_TNCC_RequestHandshakeRetryPointer)(
-    TNC_IMCID imcID,
-    TNC_ConnectionID connectionID,
-    TNC_RetryReason reason);
-typedef TNC_Result (*TNC_TNCC_BindFunctionPointer)(
-    TNC_IMCID imcID,
-    char *functionName,
-    void **pOutfunctionPointer);
-typedef TNC_Result (*TNC_IMC_ProvideBindFunctionPointer)(
-    TNC_IMCID imcID,
-    TNC_TNCC_BindFunctionPointer bindFunction);
-
-#define TNC_IFIMC_VERSION_1 1
-
-/* Handshake Retry Reason Values */
-
-#define TNC_RETRY_REASON_IMC_REMEDIATION_COMPLETE 0
-#define TNC_RETRY_REASON_IMC_SERIOUS_EVENT 1
-#define TNC_RETRY_REASON_IMC_INFORMATIONAL_EVENT 2
-#define TNC_RETRY_REASON_IMC_PERIODIC 3
-/* reserved for TNC_RETRY_REASON_IMV_IMPORTANT_POLICY_CHANGE: 4 */
-/* reserved for TNC_RETRY_REASON_IMV_MINOR_POLICY_CHANGE: 5 */
-/* reserved for TNC_RETRY_REASON_IMV_SERIOUS_EVENT: 6 */
-/* reserved for TNC_RETRY_REASON_IMV_MINOR_EVENT: 7 */
-/* reserved for TNC_RETRY_REASON_IMV_PERIODIC: 8 */
-
-/* IMC Functions */
-
-TNC_Result TNC_IMC_Initialize(
-/*in*/  TNC_IMCID imcID,
-/*in*/  TNC_Version minVersion,
-/*in*/  TNC_Version maxVersion,
-/*out*/ TNC_Version *pOutActualVersion);
-
-TNC_Result TNC_IMC_NotifyConnectionChange(
-/*in*/  TNC_IMCID imcID,
-/*in*/  TNC_ConnectionID connectionID,
-/*in*/  TNC_ConnectionState newState);
-
-TNC_Result TNC_IMC_BeginHandshake(
-/*in*/  TNC_IMCID imcID,
-/*in*/  TNC_ConnectionID connectionID);
-
-TNC_Result TNC_IMC_ReceiveMessage(
-/*in*/  TNC_IMCID imcID,
-/*in*/  TNC_ConnectionID connectionID,
-/*in*/  TNC_BufferReference messageBuffer,
-/*in*/  TNC_UInt32 messageLength,
-/*in*/  TNC_MessageType messageType);
-
-TNC_Result TNC_IMC_BatchEnding(
-/*in*/  TNC_IMCID imcID,
-/*in*/  TNC_ConnectionID connectionID);
-
-TNC_Result TNC_IMC_Terminate(
-/*in*/  TNC_IMCID imcID);
-
-TNC_Result TNC_IMC_ProvideBindFunction(
-/*in*/  TNC_IMCID imcID,
-/*in*/  TNC_TNCC_BindFunctionPointer bindFunction);
-
-/* TNC Client Functions */
-
-TNC_Result TNC_TNCC_ReportMessageTypes(
-/*in*/  TNC_IMCID imcID,
-/*in*/  TNC_MessageTypeList supportedTypes,
-/*in*/  TNC_UInt32 typeCount);
-
-TNC_Result TNC_TNCC_SendMessage(
-/*in*/  TNC_IMCID imcID,
-/*in*/  TNC_ConnectionID connectionID,
-/*in*/  TNC_BufferReference message,
-/*in*/  TNC_UInt32 messageLength,
-/*in*/  TNC_MessageType messageType);
-
-TNC_Result TNC_TNCC_RequestHandshakeRetry(
-/*in*/  TNC_IMCID imcID,
-/*in*/  TNC_ConnectionID connectionID,
-/*in*/  TNC_RetryReason reason);
-
-TNC_Result TNC_TNCC_BindFunction(
-/*in*/  TNC_IMCID imcID,
-/*in*/  char *functionName,
-/*out*/ void **pOutfunctionPointer);
-
-#endif /** TNCIFIMC_H_ @}*/
diff --git a/src/libcharon/tnc/tncifimv.c b/src/libcharon/tnc/tncifimv.c
deleted file mode 100644 (file)
index fbfd565..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2010 Andreas Steffen
- * HSR Hochschule fuer Technik Rapperswil
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * for more details.
- */
-
-#include "tncifimv.h"
-
-ENUM(TNC_IMV_Action_Recommendation_names,
-       TNC_IMV_ACTION_RECOMMENDATION_ALLOW,
-       TNC_IMV_ACTION_RECOMMENDATION_NO_RECOMMENDATION,
-       "allow",
-       "no access",
-       "isolate",
-       "no recommendation"
-);
-
-ENUM(TNC_IMV_Evaluation_Result_names,
-       TNC_IMV_EVALUATION_RESULT_COMPLIANT,
-       TNC_IMV_EVALUATION_RESULT_DONT_KNOW,
-       "compliant",
-       "non-compliant minor",
-       "non-compliant major",
-       "error",
-       "don't know"
-);
-
diff --git a/src/libcharon/tnc/tncifimv.h b/src/libcharon/tnc/tncifimv.h
deleted file mode 100644 (file)
index 4ec1013..0000000
+++ /dev/null
@@ -1,248 +0,0 @@
-/* tncifimv.h
- *
- * Trusted Network Connect IF-IMV API version 1.20
- * Microsoft Windows DLL Platform Binding C Header
- * February 5, 2007
- *
- * Copyright(c) 2005-2007, Trusted Computing Group, Inc. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in
- *   the documentation and/or other materials provided with the
- *   distribution.
- * - Neither the name of the Trusted Computing Group nor the names of
- *   its contributors may be used to endorse or promote products
- *   derived from this software without specific prior written
- *   permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * Contact the Trusted Computing Group at
- * admin@trustedcomputinggroup.org for information on specification
- * licensing through membership agreements.
- *
- * Any marks and brands contained herein are the property of their
- * respective owners.
- */
-
-/**
- * @defgroup tncifimv tncifimv
- * @{ @ingroup tnc
- */
-
-#ifndef TNCIFIMV_H_
-#define TNCIFIMV_H_
-
-#include "tncif.h"
-
-#include <library.h>
-
-typedef TNC_UInt32 TNC_IMVID;
-typedef TNC_UInt32 TNC_IMV_Action_Recommendation;
-typedef TNC_UInt32 TNC_IMV_Evaluation_Result;
-typedef TNC_UInt32 TNC_AttributeID;
-
-/* Function pointers */
-
-typedef TNC_Result (*TNC_IMV_InitializePointer)(
-       TNC_IMVID imvID,
-       TNC_Version minVersion,
-       TNC_Version maxVersion,
-       TNC_Version *pOutActualVersion);
-typedef TNC_Result (*TNC_IMV_NotifyConnectionChangePointer)(
-       TNC_IMVID imvID,
-       TNC_ConnectionID connectionID,
-       TNC_ConnectionState newState);
-typedef TNC_Result (*TNC_IMV_ReceiveMessagePointer)(
-       TNC_IMVID imvID,
-       TNC_ConnectionID connectionID,
-       TNC_BufferReference message,
-       TNC_UInt32 messageLength,
-       TNC_MessageType messageType);
-typedef TNC_Result (*TNC_IMV_SolicitRecommendationPointer)(
-       TNC_IMVID imvID,
-       TNC_ConnectionID connectionID);
-typedef TNC_Result (*TNC_IMV_BatchEndingPointer)(
-       TNC_IMVID imvID,
-       TNC_ConnectionID connectionID);
-typedef TNC_Result (*TNC_IMV_TerminatePointer)(
-       TNC_IMVID imvID);
-typedef TNC_Result (*TNC_TNCS_ReportMessageTypesPointer)(
-       TNC_IMVID imvID,
-       TNC_MessageTypeList supportedTypes,
-       TNC_UInt32 typeCount);
-typedef TNC_Result (*TNC_TNCS_SendMessagePointer)(
-       TNC_IMVID imvID,
-       TNC_ConnectionID connectionID,
-       TNC_BufferReference message,
-       TNC_UInt32 messageLength,
-       TNC_MessageType messageType);
-typedef TNC_Result (*TNC_TNCS_RequestHandshakeRetryPointer)(
-       TNC_IMVID imvID,
-       TNC_ConnectionID connectionID,
-       TNC_RetryReason reason);
-typedef TNC_Result (*TNC_TNCS_ProvideRecommendationPointer)(
-       TNC_IMVID imvID,
-       TNC_ConnectionID connectionID,
-       TNC_IMV_Action_Recommendation recommendation,
-       TNC_IMV_Evaluation_Result evaluation);
-typedef TNC_Result (*TNC_TNCS_GetAttributePointer)(
-       TNC_IMVID imvID,
-TNC_ConnectionID connectionID,
-TNC_AttributeID attributeID,
-       TNC_UInt32 bufferLength,
-       TNC_BufferReference buffer,
-       TNC_UInt32 *pOutValueLength);
-typedef TNC_Result (*TNC_TNCS_SetAttributePointer)(
-       TNC_IMVID imvID,
-       TNC_ConnectionID connectionID,
-TNC_AttributeID attributeID,
-       TNC_UInt32 bufferLength,
-       TNC_BufferReference buffer);
-typedef TNC_Result (*TNC_TNCS_BindFunctionPointer)(
-       TNC_IMVID imvID,
-       char *functionName,
-       void **pOutfunctionPointer);
-typedef TNC_Result (*TNC_IMV_ProvideBindFunctionPointer)(
-       TNC_IMVID imvID,
-       TNC_TNCS_BindFunctionPointer bindFunction);
-
-/* Version Numbers */
-
-#define TNC_IFIMV_VERSION_1 1
-
-/* Handshake Retry Reason Values */
-
-/* reserved for TNC_RETRY_REASON_IMC_REMEDIATION_COMPLETE: 0 */
-/* reserved for TNC_RETRY_REASON_IMC_SERIOUS_EVENT: 1 */
-/* reserved for TNC_RETRY_REASON_IMC_INFORMATIONAL_EVENT: 2 */
-/* reserved for TNC_RETRY_REASON_IMC_PERIODIC: 3 */
-#define TNC_RETRY_REASON_IMV_IMPORTANT_POLICY_CHANGE 4
-#define TNC_RETRY_REASON_IMV_MINOR_POLICY_CHANGE 5
-#define TNC_RETRY_REASON_IMV_SERIOUS_EVENT 6
-#define TNC_RETRY_REASON_IMV_MINOR_EVENT 7
-#define TNC_RETRY_REASON_IMV_PERIODIC 8
-
-/* IMV Action Recommendation Values */
-
-#define TNC_IMV_ACTION_RECOMMENDATION_ALLOW 0
-#define TNC_IMV_ACTION_RECOMMENDATION_NO_ACCESS 1
-#define TNC_IMV_ACTION_RECOMMENDATION_ISOLATE 2
-#define TNC_IMV_ACTION_RECOMMENDATION_NO_RECOMMENDATION 3
-
-extern enum_name_t *TNC_IMV_Action_Recommendation_names;
-
-/* IMV Evaluation Result Values */
-
-#define TNC_IMV_EVALUATION_RESULT_COMPLIANT 0
-#define TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MINOR 1
-#define TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MAJOR 2
-#define TNC_IMV_EVALUATION_RESULT_ERROR 3
-#define TNC_IMV_EVALUATION_RESULT_DONT_KNOW 4
-
-extern enum_name_t *TNC_IMV_Evaluation_Result_names;
-
-/* Message Attribute ID Values */
-
-#define TNC_ATTRIBUTEID_PREFERRED_LANGUAGE ((TNC_AttributeID) 0x00000001)
-#define TNC_ATTRIBUTEID_REASON_STRING ((TNC_AttributeID) 0x00000002)
-#define TNC_ATTRIBUTEID_REASON_LANGUAGE ((TNC_AttributeID) 0x00000003)
-
-/* IMV Functions */
-
-TNC_Result TNC_IMV_Initialize(
-/*in*/  TNC_IMVID imvID,
-/*in*/  TNC_Version minVersion,
-/*in*/  TNC_Version maxVersion,
-/*in*/  TNC_Version *pOutActualVersion);
-
-TNC_Result TNC_IMV_NotifyConnectionChange(
-/*in*/  TNC_IMVID imvID,
-/*in*/  TNC_ConnectionID connectionID,
-/*in*/  TNC_ConnectionState newState);
-
-TNC_Result TNC_IMV_ReceiveMessage(
-/*in*/  TNC_IMVID imvID,
-/*in*/  TNC_ConnectionID connectionID,
-/*in*/  TNC_BufferReference messageBuffer,
-/*in*/  TNC_UInt32 messageLength,
-/*in*/  TNC_MessageType messageType);
-
-TNC_Result TNC_IMV_SolicitRecommendation(
-/*in*/  TNC_IMVID imvID,
-/*in*/  TNC_ConnectionID connectionID);
-
-TNC_Result TNC_IMV_BatchEnding(
-/*in*/  TNC_IMVID imvID,
-/*in*/  TNC_ConnectionID connectionID);
-
-TNC_Result TNC_IMV_Terminate(
-/*in*/  TNC_IMVID imvID);
-
-TNC_Result TNC_IMV_ProvideBindFunction(
-/*in*/  TNC_IMVID imvID,
-/*in*/  TNC_TNCS_BindFunctionPointer bindFunction);
-
-/* TNC Server Functions */
-
-TNC_Result TNC_TNCS_ReportMessageTypes(
-/*in*/  TNC_IMVID imvID,
-/*in*/  TNC_MessageTypeList supportedTypes,
-/*in*/  TNC_UInt32 typeCount);
-
-TNC_Result TNC_TNCS_SendMessage(
-/*in*/  TNC_IMVID imvID,
-/*in*/  TNC_ConnectionID connectionID,
-/*in*/  TNC_BufferReference message,
-/*in*/  TNC_UInt32 messageLength,
-/*in*/  TNC_MessageType messageType);
-
-TNC_Result TNC_TNCS_RequestHandshakeRetry(
-/*in*/  TNC_IMVID imvID,
-/*in*/  TNC_ConnectionID connectionID,
-/*in*/  TNC_RetryReason reason);
-
-TNC_Result TNC_TNCS_ProvideRecommendation(
-/*in*/  TNC_IMVID imvID,
-/*in*/  TNC_ConnectionID connectionID,
-/*in*/  TNC_IMV_Action_Recommendation recommendation,
-/*in*/  TNC_IMV_Evaluation_Result evaluation);
-
-TNC_Result TNC_TNCS_GetAttribute(
-/*in*/  TNC_IMVID imvID,
-/*in*/  TNC_ConnectionID connectionID,
-/*in*/  TNC_AttributeID attributeID,
-/*in*/  TNC_UInt32 bufferLength,
-/*out*/ TNC_BufferReference buffer,
-/*out*/ TNC_UInt32 *pOutValueLength);
-
-TNC_Result TNC_TNCS_SetAttribute(
-/*in*/  TNC_IMVID imvID,
-/*in*/  TNC_ConnectionID connectionID,
-/*in*/  TNC_AttributeID attributeID,
-/*in*/  TNC_UInt32 bufferLength,
-/*in*/  TNC_BufferReference buffer);
-
-TNC_Result TNC_TNCS_BindFunction(
-/*in*/  TNC_IMVID imvID,
-/*in*/  char *functionName,
-/*in*/  void **pOutfunctionPointer);
-
-#endif /** TNCIFIMV_H_ @}*/
index 4df819d..ffce14a 100644 (file)
@@ -1,8 +1,10 @@
 
-INCLUDES = -I$(top_srcdir)/src/libstrongswan -I$(top_srcdir)/src/libcharon
+INCLUDES = -I$(top_srcdir)/src/libstrongswan -I$(top_srcdir)/src/libtncif
 
 noinst_LTLIBRARIES = libimcv.la
 
+libimcv_la_LIBADD = $(top_builddir)/src/libtncif/libtncif.la
+
 libimcv_la_SOURCES = \
        imc/imc_agent.h imc/imc_agent.c imc/imc_state.h \
        imv/imv_agent.h imv/imv_agent.c imv/imv_state.h \
index 1112fb3..7c7ef73 100644 (file)
@@ -23,8 +23,9 @@
 
 #include "imc_state.h"
 
-#include <tnc/tncifimc.h>
-#include <tnc/pen/pen.h>
+#include <tncifimc.h>
+#include <pen/pen.h>
+
 #include <library.h>
 
 typedef struct imc_agent_t imc_agent_t;
index 9d46a57..73013f8 100644 (file)
@@ -21,7 +21,8 @@
 #ifndef IMC_STATE_H_
 #define IMC_STATE_H_
 
-#include <tnc/tncif.h>
+#include <tncif.h>
+
 #include <library.h>
 
 typedef struct imc_state_t imc_state_t;
index 04f1134..d0816b3 100644 (file)
@@ -23,8 +23,9 @@
 
 #include "imv_state.h"
 
-#include <tnc/tncifimv.h>
-#include <tnc/pen/pen.h>
+#include <tncifimv.h>
+#include <pen/pen.h>
+
 #include <library.h>
 
 typedef struct imv_agent_t imv_agent_t;
index dcf7af6..a255964 100644 (file)
@@ -21,7 +21,8 @@
 #ifndef IMV_STATE_H_
 #define IMV_STATE_H_
 
-#include <tnc/tncifimv.h>
+#include <tncifimv.h>
+
 #include <library.h>
 
 typedef struct imv_state_t imv_state_t;
index 33f97a1..d8c18b5 100644 (file)
@@ -14,7 +14,8 @@
 
 #include "ita_attr_command.h"
 
-#include <tnc/pen/pen.h>
+#include <pen/pen.h>
+
 #include <debug.h>
 
 typedef struct private_ita_attr_command_t private_ita_attr_command_t;
index b594a46..c1ef6d5 100644 (file)
@@ -24,7 +24,7 @@
 typedef struct pa_tnc_attr_t pa_tnc_attr_t;
 
 #include <library.h>
-#include <tnc/pen/pen.h>
+#include <pen/pen.h>
 
 /**
  * Interface for an RFC 5792 PA-TNC Posture Attribute.
index ffad4e4..893d32a 100644 (file)
@@ -1,12 +1,13 @@
 
-INCLUDES = -I$(top_srcdir)/src/libstrongswan -I$(top_srcdir)/src/libhydra \
-       -I$(top_srcdir)/src/libcharon -I$(top_srcdir)/src/libimcv
+INCLUDES = -I$(top_srcdir)/src/libstrongswan -I$(top_srcdir)/src/libtncif \
+       -I$(top_srcdir)/src/libimcv
 
 AM_CFLAGS = -rdynamic
 
 plugin_LTLIBRARIES = libstrongswan-imc-test.la
 
-libstrongswan_imc_test_la_LIBADD = $(top_builddir)/src/libimcv/libimcv.la
+libstrongswan_imc_test_la_LIBADD = $(top_builddir)/src/libimcv/libimcv.la \
+       $(top_builddir)/src/libstrongswan/libstrongswan.la
 
 libstrongswan_imc_test_la_SOURCES = imc_test.c \
        imc_test_state.h imc_test_state.c
index ad5d3b0..752a66e 100644 (file)
@@ -17,7 +17,9 @@
 #include <imc/imc_agent.h>
 #include <pa_tnc/pa_tnc_msg.h>
 #include <ita/ita_attr_command.h>
-#include <tnc/pen/pen.h>
+
+#include <pen/pen.h>
+
 #include <debug.h>
 
 /* IMC definitions */
index 59a6cc8..a3a3c1d 100644 (file)
@@ -1,12 +1,13 @@
 
-INCLUDES = -I$(top_srcdir)/src/libstrongswan -I$(top_srcdir)/src/libhydra \
-       -I$(top_srcdir)/src/libcharon -I$(top_srcdir)/src/libimcv
+INCLUDES = -I$(top_srcdir)/src/libstrongswan -I$(top_srcdir)/src/libtncif \
+       -I$(top_srcdir)/src/libimcv
 
 AM_CFLAGS = -rdynamic
 
 plugin_LTLIBRARIES = libstrongswan-imv-test.la
 
-libstrongswan_imv_test_la_LIBADD = $(top_builddir)/src/libimcv/libimcv.la
+libstrongswan_imv_test_la_LIBADD = $(top_builddir)/src/libimcv/libimcv.la \
+       $(top_builddir)/src/libstrongswan/libstrongswan.la
 
 libstrongswan_imv_test_la_SOURCES = imv_test.c \
        imv_test_state.h imv_test_state.c
index 92605d1..a6540c1 100644 (file)
@@ -17,7 +17,9 @@
 #include <imv/imv_agent.h>
 #include <pa_tnc/pa_tnc_msg.h>
 #include <ita/ita_attr_command.h>
-#include <tnc/pen/pen.h>
+
+#include <pen/pen.h>
+
 #include <debug.h>
 
 /* IMV definitions */
index 5ae8d73..6262700 100644 (file)
@@ -49,6 +49,7 @@ credentials/cert_validator.h \
 database/database.h database/database_factory.h database/database_factory.c \
 fetcher/fetcher.h fetcher/fetcher.c fetcher/fetcher_manager.h fetcher/fetcher_manager.c \
 eap/eap.h eap/eap.c \
+pen/pen.h pen/pen.c \
 plugins/plugin_loader.c plugins/plugin_loader.h plugins/plugin.h \
 processing/jobs/job.h processing/jobs/job.c \
 processing/jobs/callback_job.c processing/jobs/callback_job.h \
diff --git a/src/libstrongswan/pen/pen.c b/src/libstrongswan/pen/pen.c
new file mode 100644 (file)
index 0000000..3dd9221
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2011 Andreas Steffen
+ * HSR Hochschule fuer Technik Rapperswil
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ */
+
+#include "pen.h"
+
+ENUM_BEGIN(pen_names, PEN_IETF, PEN_IETF,
+       "IETF");
+ENUM_NEXT(pen_names, PEN_MICROSOFT, PEN_MICROSOFT, PEN_IETF,
+       "Microsoft");
+ENUM_NEXT(pen_names, PEN_OSC, PEN_OSC, PEN_MICROSOFT,
+       "OSC");
+ENUM_NEXT(pen_names, PEN_TCG, PEN_TCG, PEN_OSC,
+       "TCG");
+ENUM_NEXT(pen_names, PEN_FHH, PEN_FHH, PEN_TCG,
+       "FHH");
+ENUM_NEXT(pen_names, PEN_ITA, PEN_ITA, PEN_FHH,
+       "ITA-HSR");
+ENUM_NEXT(pen_names, PEN_RESERVED, PEN_RESERVED, PEN_ITA,
+       "Reserved");
+ENUM_END(pen_names, PEN_RESERVED);
+
diff --git a/src/libstrongswan/pen/pen.h b/src/libstrongswan/pen/pen.h
new file mode 100644 (file)
index 0000000..e6eb7fc
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2011 Andreas Steffen
+ * HSR Hochschule fuer Technik Rapperswil
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ */
+
+/**
+ * @defgroup pen pen
+ * @ingroup tnc
+ *
+ * @defgroup pent pen
+ * @{ @ingroup pen
+ */
+
+#ifndef PEN_H_
+#define PEN_H_
+
+#include <library.h>
+
+typedef enum pen_t pen_t;
+
+enum pen_t {
+       PEN_IETF =              0x000000,       /*        0 */
+       PEN_MICROSOFT = 0x000137,       /*      311 */
+       PEN_OSC =               0x002358,       /*     9048 */
+       PEN_TCG =               0x005597,       /*    21911 */
+       PEN_FHH =               0x0080ab,       /*    32939 */
+       PEN_ITA =               0x00902a,       /*    36906 */
+       PEN_RESERVED =  0xffffff,       /* 16777215 */
+};
+
+/**
+ * enum names for pen_t.
+ */
+extern enum_name_t *pen_names;
+
+#endif /** PEN_H_ @}*/
diff --git a/src/libtncif/Makefile.am b/src/libtncif/Makefile.am
new file mode 100644 (file)
index 0000000..689f509
--- /dev/null
@@ -0,0 +1,6 @@
+INCLUDES = -I$(top_srcdir)/src/libstrongswan
+
+noinst_LTLIBRARIES = libtncif.la
+
+libtncif_la_SOURCES = tncif.h tncif.c tncifimc.h tncifimv.h tncifimv.c
+
diff --git a/src/libtncif/tncif.c b/src/libtncif/tncif.c
new file mode 100644 (file)
index 0000000..b195685
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2011 Andreas Steffen
+ * HSR Hochschule fuer Technik Rapperswil
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ */
+
+#include "tncif.h"
+
+ENUM(TNC_Connection_State_names,
+        TNC_CONNECTION_STATE_CREATE, TNC_CONNECTION_STATE_DELETE,
+       "Create",
+       "Handshake",
+       "Allowed",
+       "Isolated",
+       "None",
+       "Delete",
+);
+
diff --git a/src/libtncif/tncif.h b/src/libtncif/tncif.h
new file mode 100644 (file)
index 0000000..42a0232
--- /dev/null
@@ -0,0 +1,111 @@
+/* tncif.h
+ *
+ * Trusted Network Connect IF-IMV API version 1.20
+ * Microsoft Windows DLL Platform Binding C Header
+ * February 5, 2007
+ *
+ * Copyright(c) 2005-2007, Trusted Computing Group, Inc. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in
+ *   the documentation and/or other materials provided with the
+ *   distribution.
+ * - Neither the name of the Trusted Computing Group nor the names of
+ *   its contributors may be used to endorse or promote products
+ *   derived from this software without specific prior written
+ *   permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Contact the Trusted Computing Group at
+ * admin@trustedcomputinggroup.org for information on specification
+ * licensing through membership agreements.
+ *
+ * Any marks and brands contained herein are the property of their
+ * respective owners.
+ *
+ * Trusted Network Connect IF-IMC/IF-IMV API version 1.00 Revision 3
+ * Microsoft Windows DLL Platform Binding C Header
+ * Common definitions for IF-IMC and IF-IMV
+ * extracted from tncifimc.h and tncifimv.h
+ * Feb 12, 2007
+ */
+
+/**
+ * @defgroup tnc tnc
+ * @ingroup libcharon
+ *
+ * @defgroup tncif tncif
+ * @{ @ingroup tnc
+ */
+
+#ifndef TNCIF_H_
+#define TNCIF_H_
+
+#include <library.h>
+
+/* Basic Types */
+typedef unsigned long TNC_UInt32;
+typedef unsigned char *TNC_BufferReference;
+
+/* Derived Types */
+typedef TNC_UInt32 TNC_ConnectionID;
+typedef TNC_UInt32 TNC_ConnectionState;
+typedef TNC_UInt32 TNC_RetryReason;
+typedef TNC_UInt32 TNC_MessageType;
+typedef TNC_MessageType *TNC_MessageTypeList;
+typedef TNC_UInt32 TNC_VendorID;
+typedef TNC_UInt32 TNC_MessageSubtype;
+typedef TNC_UInt32 TNC_Version;
+typedef TNC_UInt32 TNC_Result;
+
+/* Result Codes */
+#define TNC_RESULT_SUCCESS 0
+#define TNC_RESULT_NOT_INITIALIZED 1
+#define TNC_RESULT_ALREADY_INITIALIZED 2
+#define TNC_RESULT_NO_COMMON_VERSION 3
+#define TNC_RESULT_CANT_RETRY 4
+#define TNC_RESULT_WONT_RETRY 5
+#define TNC_RESULT_INVALID_PARAMETER 6
+#define TNC_RESULT_CANT_RESPOND 7
+#define TNC_RESULT_ILLEGAL_OPERATION 8
+#define TNC_RESULT_OTHER 9
+#define TNC_RESULT_FATAL 10
+
+/* Network Connection ID Values */
+#define TNC_CONNECTIONID_ANY 0xFFFFFFFF
+
+/* Network Connection State Values */
+#define TNC_CONNECTION_STATE_CREATE 0
+#define TNC_CONNECTION_STATE_HANDSHAKE 1
+#define TNC_CONNECTION_STATE_ACCESS_ALLOWED 2
+#define TNC_CONNECTION_STATE_ACCESS_ISOLATED 3
+#define TNC_CONNECTION_STATE_ACCESS_NONE 4
+#define TNC_CONNECTION_STATE_DELETE 5
+
+extern enum_name_t *TNC_Connection_State_names;
+
+/* Vendor ID Values */
+#define TNC_VENDORID_TCG 0
+#define TNC_VENDORID_ANY ((TNC_VendorID) 0xffffff)
+/* Message Subtype Values */
+#define TNC_SUBTYPE_ANY ((TNC_MessageSubtype) 0xff)
+
+#endif /** TNCIF_H_ @}*/
diff --git a/src/libtncif/tncifimc.h b/src/libtncif/tncifimc.h
new file mode 100644 (file)
index 0000000..c6ddabd
--- /dev/null
@@ -0,0 +1,180 @@
+/* tncifimc.h
+ *
+ * Trusted Network Connect IF-IMC API version 1.20 Revision 8
+ * Microsoft Windows DLL Platform Binding C Header
+ * February 5, 2007
+ *
+ * Copyright(c) 2005-2007, Trusted Computing Group, Inc. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in
+ *   the documentation and/or other materials provided with the
+ *   distribution.
+ * - Neither the name of the Trusted Computing Group nor the names of
+ *   its contributors may be used to endorse or promote products
+ *   derived from this software without specific prior written
+ *   permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Contact the Trusted Computing Group at
+ * admin@trustedcomputinggroup.org for information on specification
+ * licensing through membership agreements.
+ *
+ * Any marks and brands contained herein are the property of their
+ * respective owners.
+ *
+ */
+
+/**
+ * @defgroup tncifimc tncifimc
+ * @{ @ingroup tnc
+ */
+
+#ifndef TNCIFIMC_H_
+#define TNCIFIMC_H_
+
+#include "tncif.h"
+
+/* Derived Types */
+
+typedef TNC_UInt32 TNC_IMCID;
+
+/* Function pointers */
+
+typedef TNC_Result (*TNC_IMC_InitializePointer)(
+    TNC_IMCID imcID,
+    TNC_Version minVersion,
+    TNC_Version maxVersion,
+    TNC_Version *pOutActualVersion);
+typedef TNC_Result (*TNC_IMC_NotifyConnectionChangePointer)(
+    TNC_IMCID imcID,
+    TNC_ConnectionID connectionID,
+    TNC_ConnectionState newState);
+typedef TNC_Result (*TNC_IMC_BeginHandshakePointer)(
+    TNC_IMCID imcID,
+    TNC_ConnectionID connectionID);
+typedef TNC_Result (*TNC_IMC_ReceiveMessagePointer)(
+    TNC_IMCID imcID,
+    TNC_ConnectionID connectionID,
+    TNC_BufferReference message,
+    TNC_UInt32 messageLength,
+    TNC_MessageType messageType);
+typedef TNC_Result (*TNC_IMC_BatchEndingPointer)(
+    TNC_IMCID imcID,
+    TNC_ConnectionID connectionID);
+typedef TNC_Result (*TNC_IMC_TerminatePointer)(
+    TNC_IMCID imcID);
+typedef TNC_Result (*TNC_TNCC_ReportMessageTypesPointer)(
+    TNC_IMCID imcID,
+    TNC_MessageTypeList supportedTypes,
+    TNC_UInt32 typeCount);
+typedef TNC_Result (*TNC_TNCC_SendMessagePointer)(
+    TNC_IMCID imcID,
+    TNC_ConnectionID connectionID,
+    TNC_BufferReference message,
+    TNC_UInt32 messageLength,
+    TNC_MessageType messageType);
+typedef TNC_Result (*TNC_TNCC_RequestHandshakeRetryPointer)(
+    TNC_IMCID imcID,
+    TNC_ConnectionID connectionID,
+    TNC_RetryReason reason);
+typedef TNC_Result (*TNC_TNCC_BindFunctionPointer)(
+    TNC_IMCID imcID,
+    char *functionName,
+    void **pOutfunctionPointer);
+typedef TNC_Result (*TNC_IMC_ProvideBindFunctionPointer)(
+    TNC_IMCID imcID,
+    TNC_TNCC_BindFunctionPointer bindFunction);
+
+#define TNC_IFIMC_VERSION_1 1
+
+/* Handshake Retry Reason Values */
+
+#define TNC_RETRY_REASON_IMC_REMEDIATION_COMPLETE 0
+#define TNC_RETRY_REASON_IMC_SERIOUS_EVENT 1
+#define TNC_RETRY_REASON_IMC_INFORMATIONAL_EVENT 2
+#define TNC_RETRY_REASON_IMC_PERIODIC 3
+/* reserved for TNC_RETRY_REASON_IMV_IMPORTANT_POLICY_CHANGE: 4 */
+/* reserved for TNC_RETRY_REASON_IMV_MINOR_POLICY_CHANGE: 5 */
+/* reserved for TNC_RETRY_REASON_IMV_SERIOUS_EVENT: 6 */
+/* reserved for TNC_RETRY_REASON_IMV_MINOR_EVENT: 7 */
+/* reserved for TNC_RETRY_REASON_IMV_PERIODIC: 8 */
+
+/* IMC Functions */
+
+TNC_Result TNC_IMC_Initialize(
+/*in*/  TNC_IMCID imcID,
+/*in*/  TNC_Version minVersion,
+/*in*/  TNC_Version maxVersion,
+/*out*/ TNC_Version *pOutActualVersion);
+
+TNC_Result TNC_IMC_NotifyConnectionChange(
+/*in*/  TNC_IMCID imcID,
+/*in*/  TNC_ConnectionID connectionID,
+/*in*/  TNC_ConnectionState newState);
+
+TNC_Result TNC_IMC_BeginHandshake(
+/*in*/  TNC_IMCID imcID,
+/*in*/  TNC_ConnectionID connectionID);
+
+TNC_Result TNC_IMC_ReceiveMessage(
+/*in*/  TNC_IMCID imcID,
+/*in*/  TNC_ConnectionID connectionID,
+/*in*/  TNC_BufferReference messageBuffer,
+/*in*/  TNC_UInt32 messageLength,
+/*in*/  TNC_MessageType messageType);
+
+TNC_Result TNC_IMC_BatchEnding(
+/*in*/  TNC_IMCID imcID,
+/*in*/  TNC_ConnectionID connectionID);
+
+TNC_Result TNC_IMC_Terminate(
+/*in*/  TNC_IMCID imcID);
+
+TNC_Result TNC_IMC_ProvideBindFunction(
+/*in*/  TNC_IMCID imcID,
+/*in*/  TNC_TNCC_BindFunctionPointer bindFunction);
+
+/* TNC Client Functions */
+
+TNC_Result TNC_TNCC_ReportMessageTypes(
+/*in*/  TNC_IMCID imcID,
+/*in*/  TNC_MessageTypeList supportedTypes,
+/*in*/  TNC_UInt32 typeCount);
+
+TNC_Result TNC_TNCC_SendMessage(
+/*in*/  TNC_IMCID imcID,
+/*in*/  TNC_ConnectionID connectionID,
+/*in*/  TNC_BufferReference message,
+/*in*/  TNC_UInt32 messageLength,
+/*in*/  TNC_MessageType messageType);
+
+TNC_Result TNC_TNCC_RequestHandshakeRetry(
+/*in*/  TNC_IMCID imcID,
+/*in*/  TNC_ConnectionID connectionID,
+/*in*/  TNC_RetryReason reason);
+
+TNC_Result TNC_TNCC_BindFunction(
+/*in*/  TNC_IMCID imcID,
+/*in*/  char *functionName,
+/*out*/ void **pOutfunctionPointer);
+
+#endif /** TNCIFIMC_H_ @}*/
diff --git a/src/libtncif/tncifimv.c b/src/libtncif/tncifimv.c
new file mode 100644 (file)
index 0000000..fbfd565
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2010 Andreas Steffen
+ * HSR Hochschule fuer Technik Rapperswil
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ */
+
+#include "tncifimv.h"
+
+ENUM(TNC_IMV_Action_Recommendation_names,
+       TNC_IMV_ACTION_RECOMMENDATION_ALLOW,
+       TNC_IMV_ACTION_RECOMMENDATION_NO_RECOMMENDATION,
+       "allow",
+       "no access",
+       "isolate",
+       "no recommendation"
+);
+
+ENUM(TNC_IMV_Evaluation_Result_names,
+       TNC_IMV_EVALUATION_RESULT_COMPLIANT,
+       TNC_IMV_EVALUATION_RESULT_DONT_KNOW,
+       "compliant",
+       "non-compliant minor",
+       "non-compliant major",
+       "error",
+       "don't know"
+);
+
diff --git a/src/libtncif/tncifimv.h b/src/libtncif/tncifimv.h
new file mode 100644 (file)
index 0000000..4ec1013
--- /dev/null
@@ -0,0 +1,248 @@
+/* tncifimv.h
+ *
+ * Trusted Network Connect IF-IMV API version 1.20
+ * Microsoft Windows DLL Platform Binding C Header
+ * February 5, 2007
+ *
+ * Copyright(c) 2005-2007, Trusted Computing Group, Inc. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in
+ *   the documentation and/or other materials provided with the
+ *   distribution.
+ * - Neither the name of the Trusted Computing Group nor the names of
+ *   its contributors may be used to endorse or promote products
+ *   derived from this software without specific prior written
+ *   permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Contact the Trusted Computing Group at
+ * admin@trustedcomputinggroup.org for information on specification
+ * licensing through membership agreements.
+ *
+ * Any marks and brands contained herein are the property of their
+ * respective owners.
+ */
+
+/**
+ * @defgroup tncifimv tncifimv
+ * @{ @ingroup tnc
+ */
+
+#ifndef TNCIFIMV_H_
+#define TNCIFIMV_H_
+
+#include "tncif.h"
+
+#include <library.h>
+
+typedef TNC_UInt32 TNC_IMVID;
+typedef TNC_UInt32 TNC_IMV_Action_Recommendation;
+typedef TNC_UInt32 TNC_IMV_Evaluation_Result;
+typedef TNC_UInt32 TNC_AttributeID;
+
+/* Function pointers */
+
+typedef TNC_Result (*TNC_IMV_InitializePointer)(
+       TNC_IMVID imvID,
+       TNC_Version minVersion,
+       TNC_Version maxVersion,
+       TNC_Version *pOutActualVersion);
+typedef TNC_Result (*TNC_IMV_NotifyConnectionChangePointer)(
+       TNC_IMVID imvID,
+       TNC_ConnectionID connectionID,
+       TNC_ConnectionState newState);
+typedef TNC_Result (*TNC_IMV_ReceiveMessagePointer)(
+       TNC_IMVID imvID,
+       TNC_ConnectionID connectionID,
+       TNC_BufferReference message,
+       TNC_UInt32 messageLength,
+       TNC_MessageType messageType);
+typedef TNC_Result (*TNC_IMV_SolicitRecommendationPointer)(
+       TNC_IMVID imvID,
+       TNC_ConnectionID connectionID);
+typedef TNC_Result (*TNC_IMV_BatchEndingPointer)(
+       TNC_IMVID imvID,
+       TNC_ConnectionID connectionID);
+typedef TNC_Result (*TNC_IMV_TerminatePointer)(
+       TNC_IMVID imvID);
+typedef TNC_Result (*TNC_TNCS_ReportMessageTypesPointer)(
+       TNC_IMVID imvID,
+       TNC_MessageTypeList supportedTypes,
+       TNC_UInt32 typeCount);
+typedef TNC_Result (*TNC_TNCS_SendMessagePointer)(
+       TNC_IMVID imvID,
+       TNC_ConnectionID connectionID,
+       TNC_BufferReference message,
+       TNC_UInt32 messageLength,
+       TNC_MessageType messageType);
+typedef TNC_Result (*TNC_TNCS_RequestHandshakeRetryPointer)(
+       TNC_IMVID imvID,
+       TNC_ConnectionID connectionID,
+       TNC_RetryReason reason);
+typedef TNC_Result (*TNC_TNCS_ProvideRecommendationPointer)(
+       TNC_IMVID imvID,
+       TNC_ConnectionID connectionID,
+       TNC_IMV_Action_Recommendation recommendation,
+       TNC_IMV_Evaluation_Result evaluation);
+typedef TNC_Result (*TNC_TNCS_GetAttributePointer)(
+       TNC_IMVID imvID,
+TNC_ConnectionID connectionID,
+TNC_AttributeID attributeID,
+       TNC_UInt32 bufferLength,
+       TNC_BufferReference buffer,
+       TNC_UInt32 *pOutValueLength);
+typedef TNC_Result (*TNC_TNCS_SetAttributePointer)(
+       TNC_IMVID imvID,
+       TNC_ConnectionID connectionID,
+TNC_AttributeID attributeID,
+       TNC_UInt32 bufferLength,
+       TNC_BufferReference buffer);
+typedef TNC_Result (*TNC_TNCS_BindFunctionPointer)(
+       TNC_IMVID imvID,
+       char *functionName,
+       void **pOutfunctionPointer);
+typedef TNC_Result (*TNC_IMV_ProvideBindFunctionPointer)(
+       TNC_IMVID imvID,
+       TNC_TNCS_BindFunctionPointer bindFunction);
+
+/* Version Numbers */
+
+#define TNC_IFIMV_VERSION_1 1
+
+/* Handshake Retry Reason Values */
+
+/* reserved for TNC_RETRY_REASON_IMC_REMEDIATION_COMPLETE: 0 */
+/* reserved for TNC_RETRY_REASON_IMC_SERIOUS_EVENT: 1 */
+/* reserved for TNC_RETRY_REASON_IMC_INFORMATIONAL_EVENT: 2 */
+/* reserved for TNC_RETRY_REASON_IMC_PERIODIC: 3 */
+#define TNC_RETRY_REASON_IMV_IMPORTANT_POLICY_CHANGE 4
+#define TNC_RETRY_REASON_IMV_MINOR_POLICY_CHANGE 5
+#define TNC_RETRY_REASON_IMV_SERIOUS_EVENT 6
+#define TNC_RETRY_REASON_IMV_MINOR_EVENT 7
+#define TNC_RETRY_REASON_IMV_PERIODIC 8
+
+/* IMV Action Recommendation Values */
+
+#define TNC_IMV_ACTION_RECOMMENDATION_ALLOW 0
+#define TNC_IMV_ACTION_RECOMMENDATION_NO_ACCESS 1
+#define TNC_IMV_ACTION_RECOMMENDATION_ISOLATE 2
+#define TNC_IMV_ACTION_RECOMMENDATION_NO_RECOMMENDATION 3
+
+extern enum_name_t *TNC_IMV_Action_Recommendation_names;
+
+/* IMV Evaluation Result Values */
+
+#define TNC_IMV_EVALUATION_RESULT_COMPLIANT 0
+#define TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MINOR 1
+#define TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MAJOR 2
+#define TNC_IMV_EVALUATION_RESULT_ERROR 3
+#define TNC_IMV_EVALUATION_RESULT_DONT_KNOW 4
+
+extern enum_name_t *TNC_IMV_Evaluation_Result_names;
+
+/* Message Attribute ID Values */
+
+#define TNC_ATTRIBUTEID_PREFERRED_LANGUAGE ((TNC_AttributeID) 0x00000001)
+#define TNC_ATTRIBUTEID_REASON_STRING ((TNC_AttributeID) 0x00000002)
+#define TNC_ATTRIBUTEID_REASON_LANGUAGE ((TNC_AttributeID) 0x00000003)
+
+/* IMV Functions */
+
+TNC_Result TNC_IMV_Initialize(
+/*in*/  TNC_IMVID imvID,
+/*in*/  TNC_Version minVersion,
+/*in*/  TNC_Version maxVersion,
+/*in*/  TNC_Version *pOutActualVersion);
+
+TNC_Result TNC_IMV_NotifyConnectionChange(
+/*in*/  TNC_IMVID imvID,
+/*in*/  TNC_ConnectionID connectionID,
+/*in*/  TNC_ConnectionState newState);
+
+TNC_Result TNC_IMV_ReceiveMessage(
+/*in*/  TNC_IMVID imvID,
+/*in*/  TNC_ConnectionID connectionID,
+/*in*/  TNC_BufferReference messageBuffer,
+/*in*/  TNC_UInt32 messageLength,
+/*in*/  TNC_MessageType messageType);
+
+TNC_Result TNC_IMV_SolicitRecommendation(
+/*in*/  TNC_IMVID imvID,
+/*in*/  TNC_ConnectionID connectionID);
+
+TNC_Result TNC_IMV_BatchEnding(
+/*in*/  TNC_IMVID imvID,
+/*in*/  TNC_ConnectionID connectionID);
+
+TNC_Result TNC_IMV_Terminate(
+/*in*/  TNC_IMVID imvID);
+
+TNC_Result TNC_IMV_ProvideBindFunction(
+/*in*/  TNC_IMVID imvID,
+/*in*/  TNC_TNCS_BindFunctionPointer bindFunction);
+
+/* TNC Server Functions */
+
+TNC_Result TNC_TNCS_ReportMessageTypes(
+/*in*/  TNC_IMVID imvID,
+/*in*/  TNC_MessageTypeList supportedTypes,
+/*in*/  TNC_UInt32 typeCount);
+
+TNC_Result TNC_TNCS_SendMessage(
+/*in*/  TNC_IMVID imvID,
+/*in*/  TNC_ConnectionID connectionID,
+/*in*/  TNC_BufferReference message,
+/*in*/  TNC_UInt32 messageLength,
+/*in*/  TNC_MessageType messageType);
+
+TNC_Result TNC_TNCS_RequestHandshakeRetry(
+/*in*/  TNC_IMVID imvID,
+/*in*/  TNC_ConnectionID connectionID,
+/*in*/  TNC_RetryReason reason);
+
+TNC_Result TNC_TNCS_ProvideRecommendation(
+/*in*/  TNC_IMVID imvID,
+/*in*/  TNC_ConnectionID connectionID,
+/*in*/  TNC_IMV_Action_Recommendation recommendation,
+/*in*/  TNC_IMV_Evaluation_Result evaluation);
+
+TNC_Result TNC_TNCS_GetAttribute(
+/*in*/  TNC_IMVID imvID,
+/*in*/  TNC_ConnectionID connectionID,
+/*in*/  TNC_AttributeID attributeID,
+/*in*/  TNC_UInt32 bufferLength,
+/*out*/ TNC_BufferReference buffer,
+/*out*/ TNC_UInt32 *pOutValueLength);
+
+TNC_Result TNC_TNCS_SetAttribute(
+/*in*/  TNC_IMVID imvID,
+/*in*/  TNC_ConnectionID connectionID,
+/*in*/  TNC_AttributeID attributeID,
+/*in*/  TNC_UInt32 bufferLength,
+/*in*/  TNC_BufferReference buffer);
+
+TNC_Result TNC_TNCS_BindFunction(
+/*in*/  TNC_IMVID imvID,
+/*in*/  char *functionName,
+/*in*/  void **pOutfunctionPointer);
+
+#endif /** TNCIFIMV_H_ @}*/