Return to tpm_tss_quote_info.h CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / strongswan / src / libtpmtss |
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_ @}*/