File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / strongswan / src / libtncif / tncifimv.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Jun 3 09:46:44 2020 UTC (4 years, 4 months ago) by misho
Branches: strongswan, MAIN
CVS tags: v5_9_2p0, v5_8_4p7, HEAD
Strongswan

    1: /* tncifimv.h
    2:  *
    3:  * Trusted Network Connect IF-IMV API version 1.30
    4:  * Microsoft Windows DLL Platform Binding C Header
    5:  * October 14, 2011
    6:  *
    7:  * Copyright(c) 2005-2011, Trusted Computing Group, Inc. All rights
    8:  * reserved.
    9:  *
   10:  * Redistribution and use in source and binary forms, with or without
   11:  * modification, are permitted provided that the following conditions
   12:  * are met:
   13:  * o Redistributions of source code must retain the above copyright
   14:  *   notice, this list of conditions and the following disclaimer.
   15:  * o Redistributions in binary form must reproduce the above copyright
   16:  *   notice, this list of conditions and the following disclaimer in
   17:  *   the documentation and/or other materials provided with the
   18:  *   distribution.
   19:  * o Neither the name of the Trusted Computing Group nor the names of
   20:  *   its contributors may be used to endorse or promote products
   21:  *   derived from this software without specific prior written
   22:  *   permission.
   23:  *
   24:  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   25:  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   26:  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
   27:  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
   28:  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
   29:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
   30:  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
   31:  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
   32:  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   33:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
   34:  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   35:  * POSSIBILITY OF SUCH DAMAGE.
   36:  *
   37:  * Contact the Trusted Computing Group at
   38:  * admin@trustedcomputinggroup.org for information on specification
   39:  * licensing through membership agreements.
   40:  *
   41:  * Any marks and brands contained herein are the property of their
   42:  * respective owners.
   43:  */
   44: 
   45: /**
   46:  * @defgroup tncifimv tncifimv
   47:  * @{ @ingroup libtncif
   48:  */
   49: 
   50: #ifndef TNCIFIMV_H_
   51: #define TNCIFIMV_H_
   52: 
   53: #include "tncif.h"
   54: 
   55: #ifdef WIN32
   56: #ifdef TNC_IMV_EXPORTS
   57: #define TNC_IMV_API __declspec(dllexport)
   58: #else
   59: #define TNC_IMV_API __declspec(dllimport)
   60: #endif
   61: #else
   62: #define TNC_IMV_API
   63: #endif
   64: 
   65: /* Derived Types */
   66: 
   67: typedef TNC_UInt32 TNC_IMVID;
   68: typedef TNC_UInt32 TNC_IMV_Action_Recommendation;
   69: typedef TNC_UInt32 TNC_IMV_Evaluation_Result;
   70: 
   71: /* Function pointers */
   72: 
   73: typedef TNC_Result (*TNC_IMV_InitializePointer)(
   74:     TNC_IMVID imvID,
   75:     TNC_Version minVersion,
   76:     TNC_Version maxVersion,
   77:     TNC_Version *pOutActualVersion);
   78: typedef TNC_Result (*TNC_IMV_NotifyConnectionChangePointer)(
   79:     TNC_IMVID imvID,
   80:     TNC_ConnectionID connectionID,
   81:     TNC_ConnectionState newState);
   82: typedef TNC_Result (*TNC_IMV_ReceiveMessagePointer)(
   83:     TNC_IMVID imvID,
   84:     TNC_ConnectionID connectionID,
   85:     TNC_BufferReference message,
   86:     TNC_UInt32 messageLength,
   87:     TNC_MessageType messageType);
   88: typedef TNC_Result (*TNC_IMV_ReceiveMessageSOHPointer)(
   89:     TNC_IMVID imvID,
   90:     TNC_ConnectionID connectionID,
   91:     TNC_BufferReference sohReportEntry,
   92:     TNC_UInt32 sohRELength,
   93:     TNC_MessageType systemHealthID);
   94: typedef TNC_Result (*TNC_IMV_ReceiveMessageLongPointer)(
   95:     TNC_IMVID imvID,
   96:     TNC_ConnectionID connectionID,
   97:     TNC_UInt32 messageFlags,
   98:     TNC_BufferReference message,
   99:     TNC_UInt32 messageLength,
  100:     TNC_VendorID messageVendorID,
  101:     TNC_MessageSubtype messageSubtype,
  102:     TNC_UInt32 sourceIMCID,
  103:     TNC_UInt32 destinationIMVID);
  104: typedef TNC_Result (*TNC_IMV_SolicitRecommendationPointer)(
  105:     TNC_IMVID imvID,
  106:     TNC_ConnectionID connectionID);
  107: typedef TNC_Result (*TNC_IMV_BatchEndingPointer)(
  108:     TNC_IMVID imvID,
  109:     TNC_ConnectionID connectionID);
  110: typedef TNC_Result (*TNC_IMV_TerminatePointer)(
  111:     TNC_IMVID imvID);
  112: typedef TNC_Result (*TNC_TNCS_ReportMessageTypesPointer)(
  113:     TNC_IMVID imvID,
  114:     TNC_MessageTypeList supportedTypes,
  115:     TNC_UInt32 typeCount);
  116: typedef TNC_Result (*TNC_TNCS_ReportMessageTypesLongPointer)(
  117:     TNC_IMVID imvID,
  118:     TNC_VendorIDList supportedVendorIDs,
  119:     TNC_MessageSubtypeList supportedSubtypes,
  120:     TNC_UInt32 typeCount);
  121: typedef TNC_Result (*TNC_TNCS_SendMessagePointer)(
  122:     TNC_IMVID imvID,
  123:     TNC_ConnectionID connectionID,
  124:     TNC_BufferReference message,
  125:     TNC_UInt32 messageLength,
  126:     TNC_MessageType messageType);
  127: typedef TNC_Result (*TNC_TNCS_SendMessageSOHPointer)(
  128:     TNC_IMVID imvID,
  129:     TNC_ConnectionID connectionID,
  130:     TNC_BufferReference sohrReportEntry,
  131:     TNC_UInt32 sohrRELength);
  132: typedef TNC_Result (*TNC_TNCS_SendMessageLongPointer)(
  133:     TNC_IMVID imvID,
  134:     TNC_ConnectionID connectionID,
  135:     TNC_UInt32 messageFlags,
  136:     TNC_BufferReference message,
  137:     TNC_UInt32 messageLength,
  138:     TNC_VendorID messageVendorID,
  139:     TNC_MessageSubtype messageSubtype,
  140:     TNC_UInt32 destinationIMCID);
  141: typedef TNC_Result (*TNC_TNCS_RequestHandshakeRetryPointer)(
  142:     TNC_IMVID imvID,
  143:     TNC_ConnectionID connectionID,
  144:     TNC_RetryReason reason);
  145: typedef TNC_Result (*TNC_TNCS_ProvideRecommendationPointer)(
  146:     TNC_IMVID imvID,
  147:     TNC_ConnectionID connectionID,
  148:     TNC_IMV_Action_Recommendation recommendation,
  149:     TNC_IMV_Evaluation_Result evaluation);
  150: typedef TNC_Result (*TNC_TNCS_GetAttributePointer)(
  151:     TNC_IMVID imvID,
  152: 	TNC_ConnectionID connectionID,
  153: 	TNC_AttributeID attributeID,
  154:     TNC_UInt32 bufferLength,
  155:     TNC_BufferReference buffer,
  156:     TNC_UInt32 *pOutValueLength);
  157: typedef TNC_Result (*TNC_TNCS_SetAttributePointer)(
  158:     TNC_IMVID imvID,
  159:     TNC_ConnectionID connectionID,
  160: 	TNC_AttributeID attributeID,
  161:     TNC_UInt32 bufferLength,
  162:     TNC_BufferReference buffer);
  163: typedef TNC_Result (*TNC_TNCS_ReserveAdditionalIMVIDPointer)(
  164:     TNC_IMVID imvID,
  165:     TNC_UInt32 *pOutIMVID);
  166: typedef TNC_Result (*TNC_TNCS_BindFunctionPointer)(
  167:     TNC_IMVID imvID,
  168:     char *functionName,
  169:     void **pOutfunctionPointer);
  170: typedef TNC_Result (*TNC_IMV_ProvideBindFunctionPointer)(
  171:     TNC_IMVID imvID,
  172:     TNC_TNCS_BindFunctionPointer bindFunction);
  173: 
  174: /* Version Numbers */
  175: 
  176: #define TNC_IFIMV_VERSION_1 1
  177: 
  178: /* Handshake Retry Reason Values */
  179: 
  180: /* reserved for TNC_RETRY_REASON_IMC_REMEDIATION_COMPLETE: 0 */
  181: /* reserved for TNC_RETRY_REASON_IMC_SERIOUS_EVENT: 1 */
  182: /* reserved for TNC_RETRY_REASON_IMC_INFORMATIONAL_EVENT: 2 */
  183: /* reserved for TNC_RETRY_REASON_IMC_PERIODIC: 3 */
  184: #define TNC_RETRY_REASON_IMV_IMPORTANT_POLICY_CHANGE 4
  185: #define TNC_RETRY_REASON_IMV_MINOR_POLICY_CHANGE 5
  186: #define TNC_RETRY_REASON_IMV_SERIOUS_EVENT 6
  187: #define TNC_RETRY_REASON_IMV_MINOR_EVENT 7
  188: #define TNC_RETRY_REASON_IMV_PERIODIC 8
  189: 
  190: /* IMV Action Recommendation Values */
  191: 
  192: #define TNC_IMV_ACTION_RECOMMENDATION_ALLOW 0
  193: #define TNC_IMV_ACTION_RECOMMENDATION_NO_ACCESS 1
  194: #define TNC_IMV_ACTION_RECOMMENDATION_ISOLATE 2
  195: #define TNC_IMV_ACTION_RECOMMENDATION_NO_RECOMMENDATION 3
  196: 
  197: /* IMV Evaluation Result Values */
  198: 
  199: #define TNC_IMV_EVALUATION_RESULT_COMPLIANT 0
  200: #define TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MINOR 1
  201: #define TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MAJOR 2
  202: #define TNC_IMV_EVALUATION_RESULT_ERROR 3
  203: #define TNC_IMV_EVALUATION_RESULT_DONT_KNOW 4
  204: 
  205: /* Message Attribute ID Values */
  206: 
  207: #define TNC_ATTRIBUTEID_REASON_STRING ((TNC_AttributeID) 0x00000002)
  208: #define TNC_ATTRIBUTEID_REASON_LANGUAGE ((TNC_AttributeID) 0x00000003)
  209: #define TNC_ATTRIBUTEID_SOH ((TNC_AttributeID) 0x00559706)
  210: #define TNC_ATTRIBUTEID_SSOH ((TNC_AttributeID) 0x00559707)
  211: #define TNC_ATTRIBUTEID_PRIMARY_IMV_ID ((TNC_AttributeID) 0x00559710)
  212: #define TNC_ATTRIBUTEID_AR_IDENTITIES ((TNC_AttributeID) 0x00559712)
  213: 
  214: /* TNC Identity Types */
  215: 
  216: #define TNC_ID_UNKNOWN 0
  217: #define TNC_ID_IPV4_ADDR 1
  218: #define TNC_ID_IPV6_ADDR 2
  219: #define TNC_ID_FQDN 3
  220: #define TNC_ID_EMAIL_ADDR 4
  221: #define TNC_ID_USERNAME 5
  222: #define TNC_ID_X500_DN 6
  223: 
  224: /* TNC Subject Types */
  225: 
  226: #define TNC_SUBJECT_UNKNOWN 0
  227: #define TNC_SUBJECT_MACHINE 1
  228: #define TNC_SUBJECT_USER 2
  229: 
  230: /* TNC Authentication Types */
  231: 
  232: #define TNC_AUTH_UNKNOWN 0
  233: #define TNC_AUTH_X509_CERT 1
  234: #define TNC_AUTH_PASSWORD 2
  235: #define TNC_AUTH_SIM 3
  236: 
  237: /* IMV Functions */
  238: 
  239: TNC_IMV_API TNC_Result TNC_IMV_Initialize(
  240: /*in*/  TNC_IMVID imvID,
  241: /*in*/  TNC_Version minVersion,
  242: /*in*/  TNC_Version maxVersion,
  243: /*in*/  TNC_Version *pOutActualVersion);
  244: 
  245: TNC_IMV_API TNC_Result TNC_IMV_NotifyConnectionChange(
  246: /*in*/  TNC_IMVID imvID,
  247: /*in*/  TNC_ConnectionID connectionID,
  248: /*in*/  TNC_ConnectionState newState);
  249: 
  250: TNC_IMV_API TNC_Result TNC_IMV_ReceiveMessage(
  251: /*in*/  TNC_IMVID imvID,
  252: /*in*/  TNC_ConnectionID connectionID,
  253: /*in*/  TNC_BufferReference messageBuffer,
  254: /*in*/  TNC_UInt32 messageLength,
  255: /*in*/  TNC_MessageType messageType);
  256: 
  257: TNC_IMV_API TNC_Result TNC_IMV_ReceiveMessageSOH(
  258: /*in*/  TNC_IMVID imvID,
  259: /*in*/  TNC_ConnectionID connectionID,
  260: /*in*/  TNC_BufferReference sohReportEntry,
  261: /*in*/  TNC_UInt32 sohRELength,
  262: /*in*/  TNC_MessageType systemHealthID);
  263: 
  264: TNC_IMV_API TNC_Result TNC_IMV_ReceiveMessageLong(
  265: /*in*/  TNC_IMVID imvID,
  266: /*in*/  TNC_ConnectionID connectionID,
  267: /*in*/  TNC_UInt32 messageFlags,
  268: /*in*/  TNC_BufferReference message,
  269: /*in*/  TNC_UInt32 messageLength,
  270: /*in*/  TNC_VendorID messageVendorID,
  271: /*in*/  TNC_MessageSubtype messageSubtype,
  272: /*in*/  TNC_UInt32 sourceIMCID,
  273: /*in*/  TNC_UInt32 destinationIMVID);
  274: 
  275: TNC_IMV_API TNC_Result TNC_IMV_SolicitRecommendation(
  276: /*in*/  TNC_IMVID imvID,
  277: /*in*/  TNC_ConnectionID connectionID);
  278: 
  279: TNC_IMV_API TNC_Result TNC_IMV_BatchEnding(
  280: /*in*/  TNC_IMVID imvID,
  281: /*in*/  TNC_ConnectionID connectionID);
  282: 
  283: TNC_IMV_API TNC_Result TNC_IMV_Terminate(
  284: /*in*/  TNC_IMVID imvID);
  285: 
  286: TNC_IMV_API TNC_Result TNC_IMV_ProvideBindFunction(
  287: /*in*/  TNC_IMVID imvID,
  288: /*in*/  TNC_TNCS_BindFunctionPointer bindFunction);
  289: 
  290: /* TNC Server Functions */
  291: 
  292: TNC_Result TNC_TNCS_ReportMessageTypes(
  293: /*in*/  TNC_IMVID imvID,
  294: /*in*/  TNC_MessageTypeList supportedTypes,
  295: /*in*/  TNC_UInt32 typeCount);
  296: 
  297: TNC_Result TNC_TNCS_ReportMessageTypesLong(
  298: /*in*/  TNC_IMVID imvID,
  299: /*in*/  TNC_VendorIDList supportedVendorIDs,
  300: /*in*/  TNC_MessageSubtypeList supportedSubtypes,
  301: /*in*/  TNC_UInt32 typeCount);
  302: 
  303: TNC_Result TNC_TNCS_SendMessage(
  304: /*in*/  TNC_IMVID imvID,
  305: /*in*/  TNC_ConnectionID connectionID,
  306: /*in*/  TNC_BufferReference message,
  307: /*in*/  TNC_UInt32 messageLength,
  308: /*in*/  TNC_MessageType messageType);
  309: 
  310: TNC_Result TNC_TNCS_SendMessageSOH(
  311: /*in*/  TNC_IMVID imvID,
  312: /*in*/  TNC_ConnectionID connectionID,
  313: /*in*/  TNC_BufferReference sohrReportEntry,
  314: /*in*/  TNC_UInt32 sohrRELength);
  315: 
  316: TNC_Result TNC_TNCS_SendMessageLong(
  317: /*in*/  TNC_IMVID imvID,
  318: /*in*/  TNC_ConnectionID connectionID,
  319: /*in*/  TNC_UInt32 messageFlags,
  320: /*in*/  TNC_BufferReference message,
  321: /*in*/  TNC_UInt32 messageLength,
  322: /*in*/  TNC_VendorID messageVendorID,
  323: /*in*/  TNC_MessageSubtype messageSubtype,
  324: /*in*/  TNC_UInt32 destinationIMCID);
  325: 
  326: TNC_Result TNC_TNCS_RequestHandshakeRetry(
  327: /*in*/  TNC_IMVID imvID,
  328: /*in*/  TNC_ConnectionID connectionID,
  329: /*in*/  TNC_RetryReason reason);
  330: 
  331: TNC_Result TNC_TNCS_ProvideRecommendation(
  332: /*in*/  TNC_IMVID imvID,
  333: /*in*/  TNC_ConnectionID connectionID,
  334: /*in*/  TNC_IMV_Action_Recommendation recommendation,
  335: /*in*/  TNC_IMV_Evaluation_Result evaluation);
  336: 
  337: TNC_Result TNC_TNCS_GetAttribute(
  338: /*in*/  TNC_IMVID imvID,
  339: /*in*/  TNC_ConnectionID connectionID,
  340: /*in*/  TNC_AttributeID attributeID,
  341: /*in*/  TNC_UInt32 bufferLength,
  342: /*out*/ TNC_BufferReference buffer,
  343: /*out*/ TNC_UInt32 *pOutValueLength);
  344: 
  345: TNC_Result TNC_TNCS_ReserveAdditionalIMVID(
  346: /*in*/  TNC_IMVID imvID,
  347: /*out*/ TNC_UInt32 *pOutIMVID);
  348: 
  349: TNC_Result TNC_TNCS_SetAttribute(
  350: /*in*/  TNC_IMVID imvID,
  351: /*in*/ TNC_ConnectionID connectionID,
  352: /*in*/ TNC_AttributeID attributeID,
  353: /*in*/ TNC_UInt32 bufferLength,
  354: /*in*/ TNC_BufferReference buffer);
  355: TNC_Result TNC_TNCS_BindFunction(
  356: /*in*/  TNC_IMVID imvID,
  357: /*in*/  char *functionName,
  358: /*in*/  void **pOutfunctionPointer);
  359: 
  360: #endif /** TNCIFIMV_H_ @}*/

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>