1 /* 2 * TPM configuration 3 * 4 * Copyright (C) 2011-2013 IBM Corporation 5 * 6 * Authors: 7 * Stefan Berger <stefanb@us.ibm.com> 8 * 9 * This work is licensed under the terms of the GNU GPL, version 2 or later. 10 * See the COPYING file in the top-level directory. 11 */ 12 #ifndef BACKENDS_TPM_INT_H 13 #define BACKENDS_TPM_INT_H 14 15 #include "qemu/option.h" 16 #include "sysemu/tpm.h" 17 18 #define TPM_STANDARD_CMDLINE_OPTS \ 19 { \ 20 .name = "type", \ 21 .type = QEMU_OPT_STRING, \ 22 .help = "Type of TPM backend", \ 23 } 24 25 struct tpm_req_hdr { 26 uint16_t tag; 27 uint32_t len; 28 uint32_t ordinal; 29 } QEMU_PACKED; 30 31 struct tpm_resp_hdr { 32 uint16_t tag; 33 uint32_t len; 34 uint32_t errcode; 35 } QEMU_PACKED; 36 37 #define TPM_TAG_RQU_COMMAND 0xc1 38 #define TPM_TAG_RQU_AUTH1_COMMAND 0xc2 39 #define TPM_TAG_RQU_AUTH2_COMMAND 0xc3 40 41 #define TPM_TAG_RSP_COMMAND 0xc4 42 #define TPM_TAG_RSP_AUTH1_COMMAND 0xc5 43 #define TPM_TAG_RSP_AUTH2_COMMAND 0xc6 44 45 #define TPM_BAD_PARAMETER 3 46 #define TPM_FAIL 9 47 #define TPM_KEYNOTFOUND 13 48 #define TPM_BAD_PARAM_SIZE 25 49 #define TPM_ENCRYPT_ERROR 32 50 #define TPM_DECRYPT_ERROR 33 51 #define TPM_BAD_KEY_PROPERTY 40 52 #define TPM_BAD_MODE 44 53 #define TPM_BAD_VERSION 46 54 #define TPM_BAD_LOCALITY 61 55 56 #define TPM_ORD_ContinueSelfTest 0x53 57 #define TPM_ORD_GetTicks 0xf1 58 #define TPM_ORD_GetCapability 0x65 59 60 #define TPM_CAP_PROPERTY 0x05 61 62 #define TPM_CAP_PROP_INPUT_BUFFER 0x124 63 64 /* TPM2 defines */ 65 #define TPM2_ST_NO_SESSIONS 0x8001 66 67 #define TPM2_CC_ReadClock 0x00000181 68 #define TPM2_CC_GetCapability 0x0000017a 69 70 #define TPM2_CAP_TPM_PROPERTIES 0x6 71 72 #define TPM2_PT_MAX_COMMAND_SIZE 0x11e 73 74 #define TPM_RC_INSUFFICIENT 0x9a 75 #define TPM_RC_FAILURE 0x101 76 #define TPM_RC_LOCALITY 0x907 77 78 int tpm_util_get_buffer_size(int tpm_fd, TPMVersion tpm_version, 79 size_t *buffersize); 80 81 typedef struct TPMSizedBuffer { 82 uint32_t size; 83 uint8_t *buffer; 84 } TPMSizedBuffer; 85 86 void tpm_sized_buffer_reset(TPMSizedBuffer *tsb); 87 88 #endif /* BACKENDS_TPM_INT_H */ 89