tpm_int.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. #include "qemu/option.h"
  15. #include "sysemu/tpm.h"
  16. #define TPM_STANDARD_CMDLINE_OPTS \
  17. { \
  18. .name = "type", \
  19. .type = QEMU_OPT_STRING, \
  20. .help = "Type of TPM backend", \
  21. }
  22. struct tpm_req_hdr {
  23. uint16_t tag;
  24. uint32_t len;
  25. uint32_t ordinal;
  26. } QEMU_PACKED;
  27. struct tpm_resp_hdr {
  28. uint16_t tag;
  29. uint32_t len;
  30. uint32_t errcode;
  31. } QEMU_PACKED;
  32. #define TPM_TAG_RQU_COMMAND 0xc1
  33. #define TPM_TAG_RQU_AUTH1_COMMAND 0xc2
  34. #define TPM_TAG_RQU_AUTH2_COMMAND 0xc3
  35. #define TPM_TAG_RSP_COMMAND 0xc4
  36. #define TPM_TAG_RSP_AUTH1_COMMAND 0xc5
  37. #define TPM_TAG_RSP_AUTH2_COMMAND 0xc6
  38. #define TPM_BAD_PARAMETER 3
  39. #define TPM_FAIL 9
  40. #define TPM_KEYNOTFOUND 13
  41. #define TPM_BAD_PARAM_SIZE 25
  42. #define TPM_ENCRYPT_ERROR 32
  43. #define TPM_DECRYPT_ERROR 33
  44. #define TPM_BAD_KEY_PROPERTY 40
  45. #define TPM_BAD_MODE 44
  46. #define TPM_BAD_VERSION 46
  47. #define TPM_BAD_LOCALITY 61
  48. #define TPM_ORD_ContinueSelfTest 0x53
  49. #define TPM_ORD_GetTicks 0xf1
  50. #define TPM_ORD_GetCapability 0x65
  51. #define TPM_CAP_PROPERTY 0x05
  52. #define TPM_CAP_PROP_INPUT_BUFFER 0x124
  53. /* TPM2 defines */
  54. #define TPM2_ST_NO_SESSIONS 0x8001
  55. #define TPM2_CC_ReadClock 0x00000181
  56. #define TPM2_CC_GetCapability 0x0000017a
  57. #define TPM2_CAP_TPM_PROPERTIES 0x6
  58. #define TPM2_PT_MAX_COMMAND_SIZE 0x11e
  59. #define TPM_RC_INSUFFICIENT 0x9a
  60. #define TPM_RC_FAILURE 0x101
  61. #define TPM_RC_LOCALITY 0x907
  62. int tpm_util_get_buffer_size(int tpm_fd, TPMVersion tpm_version,
  63. size_t *buffersize);
  64. typedef struct TPMSizedBuffer {
  65. uint32_t size;
  66. uint8_t *buffer;
  67. } TPMSizedBuffer;
  68. void tpm_sized_buffer_reset(TPMSizedBuffer *tsb);
  69. #endif /* BACKENDS_TPM_INT_H */