Annotation of embedaddon/strongswan/src/libimcv/plugins/imv_attestation/attest_db.h, revision 1.1

1.1     ! misho       1: /*
        !             2:  * Copyright (C) 2011-2014 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:  * @defgroup attest_db_t attest_db
        !            18:  * @{ @ingroup libimcv
        !            19:  */
        !            20: 
        !            21: #ifndef ATTEST_DB_H_
        !            22: #define ATTEST_DB_H_
        !            23: 
        !            24: #include <pts/pts_meas_algo.h>
        !            25: #include <os_info/os_info.h>
        !            26: #include <library.h>
        !            27: 
        !            28: typedef struct attest_db_t attest_db_t;
        !            29: 
        !            30: /**
        !            31:  * Attestation database object
        !            32:  */
        !            33: struct attest_db_t {
        !            34: 
        !            35:        /**
        !            36:         * Set functional component to be queried
        !            37:         *
        !            38:         * @param comp                  functional component
        !            39:         * @param create                if TRUE create database entry if it doesn't exist
        !            40:         * @return                              TRUE if successful
        !            41:         */
        !            42:        bool (*set_component)(attest_db_t *this, char *comp, bool create);
        !            43: 
        !            44:        /**
        !            45:         * Set primary key of the functional component to be queried
        !            46:         *
        !            47:         * @param fid                   primary key of functional component
        !            48:         * @return                              TRUE if successful
        !            49:         */
        !            50:        bool (*set_cid)(attest_db_t *this, int fid);
        !            51: 
        !            52:        /**
        !            53:         * Set directory to be queried
        !            54:         *
        !            55:         * @param dir                   directory
        !            56:         * @param create                if TRUE create database entry if it doesn't exist
        !            57:         * @return                              TRUE if successful
        !            58:         */
        !            59:        bool (*set_directory)(attest_db_t *this, char *dir, bool create);
        !            60: 
        !            61:        /**
        !            62:         * Set primary key of the directory to be queried
        !            63:         *
        !            64:         * @param did                   primary key of directory
        !            65:         * @return                              TRUE if successful
        !            66:         */
        !            67:        bool (*set_did)(attest_db_t *this, int did);
        !            68: 
        !            69:        /**
        !            70:         * Set measurement file to be queried
        !            71:         *
        !            72:         * @param file                  measurement file
        !            73:         * @param create                if TRUE create database entry if it doesn't exist
        !            74:         * @return                              TRUE if successful
        !            75:         */
        !            76:        bool (*set_file)(attest_db_t *this, char *file, bool create);
        !            77: 
        !            78:        /**
        !            79:         * Set primary key of the measurement file to be queried
        !            80:         *
        !            81:         * @param fid                   primary key of measurement file
        !            82:         * @return                              TRUE if successful
        !            83:         */
        !            84:        bool (*set_fid)(attest_db_t *this, int fid);
        !            85: 
        !            86:        /**
        !            87:         * Set path to directory where file[s] are to be measured
        !            88:         *
        !            89:         * @param meas_dir              measurement directory
        !            90:         * @return                              TRUE if successful
        !            91:         */
        !            92:        bool (*set_meas_directory)(attest_db_t *this, char *dir);
        !            93: 
        !            94:        /**
        !            95:         * Set functional component to be queried
        !            96:         *
        !            97:         * @param key                   AIK
        !            98:         * @param create                if TRUE create database entry if it doesn't exist
        !            99:         * @return                              TRUE if successful
        !           100:         */
        !           101:        bool (*set_key)(attest_db_t *this, chunk_t key, bool create);
        !           102: 
        !           103:        /**
        !           104:         * Set primary key of the AIK to be queried
        !           105:         *
        !           106:         * @param kid                   primary key of AIK
        !           107:         * @return                              TRUE if successful
        !           108:         */
        !           109:        bool (*set_kid)(attest_db_t *this, int kid);
        !           110: 
        !           111:        /**
        !           112:         * Set software package to be queried
        !           113:         *
        !           114:         * @param product               software package
        !           115:         * @param create                if TRUE create database entry if it doesn't exist
        !           116:         * @return                              TRUE if successful
        !           117:         */
        !           118:        bool (*set_package)(attest_db_t *this, char *package, bool create);
        !           119: 
        !           120:        /**
        !           121:         * Set primary key of the software package to be queried
        !           122:         *
        !           123:         * @param gid                   primary key of software package
        !           124:         * @return                              TRUE if successful
        !           125:         */
        !           126:        bool (*set_gid)(attest_db_t *this, int gid);
        !           127: 
        !           128:        /**
        !           129:         * Set software product to be queried
        !           130:         *
        !           131:         * @param product               software product
        !           132:         * @param create                if TRUE create database entry if it doesn't exist
        !           133:         * @return                              TRUE if successful
        !           134:         */
        !           135:        bool (*set_product)(attest_db_t *this, char *product, bool create);
        !           136: 
        !           137:        /**
        !           138:         * Set primary key of the software product to be queried
        !           139:         *
        !           140:         * @param pid                   primary key of software product
        !           141:         * @return                              TRUE if successful
        !           142:         */
        !           143:        bool (*set_pid)(attest_db_t *this, int pid);
        !           144: 
        !           145:        /**
        !           146:         * Set software package version to be queried
        !           147:         *
        !           148:         * @param version               software package version
        !           149:         * @return                              TRUE if successful
        !           150:         */
        !           151:        bool (*set_version)(attest_db_t *this, char *version);
        !           152: 
        !           153:        /**
        !           154:         * Set measurement hash algorithm
        !           155:         *
        !           156:         * @param algo                  hash algorithm
        !           157:         */
        !           158:        void (*set_algo)(attest_db_t *this, pts_meas_algorithms_t algo);
        !           159: 
        !           160:        /**
        !           161:         * Set that the IMA-specific SHA-1 template hash be computed
        !           162:         */
        !           163:        void (*set_ima)(attest_db_t *this);
        !           164: 
        !           165:        /**
        !           166:         * Set that relative filenames are to be used
        !           167:         */
        !           168:        void (*set_relative)(attest_db_t *this);
        !           169: 
        !           170:        /**
        !           171:         * Set the package security or blacklist state
        !           172:         */
        !           173:        void (*set_package_state)(attest_db_t *this, os_package_state_t package_state);
        !           174: 
        !           175:        /**
        !           176:         * Set the sequence number
        !           177:         */
        !           178:        void (*set_sequence)(attest_db_t *this, int seq_no);
        !           179: 
        !           180:        /**
        !           181:         * Set owner [user/host] of an AIK
        !           182:         *
        !           183:         * @param owner                 user/host name
        !           184:         * @return                              TRUE if successful
        !           185:         */
        !           186:        void (*set_owner)(attest_db_t *this, char *owner);
        !           187: 
        !           188:        /**
        !           189:         * Display all dates in UTC
        !           190:         */
        !           191:        void (*set_utc)(attest_db_t *this);
        !           192: 
        !           193:        /**
        !           194:         * List all packages stored in the database
        !           195:         */
        !           196:        void (*list_packages)(attest_db_t *this);
        !           197: 
        !           198:        /**
        !           199:         * List all products stored in the database
        !           200:         */
        !           201:        void (*list_products)(attest_db_t *this);
        !           202: 
        !           203:        /**
        !           204:         * List all directories stored in the database
        !           205:         */
        !           206:        void (*list_directories)(attest_db_t *this);
        !           207: 
        !           208:        /**
        !           209:         * List selected files stored in the database
        !           210:         */
        !           211:        void (*list_files)(attest_db_t *this);
        !           212: 
        !           213:        /**
        !           214:         * List all components stored in the database
        !           215:         */
        !           216:        void (*list_components)(attest_db_t *this);
        !           217: 
        !           218:        /**
        !           219:         * List all devices stored in the database
        !           220:         */
        !           221:        void (*list_devices)(attest_db_t *this);
        !           222: 
        !           223:        /**
        !           224:         * List all AIKs stored in the database
        !           225:         */
        !           226:        void (*list_keys)(attest_db_t *this);
        !           227: 
        !           228:        /**
        !           229:         * List selected measurement hashes stored in the database
        !           230:         */
        !           231:        void (*list_hashes)(attest_db_t *this);
        !           232: 
        !           233:        /**
        !           234:         * List selected component measurement stored in the database
        !           235:         */
        !           236:        void (*list_measurements)(attest_db_t *this);
        !           237: 
        !           238:        /**
        !           239:         * List sessions stored in the database
        !           240:         */
        !           241:        void (*list_sessions)(attest_db_t *this);
        !           242: 
        !           243:        /**
        !           244:         * Add an entry to the database
        !           245:         */
        !           246:        bool (*add)(attest_db_t *this);
        !           247: 
        !           248:        /**
        !           249:         * Delete an entry from the database
        !           250:         */
        !           251:        bool (*delete)(attest_db_t *this);
        !           252: 
        !           253:        /**
        !           254:         * Destroy attest_db_t object
        !           255:         */
        !           256:        void (*destroy)(attest_db_t *this);
        !           257: 
        !           258: };
        !           259: 
        !           260: /**
        !           261:  * Create an attest_db_t instance
        !           262:  *
        !           263:  * @param uri                          database URI
        !           264:  */
        !           265: attest_db_t* attest_db_create(char *uri);
        !           266: 
        !           267: #endif /** ATTEST_DB_H_ @}*/

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