qemu/backends/tpm/tpm_int.h
<<
>>
Prefs
   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
  25struct tpm_req_hdr {
  26    uint16_t tag;
  27    uint32_t len;
  28    uint32_t ordinal;
  29} QEMU_PACKED;
  30
  31struct 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
  78int tpm_util_get_buffer_size(int tpm_fd, TPMVersion tpm_version,
  79                             size_t *buffersize);
  80
  81typedef struct TPMSizedBuffer {
  82    uint32_t size;
  83    uint8_t  *buffer;
  84} TPMSizedBuffer;
  85
  86void tpm_sized_buffer_reset(TPMSizedBuffer *tsb);
  87
  88#endif /* BACKENDS_TPM_INT_H */
  89