Annotation of embedaddon/strongswan/src/libimcv/imv/imv_session.h, revision 1.1

1.1     ! misho       1: /*
        !             2:  * Copyright (C) 2013-2015 Andreas Steffen
        !             3:  * HSR Hochschule fuer Technik Rapperswil
        !             4:  *
        !             5:  * This program is free software; you can redistribute it and/or modify it
        !             6:  * under the terms of the GNU General Public License as published by the
        !             7:  * Free Software Foundation; either version 2 of the License, or (at your
        !             8:  * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
        !             9:  *
        !            10:  * This program is distributed in the hope that it will be useful, but
        !            11:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
        !            12:  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
        !            13:  * for more details.
        !            14:  */
        !            15: 
        !            16: /**
        !            17:  *
        !            18:  * @defgroup imv_session_t imv_session
        !            19:  * @{ @ingroup libimcv_imv
        !            20:  */
        !            21: 
        !            22: #ifndef  IMV_SESSION_H_
        !            23: #define  IMV_SESSION_H_
        !            24: 
        !            25: #include "imv_workitem.h"
        !            26: #include "imv_os_info.h"
        !            27: 
        !            28: #include <tncifimv.h>
        !            29: #include <library.h>
        !            30: 
        !            31: #include <time.h>
        !            32: 
        !            33: typedef struct imv_session_t imv_session_t;
        !            34: 
        !            35: /**
        !            36:  * IMV session interface
        !            37:  */
        !            38: struct imv_session_t {
        !            39: 
        !            40:        /**
        !            41:         * Set unique session ID
        !            42:         *
        !            43:         * @param session_id    primary key into sessions table
        !            44:         * @param pid                   primary key into products table
        !            45:         * @param did                   Primary key into devices table
        !            46:         */
        !            47:        void (*set_session_id)(imv_session_t *this, int session_id, int pid, int did);
        !            48: 
        !            49:        /**
        !            50:         * Get unique session ID
        !            51:         *
        !            52:         * @param pid                   primary key into products table
        !            53:         * @param did                   Primary key into devices table
        !            54:         * @return                              primary key into sessions table
        !            55:         */
        !            56:        int (*get_session_id)(imv_session_t *this, int *pid, int *did);
        !            57: 
        !            58:        /**
        !            59:         * Get TNCCS Connection ID
        !            60:         *
        !            61:         * @return                              TNCCS Connection ID
        !            62:         */
        !            63:        TNC_ConnectionID (*get_connection_id)(imv_session_t *this);
        !            64: 
        !            65:        /**
        !            66:         * Set session creation time
        !            67:         *
        !            68:         * @param created               Session creation time
        !            69:         */
        !            70:        void (*set_creation_time)(imv_session_t *this, time_t created);
        !            71: 
        !            72:        /**
        !            73:         * Get session creation time
        !            74:         *
        !            75:         * @return                              Session creation time
        !            76:         */
        !            77:        time_t (*get_creation_time)(imv_session_t *this);
        !            78: 
        !            79:        /**
        !            80:         * Get list of Access Requestor identities
        !            81:         *
        !            82:         * @return                              List of Access Requestor identities
        !            83:         */
        !            84:        enumerator_t* (*create_ar_identities_enumerator)(imv_session_t *this);
        !            85: 
        !            86:        /**
        !            87:         * Get OS Information
        !            88:         *
        !            89:         * @return                              OS info object
        !            90:         */
        !            91:        imv_os_info_t* (*get_os_info)(imv_session_t *this);
        !            92: 
        !            93:        /**
        !            94:         * Set Device ID
        !            95:         *
        !            96:         * @param device_id             Device ID
        !            97:         */
        !            98:        void (*set_device_id)(imv_session_t *this, chunk_t device_id);
        !            99: 
        !           100:        /**
        !           101:         * Get Device ID
        !           102:         *
        !           103:         * @param device_id             Device ID
        !           104:         * @return                              TRUE if Device ID has already been set
        !           105:         */
        !           106:        bool (*get_device_id)(imv_session_t *this, chunk_t *device_id);
        !           107: 
        !           108:        /**
        !           109:         * Set trust into Device ID
        !           110:         *
        !           111:         * @param trusted               TRUE if Device ID is trusted
        !           112:         */
        !           113:        void (*set_device_trust)(imv_session_t *this, bool trusted);
        !           114: 
        !           115: 
        !           116:        /**
        !           117:         * Get device ID trust (needed for TPM-based attestation)
        !           118:         *
        !           119:         * @return                              TRUE if Device ID is trusted
        !           120:         */
        !           121:        bool (*get_device_trust)(imv_session_t *this);
        !           122: 
        !           123:        /**
        !           124:         * Set policy_started status
        !           125:         *
        !           126:         * @param start                 TRUE if policy started, FALSE if policy stopped
        !           127:         */
        !           128:        void (*set_policy_started)(imv_session_t *this, bool start);
        !           129: 
        !           130:        /**
        !           131:         * Get policy_started status
        !           132:         *
        !           133:         * @return                              TRUE if policy started, FALSE if policy stopped
        !           134:         */
        !           135:        bool (*get_policy_started)(imv_session_t *this);
        !           136: 
        !           137:        /**
        !           138:         * Insert workitem into list
        !           139:         *
        !           140:         * @param workitem              Workitem to be inserted
        !           141:         */
        !           142:        void (*insert_workitem)(imv_session_t *this, imv_workitem_t *workitem);
        !           143: 
        !           144:        /**
        !           145:         * Remove workitem from list
        !           146:         *
        !           147:         * @param enumerator    Enumerator pointing to workitem to be removed
        !           148:         */
        !           149:        void (*remove_workitem)(imv_session_t *this, enumerator_t *enumerator);
        !           150: 
        !           151:        /**
        !           152:         * Create workitem enumerator
        !           153:         *
        !           154:         */
        !           155:         enumerator_t* (*create_workitem_enumerator)(imv_session_t *this);
        !           156: 
        !           157:        /**
        !           158:         * Get number of workitem allocated to a given IMV
        !           159:         *
        !           160:         * @param imv_id                IMV ID
        !           161:         * @return                              Number of workitems assigned to given IMV
        !           162:         */
        !           163:         int (*get_workitem_count)(imv_session_t *this, TNC_IMVID imv_id);
        !           164: 
        !           165:        /**
        !           166:         * Get reference to session
        !           167:         */
        !           168:        imv_session_t* (*get_ref)(imv_session_t*);
        !           169: 
        !           170:        /**
        !           171:         * Destroys an imv_session_t object
        !           172:         */
        !           173:        void (*destroy)(imv_session_t *this);
        !           174: };
        !           175: 
        !           176: /**
        !           177:  * Create an imv_session_t instance
        !           178:  *
        !           179:  * @param id                           Associated Connection ID
        !           180:  * @param ar_identities                List of Access Requestor identities
        !           181:  */
        !           182: imv_session_t* imv_session_create(TNC_ConnectionID id,
        !           183:                                                                 linked_list_t *ar_identities);
        !           184: 
        !           185: #endif /**  IMV_SESSION_H_ @}*/

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