Annotation of embedaddon/strongswan/src/libtpmtss/tpm_tss_quote_info.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * Copyright (C) 2016 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 tpm_tss_quote_info tpm_tss_quote_info
                     18:  * @{ @ingroup libtpmtss
                     19:  */
                     20: 
                     21: #ifndef TPM_TSS_QUOTE_INFO_H_
                     22: #define TPM_TSS_QUOTE_INFO_H_
                     23: 
                     24: #include <library.h>
                     25: 
                     26: #include <crypto/hashers/hasher.h>
                     27: 
                     28: typedef enum tpm_quote_mode_t tpm_quote_mode_t;
                     29: typedef struct tpm_tss_quote_info_t tpm_tss_quote_info_t;
                     30: typedef struct tpm_tss_pcr_composite_t tpm_tss_pcr_composite_t;
                     31: 
                     32: /**
                     33:  * TPM Quote Modes
                     34:  */
                     35: enum tpm_quote_mode_t {
                     36:        TPM_QUOTE_NONE,
                     37:        TPM_QUOTE,
                     38:        TPM_QUOTE2,
                     39:        TPM_QUOTE2_VERSION_INFO,
                     40:        TPM_QUOTE_TPM2
                     41: };
                     42: 
                     43: struct tpm_tss_pcr_composite_t {
                     44: 
                     45:        /**
                     46:         * Bit map of selected PCRs
                     47:         */
                     48:        chunk_t pcr_select;
                     49: 
                     50:        /**
                     51:         * Array of selected PCRs
                     52:         */
                     53:        chunk_t pcr_composite;
                     54: 
                     55: };
                     56: 
                     57: /**
                     58:  * TPM Quote Information needed to verify the Quote Signature
                     59:  */
                     60: struct tpm_tss_quote_info_t {
                     61: 
                     62:        /**
                     63:         * Get TPM Quote Mode
                     64:         *
                     65:         * @return                              TPM Quote Mode
                     66:         */
                     67:        tpm_quote_mode_t (*get_quote_mode)(tpm_tss_quote_info_t *this);
                     68: 
                     69:        /**
                     70:         * Get PCR Composite digest algorithm
                     71:         *
                     72:         * @return                                      PCR Composite digest algorithm
                     73:         */
                     74:        hash_algorithm_t (*get_pcr_digest_alg)(tpm_tss_quote_info_t *this);
                     75: 
                     76:        /**
                     77:         * Get PCR Composite digest
                     78:         *
                     79:         * @return                                      PCR Composite digest
                     80:         */
                     81:        chunk_t (*get_pcr_digest)(tpm_tss_quote_info_t *this);
                     82: 
                     83:        /**
                     84:         * Get TPM Quote Info digest, the basis of the TPM Quote Signature
                     85:         *
                     86:         * @param nonce                         Derived from the Diffie-Hellman exchange
                     87:         * @param composite                     PCR Composite as computed by IMV
                     88:         * @param quoted                        Encoded TPM Quote
                     89:         * @return                                      TRUE if TPM Quote was successfully constructed
                     90:         */
                     91:        bool (*get_quote)(tpm_tss_quote_info_t *this, chunk_t nonce,
                     92:                                                         tpm_tss_pcr_composite_t *composite,
                     93:                                                         chunk_t *quoted);
                     94: 
                     95:        /**
                     96:         * Set TPM version info (needed for TPM 1.2)
                     97:         *
                     98:         * @param version_info          TPM 1.2 version info
                     99:         */
                    100:        void (*set_version_info)(tpm_tss_quote_info_t *this, chunk_t version_info);
                    101: 
                    102:        /**
                    103:         * Get TPM 2.0 version info (needed for TPM 2.0)
                    104:         *
                    105:         * @return                                      TPM 2.0 firmwareVersion
                    106:         */
                    107:        chunk_t (*get_version_info)(tpm_tss_quote_info_t *this);
                    108: 
                    109:        /**
                    110:         * Set TPM 2.0 info parameters (needed for TPM 2.0)
                    111:         *
                    112:         * @param qualified_signer      TPM 2.0 qualifiedSigner
                    113:         * @param clock_info            TPM 2.0 clockInfo
                    114:         * @param pcr_select            TPM 2.0 pcrSelect
                    115:         */
                    116:        void (*set_tpm2_info)(tpm_tss_quote_info_t *this, chunk_t qualified_signer,
                    117:                                                  chunk_t clock_info, chunk_t pcr_select);
                    118: 
                    119: 
                    120:        /**
                    121:         * Get TPM 2.0 info parameters (needed for TPM 2.0)
                    122:         *
                    123:         * @param qualified_signer      TPM 2.0 qualifiedSigner
                    124:         * @param clock_info            TPM 2.0 clockInfo
                    125:         * @param pcr_select            TPM 2.0 pcrSelect
                    126:         */
                    127:        void (*get_tpm2_info)(tpm_tss_quote_info_t *this, chunk_t *qualified_signer,
                    128:                                                  chunk_t *clock_info, chunk_t *pcr_select);
                    129: 
                    130:        /**
                    131:         * Get reference to Quote Info object.
                    132:         */
                    133:        tpm_tss_quote_info_t* (*get_ref)(tpm_tss_quote_info_t *this);
                    134: 
                    135:        /**
                    136:         * Destroy a tpm_tss_quote_info_t.
                    137:         */
                    138:        void (*destroy)(tpm_tss_quote_info_t *this);
                    139: };
                    140: 
                    141: /**
                    142:  * Create a tpm_tss_quote_info instance.
                    143:  *
                    144:  * @param quote_mode                   TPM Quote mode
                    145:  * @param pcr_digest_alg               PCR Composite digest algorithm
                    146:  * @param pcr_digest                   PCR Composite digest
                    147:  */
                    148: tpm_tss_quote_info_t *tpm_tss_quote_info_create(tpm_quote_mode_t quote_mode,
                    149:                                                hash_algorithm_t pcr_digest_alg, chunk_t pcr_digest);
                    150: 
                    151: #endif /** TPM_TSS_QUOTE_INFO_H_ @}*/

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