| // Copyright 2015 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // THIS CODE IS GENERATED - DO NOT MODIFY! |
| |
| #ifndef TPM2_TPM_TYPES_H_ |
| #define TPM2_TPM_TYPES_H_ |
| // Unprocessed: Table 1 Name Prefix Convention |
| // Skipped: Table 2 Unmarshaling Errors |
| // Table 3 Definition of Base Types |
| typedef uint8_t UINT8; |
| typedef uint8_t BYTE; |
| typedef int8_t INT8; |
| typedef int BOOL; |
| typedef uint16_t UINT16; |
| typedef int16_t INT16; |
| typedef uint32_t UINT32; |
| typedef int32_t INT32; |
| typedef uint64_t UINT64; |
| typedef int64_t INT64; |
| |
| // Table 4 Defines for Logic Values |
| #define TRUE 1 |
| #define FALSE 0 |
| #define YES 1 |
| #define NO 0 |
| #define SET 1 |
| #define CLEAR 0 |
| |
| // Table 5 Definition of Types for Documentation Clarity |
| typedef UINT32 TPM_ALGORITHM_ID; |
| typedef UINT32 TPM_MODIFIER_INDICATOR; |
| typedef UINT32 TPM_AUTHORIZATION_SIZE; |
| typedef UINT32 TPM_PARAMETER_SIZE; |
| typedef UINT16 TPM_KEY_SIZE; |
| typedef UINT16 TPM_KEY_BITS; |
| |
| // Skipped: Table 6 Definition of TPM_SPEC Constants <> |
| // Table 7 Definition of TPM_GENERATED Constants < O> |
| typedef UINT32 TPM_GENERATED; |
| #define TPM_GENERATED_VALUE 0xff544347 |
| |
| // Unprocessed: Table 8 Legend for TPM_ALG_ID Table |
| // Skipped: Table 9 Definition of TPM_ALG_ID Constants < IN/OUT, S> |
| // Skipped: Table 10 Definition of TPM_ECC_CURVE Constants < IN/OUT, S> |
| // Unprocessed: Table 11 TPM Command Format Fields Description |
| // Unprocessed: Table 12 Legend for Command Code Tables |
| // Skipped: Table 13 Definition of TPM_CC Constants < IN/OUT, S> |
| // Unprocessed: Table 14 Format-Zero Response Codes |
| // Unprocessed: Table 15 Format-One Response Codes |
| // Unprocessed: Table 16 Response Code Groupings |
| // Table 17 Definition of TPM_RC Constants < OUT> |
| typedef UINT32 TPM_RC; |
| #define TPM_RC_SUCCESS 0x000 |
| #define TPM_RC_BAD_TAG 0x01E |
| #define RC_VER1 0x100 |
| #define TPM_RC_INITIALIZE ((TPM_RC)(RC_VER1 + 0x000)) |
| #define TPM_RC_FAILURE ((TPM_RC)(RC_VER1 + 0x001)) |
| #define TPM_RC_SEQUENCE ((TPM_RC)(RC_VER1 + 0x003)) |
| #define TPM_RC_PRIVATE ((TPM_RC)(RC_VER1 + 0x00B)) |
| #define TPM_RC_HMAC ((TPM_RC)(RC_VER1 + 0x019)) |
| #define TPM_RC_DISABLED ((TPM_RC)(RC_VER1 + 0x020)) |
| #define TPM_RC_EXCLUSIVE ((TPM_RC)(RC_VER1 + 0x021)) |
| #define TPM_RC_AUTH_TYPE ((TPM_RC)(RC_VER1 + 0x024)) |
| #define TPM_RC_AUTH_MISSING ((TPM_RC)(RC_VER1 + 0x025)) |
| #define TPM_RC_POLICY ((TPM_RC)(RC_VER1 + 0x026)) |
| #define TPM_RC_PCR ((TPM_RC)(RC_VER1 + 0x027)) |
| #define TPM_RC_PCR_CHANGED ((TPM_RC)(RC_VER1 + 0x028)) |
| #define TPM_RC_UPGRADE ((TPM_RC)(RC_VER1 + 0x02D)) |
| #define TPM_RC_TOO_MANY_CONTEXTS ((TPM_RC)(RC_VER1 + 0x02E)) |
| #define TPM_RC_AUTH_UNAVAILABLE ((TPM_RC)(RC_VER1 + 0x02F)) |
| #define TPM_RC_REBOOT ((TPM_RC)(RC_VER1 + 0x030)) |
| #define TPM_RC_UNBALANCED ((TPM_RC)(RC_VER1 + 0x031)) |
| #define TPM_RC_COMMAND_SIZE ((TPM_RC)(RC_VER1 + 0x042)) |
| #define TPM_RC_COMMAND_CODE ((TPM_RC)(RC_VER1 + 0x043)) |
| #define TPM_RC_AUTHSIZE ((TPM_RC)(RC_VER1 + 0x044)) |
| #define TPM_RC_AUTH_CONTEXT ((TPM_RC)(RC_VER1 + 0x045)) |
| #define TPM_RC_NV_RANGE ((TPM_RC)(RC_VER1 + 0x046)) |
| #define TPM_RC_NV_SIZE ((TPM_RC)(RC_VER1 + 0x047)) |
| #define TPM_RC_NV_LOCKED ((TPM_RC)(RC_VER1 + 0x048)) |
| #define TPM_RC_NV_AUTHORIZATION ((TPM_RC)(RC_VER1 + 0x049)) |
| #define TPM_RC_NV_UNINITIALIZED ((TPM_RC)(RC_VER1 + 0x04A)) |
| #define TPM_RC_NV_SPACE ((TPM_RC)(RC_VER1 + 0x04B)) |
| #define TPM_RC_NV_DEFINED ((TPM_RC)(RC_VER1 + 0x04C)) |
| #define TPM_RC_BAD_CONTEXT ((TPM_RC)(RC_VER1 + 0x050)) |
| #define TPM_RC_CPHASH ((TPM_RC)(RC_VER1 + 0x051)) |
| #define TPM_RC_PARENT ((TPM_RC)(RC_VER1 + 0x052)) |
| #define TPM_RC_NEEDS_TEST ((TPM_RC)(RC_VER1 + 0x053)) |
| #define TPM_RC_NO_RESULT ((TPM_RC)(RC_VER1 + 0x054)) |
| #define TPM_RC_SENSITIVE ((TPM_RC)(RC_VER1 + 0x055)) |
| #define RC_MAX_FM0 ((TPM_RC)(RC_VER1 + 0x07F)) |
| #define RC_FMT1 0x080 |
| #define TPM_RC_ASYMMETRIC ((TPM_RC)(RC_FMT1 + 0x001)) |
| #define TPM_RC_ATTRIBUTES ((TPM_RC)(RC_FMT1 + 0x002)) |
| #define TPM_RC_HASH ((TPM_RC)(RC_FMT1 + 0x003)) |
| #define TPM_RC_VALUE ((TPM_RC)(RC_FMT1 + 0x004)) |
| #define TPM_RC_HIERARCHY ((TPM_RC)(RC_FMT1 + 0x005)) |
| #define TPM_RC_KEY_SIZE ((TPM_RC)(RC_FMT1 + 0x007)) |
| #define TPM_RC_MGF ((TPM_RC)(RC_FMT1 + 0x008)) |
| #define TPM_RC_MODE ((TPM_RC)(RC_FMT1 + 0x009)) |
| #define TPM_RC_TYPE ((TPM_RC)(RC_FMT1 + 0x00A)) |
| #define TPM_RC_HANDLE ((TPM_RC)(RC_FMT1 + 0x00B)) |
| #define TPM_RC_KDF ((TPM_RC)(RC_FMT1 + 0x00C)) |
| #define TPM_RC_RANGE ((TPM_RC)(RC_FMT1 + 0x00D)) |
| #define TPM_RC_AUTH_FAIL ((TPM_RC)(RC_FMT1 + 0x00E)) |
| #define TPM_RC_NONCE ((TPM_RC)(RC_FMT1 + 0x00F)) |
| #define TPM_RC_PP ((TPM_RC)(RC_FMT1 + 0x010)) |
| #define TPM_RC_SCHEME ((TPM_RC)(RC_FMT1 + 0x012)) |
| #define TPM_RC_SIZE ((TPM_RC)(RC_FMT1 + 0x015)) |
| #define TPM_RC_SYMMETRIC ((TPM_RC)(RC_FMT1 + 0x016)) |
| #define TPM_RC_TAG ((TPM_RC)(RC_FMT1 + 0x017)) |
| #define TPM_RC_SELECTOR ((TPM_RC)(RC_FMT1 + 0x018)) |
| #define TPM_RC_INSUFFICIENT ((TPM_RC)(RC_FMT1 + 0x01A)) |
| #define TPM_RC_SIGNATURE ((TPM_RC)(RC_FMT1 + 0x01B)) |
| #define TPM_RC_KEY ((TPM_RC)(RC_FMT1 + 0x01C)) |
| #define TPM_RC_POLICY_FAIL ((TPM_RC)(RC_FMT1 + 0x01D)) |
| #define TPM_RC_INTEGRITY ((TPM_RC)(RC_FMT1 + 0x01F)) |
| #define TPM_RC_TICKET ((TPM_RC)(RC_FMT1 + 0x020)) |
| #define TPM_RC_RESERVED_BITS ((TPM_RC)(RC_FMT1 + 0x021)) |
| #define TPM_RC_BAD_AUTH ((TPM_RC)(RC_FMT1 + 0x022)) |
| #define TPM_RC_EXPIRED ((TPM_RC)(RC_FMT1 + 0x023)) |
| #define TPM_RC_POLICY_CC ((TPM_RC)(RC_FMT1 + 0x024)) |
| #define TPM_RC_BINDING ((TPM_RC)(RC_FMT1 + 0x025)) |
| #define TPM_RC_CURVE ((TPM_RC)(RC_FMT1 + 0x026)) |
| #define TPM_RC_ECC_POINT ((TPM_RC)(RC_FMT1 + 0x027)) |
| #define RC_WARN 0x900 |
| #define TPM_RC_CONTEXT_GAP ((TPM_RC)(RC_WARN + 0x001)) |
| #define TPM_RC_OBJECT_MEMORY ((TPM_RC)(RC_WARN + 0x002)) |
| #define TPM_RC_SESSION_MEMORY ((TPM_RC)(RC_WARN + 0x003)) |
| #define TPM_RC_MEMORY ((TPM_RC)(RC_WARN + 0x004)) |
| #define TPM_RC_SESSION_HANDLES ((TPM_RC)(RC_WARN + 0x005)) |
| #define TPM_RC_OBJECT_HANDLES ((TPM_RC)(RC_WARN + 0x006)) |
| #define TPM_RC_LOCALITY ((TPM_RC)(RC_WARN + 0x007)) |
| #define TPM_RC_YIELDED ((TPM_RC)(RC_WARN + 0x008)) |
| #define TPM_RC_CANCELED ((TPM_RC)(RC_WARN + 0x009)) |
| #define TPM_RC_TESTING ((TPM_RC)(RC_WARN + 0x00A)) |
| #define TPM_RC_REFERENCE_H0 ((TPM_RC)(RC_WARN + 0x010)) |
| #define TPM_RC_REFERENCE_H1 ((TPM_RC)(RC_WARN + 0x011)) |
| #define TPM_RC_REFERENCE_H2 ((TPM_RC)(RC_WARN + 0x012)) |
| #define TPM_RC_REFERENCE_H3 ((TPM_RC)(RC_WARN + 0x013)) |
| #define TPM_RC_REFERENCE_H4 ((TPM_RC)(RC_WARN + 0x014)) |
| #define TPM_RC_REFERENCE_H5 ((TPM_RC)(RC_WARN + 0x015)) |
| #define TPM_RC_REFERENCE_H6 ((TPM_RC)(RC_WARN + 0x016)) |
| #define TPM_RC_REFERENCE_S0 ((TPM_RC)(RC_WARN + 0x018)) |
| #define TPM_RC_REFERENCE_S1 ((TPM_RC)(RC_WARN + 0x019)) |
| #define TPM_RC_REFERENCE_S2 ((TPM_RC)(RC_WARN + 0x01A)) |
| #define TPM_RC_REFERENCE_S3 ((TPM_RC)(RC_WARN + 0x01B)) |
| #define TPM_RC_REFERENCE_S4 ((TPM_RC)(RC_WARN + 0x01C)) |
| #define TPM_RC_REFERENCE_S5 ((TPM_RC)(RC_WARN + 0x01D)) |
| #define TPM_RC_REFERENCE_S6 ((TPM_RC)(RC_WARN + 0x01E)) |
| #define TPM_RC_NV_RATE ((TPM_RC)(RC_WARN + 0x020)) |
| #define TPM_RC_LOCKOUT ((TPM_RC)(RC_WARN + 0x021)) |
| #define TPM_RC_RETRY ((TPM_RC)(RC_WARN + 0x022)) |
| #define TPM_RC_NV_UNAVAILABLE ((TPM_RC)(RC_WARN + 0x023)) |
| #define TPM_RC_NOT_USED ((TPM_RC)(RC_WARN + 0x7F)) |
| #define TPM_RC_H 0x000 |
| #define TPM_RC_P 0x040 |
| #define TPM_RC_S 0x800 |
| #define TPM_RC_1 0x100 |
| #define TPM_RC_2 0x200 |
| #define TPM_RC_3 0x300 |
| #define TPM_RC_4 0x400 |
| #define TPM_RC_5 0x500 |
| #define TPM_RC_6 0x600 |
| #define TPM_RC_7 0x700 |
| #define TPM_RC_8 0x800 |
| #define TPM_RC_9 0x900 |
| #define TPM_RC_A 0xA00 |
| #define TPM_RC_B 0xB00 |
| #define TPM_RC_C 0xC00 |
| #define TPM_RC_D 0xD00 |
| #define TPM_RC_E 0xE00 |
| #define TPM_RC_F 0xF00 |
| #define TPM_RC_N_MASK 0xF00 |
| |
| // Table 18 Definition of TPM_CLOCK_ADJUST Constants < IN> |
| typedef INT8 TPM_CLOCK_ADJUST; |
| #define TPM_CLOCK_COARSE_SLOWER -3 |
| #define TPM_CLOCK_MEDIUM_SLOWER -2 |
| #define TPM_CLOCK_FINE_SLOWER -1 |
| #define TPM_CLOCK_NO_CHANGE 0 |
| #define TPM_CLOCK_FINE_FASTER 1 |
| #define TPM_CLOCK_MEDIUM_FASTER 2 |
| #define TPM_CLOCK_COARSE_FASTER 3 |
| |
| // Table 19 Definition of TPM_EO Constants < IN/OUT> |
| typedef UINT16 TPM_EO; |
| #define TPM_EO_EQ 0x0000 |
| #define TPM_EO_NEQ 0x0001 |
| #define TPM_EO_SIGNED_GT 0x0002 |
| #define TPM_EO_UNSIGNED_GT 0x0003 |
| #define TPM_EO_SIGNED_LT 0x0004 |
| #define TPM_EO_UNSIGNED_LT 0x0005 |
| #define TPM_EO_SIGNED_GE 0x0006 |
| #define TPM_EO_UNSIGNED_GE 0x0007 |
| #define TPM_EO_SIGNED_LE 0x0008 |
| #define TPM_EO_UNSIGNED_LE 0x0009 |
| #define TPM_EO_BITSET 0x000A |
| #define TPM_EO_BITCLEAR 0x000B |
| |
| // Table 20 Definition of TPM_ST Constants < IN/OUT, S> |
| typedef UINT16 TPM_ST; |
| #define TPM_ST_RSP_COMMAND 0x00C4 |
| #define TPM_ST_NULL 0X8000 |
| #define TPM_ST_NO_SESSIONS 0x8001 |
| #define TPM_ST_SESSIONS 0x8002 |
| #define TPM_ST_ATTEST_NV 0x8014 |
| #define TPM_ST_ATTEST_COMMAND_AUDIT 0x8015 |
| #define TPM_ST_ATTEST_SESSION_AUDIT 0x8016 |
| #define TPM_ST_ATTEST_CERTIFY 0x8017 |
| #define TPM_ST_ATTEST_QUOTE 0x8018 |
| #define TPM_ST_ATTEST_TIME 0x8019 |
| #define TPM_ST_ATTEST_CREATION 0x801A |
| #define TPM_ST_CREATION 0x8021 |
| #define TPM_ST_VERIFIED 0x8022 |
| #define TPM_ST_AUTH_SECRET 0x8023 |
| #define TPM_ST_HASHCHECK 0x8024 |
| #define TPM_ST_AUTH_SIGNED 0x8025 |
| #define TPM_ST_FU_MANIFEST 0x8029 |
| |
| // Table 21 Definition of TPM_SU Constants < IN> |
| typedef UINT16 TPM_SU; |
| #define TPM_SU_CLEAR 0x0000 |
| #define TPM_SU_STATE 0x0001 |
| |
| // Table 22 Definition of TPM_SE Constants < IN> |
| typedef UINT8 TPM_SE; |
| #define TPM_SE_HMAC 0x00 |
| #define TPM_SE_POLICY 0x01 |
| #define TPM_SE_TRIAL 0x03 |
| |
| // Table 23 Definition of TPM_CAP Constants |
| typedef UINT32 TPM_CAP; |
| #define TPM_CAP_FIRST 0x00000000 |
| #define TPM_CAP_ALGS 0x00000000 |
| #define TPM_CAP_HANDLES 0x00000001 |
| #define TPM_CAP_COMMANDS 0x00000002 |
| #define TPM_CAP_PP_COMMANDS 0x00000003 |
| #define TPM_CAP_AUDIT_COMMANDS 0x00000004 |
| #define TPM_CAP_PCRS 0x00000005 |
| #define TPM_CAP_TPM_PROPERTIES 0x00000006 |
| #define TPM_CAP_PCR_PROPERTIES 0x00000007 |
| #define TPM_CAP_ECC_CURVES 0x00000008 |
| #define TPM_CAP_LAST 0x00000008 |
| #define TPM_CAP_VENDOR_PROPERTY 0x00000100 |
| |
| // Table 24 Definition of TPM_PT Constants < IN/OUT, S> |
| typedef UINT32 TPM_PT; |
| #define TPM_PT_NONE 0x00000000 |
| #define PT_GROUP 0x00000100 |
| #define PT_FIXED (PT_GROUP * 1) |
| #define TPM_PT_FAMILY_INDICATOR ((TPM_PT)(PT_FIXED + 0)) |
| #define TPM_PT_LEVEL ((TPM_PT)(PT_FIXED + 1)) |
| #define TPM_PT_REVISION ((TPM_PT)(PT_FIXED + 2)) |
| #define TPM_PT_DAY_OF_YEAR ((TPM_PT)(PT_FIXED + 3)) |
| #define TPM_PT_YEAR ((TPM_PT)(PT_FIXED + 4)) |
| #define TPM_PT_MANUFACTURER ((TPM_PT)(PT_FIXED + 5)) |
| #define TPM_PT_VENDOR_STRING_1 ((TPM_PT)(PT_FIXED + 6)) |
| #define TPM_PT_VENDOR_STRING_2 ((TPM_PT)(PT_FIXED + 7)) |
| #define TPM_PT_VENDOR_STRING_3 ((TPM_PT)(PT_FIXED + 8)) |
| #define TPM_PT_VENDOR_STRING_4 ((TPM_PT)(PT_FIXED + 9)) |
| #define TPM_PT_VENDOR_TPM_TYPE ((TPM_PT)(PT_FIXED + 10)) |
| #define TPM_PT_FIRMWARE_VERSION_1 ((TPM_PT)(PT_FIXED + 11)) |
| #define TPM_PT_FIRMWARE_VERSION_2 ((TPM_PT)(PT_FIXED + 12)) |
| #define TPM_PT_INPUT_BUFFER ((TPM_PT)(PT_FIXED + 13)) |
| #define TPM_PT_HR_TRANSIENT_MIN ((TPM_PT)(PT_FIXED + 14)) |
| #define TPM_PT_HR_PERSISTENT_MIN ((TPM_PT)(PT_FIXED + 15)) |
| #define TPM_PT_HR_LOADED_MIN ((TPM_PT)(PT_FIXED + 16)) |
| #define TPM_PT_ACTIVE_SESSIONS_MAX ((TPM_PT)(PT_FIXED + 17)) |
| #define TPM_PT_PCR_COUNT ((TPM_PT)(PT_FIXED + 18)) |
| #define TPM_PT_PCR_SELECT_MIN ((TPM_PT)(PT_FIXED + 19)) |
| #define TPM_PT_CONTEXT_GAP_MAX ((TPM_PT)(PT_FIXED + 20)) |
| #define TPM_PT_NV_COUNTERS_MAX ((TPM_PT)(PT_FIXED + 22)) |
| #define TPM_PT_NV_INDEX_MAX ((TPM_PT)(PT_FIXED + 23)) |
| #define TPM_PT_MEMORY ((TPM_PT)(PT_FIXED + 24)) |
| #define TPM_PT_CLOCK_UPDATE ((TPM_PT)(PT_FIXED + 25)) |
| #define TPM_PT_CONTEXT_HASH ((TPM_PT)(PT_FIXED + 26)) |
| #define TPM_PT_CONTEXT_SYM ((TPM_PT)(PT_FIXED + 27)) |
| #define TPM_PT_CONTEXT_SYM_SIZE ((TPM_PT)(PT_FIXED + 28)) |
| #define TPM_PT_ORDERLY_COUNT ((TPM_PT)(PT_FIXED + 29)) |
| #define TPM_PT_MAX_COMMAND_SIZE ((TPM_PT)(PT_FIXED + 30)) |
| #define TPM_PT_MAX_RESPONSE_SIZE ((TPM_PT)(PT_FIXED + 31)) |
| #define TPM_PT_MAX_DIGEST ((TPM_PT)(PT_FIXED + 32)) |
| #define TPM_PT_MAX_OBJECT_CONTEXT ((TPM_PT)(PT_FIXED + 33)) |
| #define TPM_PT_MAX_SESSION_CONTEXT ((TPM_PT)(PT_FIXED + 34)) |
| #define TPM_PT_PS_FAMILY_INDICATOR ((TPM_PT)(PT_FIXED + 35)) |
| #define TPM_PT_PS_LEVEL ((TPM_PT)(PT_FIXED + 36)) |
| #define TPM_PT_PS_REVISION ((TPM_PT)(PT_FIXED + 37)) |
| #define TPM_PT_PS_DAY_OF_YEAR ((TPM_PT)(PT_FIXED + 38)) |
| #define TPM_PT_PS_YEAR ((TPM_PT)(PT_FIXED + 39)) |
| #define TPM_PT_SPLIT_MAX ((TPM_PT)(PT_FIXED + 40)) |
| #define TPM_PT_TOTAL_COMMANDS ((TPM_PT)(PT_FIXED + 41)) |
| #define TPM_PT_LIBRARY_COMMANDS ((TPM_PT)(PT_FIXED + 42)) |
| #define TPM_PT_VENDOR_COMMANDS ((TPM_PT)(PT_FIXED + 43)) |
| #define TPM_PT_NV_BUFFER_MAX ((TPM_PT)(PT_FIXED + 44)) |
| #define PT_VAR (PT_GROUP * 2) |
| #define TPM_PT_PERMANENT ((TPM_PT)(PT_VAR + 0)) |
| #define TPM_PT_STARTUP_CLEAR ((TPM_PT)(PT_VAR + 1)) |
| #define TPM_PT_HR_NV_INDEX ((TPM_PT)(PT_VAR + 2)) |
| #define TPM_PT_HR_LOADED ((TPM_PT)(PT_VAR + 3)) |
| #define TPM_PT_HR_LOADED_AVAIL ((TPM_PT)(PT_VAR + 4)) |
| #define TPM_PT_HR_ACTIVE ((TPM_PT)(PT_VAR + 5)) |
| #define TPM_PT_HR_ACTIVE_AVAIL ((TPM_PT)(PT_VAR + 6)) |
| #define TPM_PT_HR_TRANSIENT_AVAIL ((TPM_PT)(PT_VAR + 7)) |
| #define TPM_PT_HR_PERSISTENT ((TPM_PT)(PT_VAR + 8)) |
| #define TPM_PT_HR_PERSISTENT_AVAIL ((TPM_PT)(PT_VAR + 9)) |
| #define TPM_PT_NV_COUNTERS ((TPM_PT)(PT_VAR + 10)) |
| #define TPM_PT_NV_COUNTERS_AVAIL ((TPM_PT)(PT_VAR + 11)) |
| #define TPM_PT_ALGORITHM_SET ((TPM_PT)(PT_VAR + 12)) |
| #define TPM_PT_LOADED_CURVES ((TPM_PT)(PT_VAR + 13)) |
| #define TPM_PT_LOCKOUT_COUNTER ((TPM_PT)(PT_VAR + 14)) |
| #define TPM_PT_MAX_AUTH_FAIL ((TPM_PT)(PT_VAR + 15)) |
| #define TPM_PT_LOCKOUT_INTERVAL ((TPM_PT)(PT_VAR + 16)) |
| #define TPM_PT_LOCKOUT_RECOVERY ((TPM_PT)(PT_VAR + 17)) |
| #define TPM_PT_NV_WRITE_RECOVERY ((TPM_PT)(PT_VAR + 18)) |
| #define TPM_PT_AUDIT_COUNTER_0 ((TPM_PT)(PT_VAR + 19)) |
| #define TPM_PT_AUDIT_COUNTER_1 ((TPM_PT)(PT_VAR + 20)) |
| |
| // Table 25 Definition of TPM_PT_PCR Constants < IN/OUT, S> |
| typedef UINT32 TPM_PT_PCR; |
| #define TPM_PT_PCR_FIRST 0x00000000 |
| #define TPM_PT_PCR_SAVE 0x00000000 |
| #define TPM_PT_PCR_EXTEND_L0 0x00000001 |
| #define TPM_PT_PCR_RESET_L0 0x00000002 |
| #define TPM_PT_PCR_EXTEND_L1 0x00000003 |
| #define TPM_PT_PCR_RESET_L1 0x00000004 |
| #define TPM_PT_PCR_EXTEND_L2 0x00000005 |
| #define TPM_PT_PCR_RESET_L2 0x00000006 |
| #define TPM_PT_PCR_EXTEND_L3 0x00000007 |
| #define TPM_PT_PCR_RESET_L3 0x00000008 |
| #define TPM_PT_PCR_EXTEND_L4 0x00000009 |
| #define TPM_PT_PCR_RESET_L4 0x0000000A |
| #define TPM_PT_PCR_NO_INCREMENT 0x00000011 |
| #define TPM_PT_PCR_DRTM_RESET 0x00000012 |
| #define TPM_PT_PCR_POLICY 0x00000013 |
| #define TPM_PT_PCR_AUTH 0x00000014 |
| #define TPM_PT_PCR_LAST 0x00000014 |
| |
| // Table 26 Definition of TPM_PS Constants < OUT> |
| typedef UINT32 TPM_PS; |
| #define TPM_PS_MAIN 0x00000000 |
| #define TPM_PS_PC 0x00000001 |
| #define TPM_PS_PDA 0x00000002 |
| #define TPM_PS_CELL_PHONE 0x00000003 |
| #define TPM_PS_SERVER 0x00000004 |
| #define TPM_PS_PERIPHERAL 0x00000005 |
| #define TPM_PS_TSS 0x00000006 |
| #define TPM_PS_STORAGE 0x00000007 |
| #define TPM_PS_AUTHENTICATION 0x00000008 |
| #define TPM_PS_EMBEDDED 0x00000009 |
| #define TPM_PS_HARDCOPY 0x0000000A |
| #define TPM_PS_INFRASTRUCTURE 0x0000000B |
| #define TPM_PS_VIRTUALIZATION 0x0000000C |
| #define TPM_PS_TNC 0x0000000D |
| #define TPM_PS_MULTI_TENANT 0x0000000E |
| #define TPM_PS_TC 0x0000000F |
| |
| // Table 27 Definition of Types for Handles |
| typedef UINT32 TPM_HANDLE; |
| |
| // Table 28 Definition of TPM_HT Constants < S> |
| typedef UINT8 TPM_HT; |
| #define TPM_HT_PCR 0x00 |
| #define TPM_HT_NV_INDEX 0x01 |
| #define TPM_HT_HMAC_SESSION 0x02 |
| #define TPM_HT_LOADED_SESSION 0x02 |
| #define TPM_HT_POLICY_SESSION 0x03 |
| #define TPM_HT_ACTIVE_SESSION 0x03 |
| #define TPM_HT_PERMANENT 0x40 |
| #define TPM_HT_TRANSIENT 0x80 |
| #define TPM_HT_PERSISTENT 0x81 |
| |
| // Table 29 Definition of TPM_RH Constants < S> |
| typedef TPM_HANDLE TPM_RH; |
| #define TPM_RH_FIRST 0x40000000 |
| #define TPM_RH_SRK 0x40000000 |
| #define TPM_RH_OWNER 0x40000001 |
| #define TPM_RH_REVOKE 0x40000002 |
| #define TPM_RH_TRANSPORT 0x40000003 |
| #define TPM_RH_OPERATOR 0x40000004 |
| #define TPM_RH_ADMIN 0x40000005 |
| #define TPM_RH_EK 0x40000006 |
| #define TPM_RH_NULL 0x40000007 |
| #define TPM_RH_UNASSIGNED 0x40000008 |
| #define TPM_RS_PW 0x40000009 |
| #define TPM_RH_LOCKOUT 0x4000000A |
| #define TPM_RH_ENDORSEMENT 0x4000000B |
| #define TPM_RH_PLATFORM 0x4000000C |
| #define TPM_RH_PLATFORM_NV 0x4000000D |
| #define TPM_RH_AUTH_00 0x40000010 |
| #define TPM_RH_AUTH_FF 0x4000010F |
| #define TPM_RH_LAST 0x4000010F |
| |
| // Table 30 Definition of TPM_HC Constants < S> |
| typedef TPM_HANDLE TPM_HC; |
| #define HR_HANDLE_MASK 0x00FFFFFF |
| #define HR_RANGE_MASK 0xFF000000 |
| #define HR_SHIFT 24 |
| #define HR_PCR (TPM_HT_PCR << HR_SHIFT) |
| #define HR_HMAC_SESSION (TPM_HT_HMAC_SESSION << HR_SHIFT) |
| #define HR_POLICY_SESSION (TPM_HT_POLICY_SESSION << HR_SHIFT) |
| #define HR_TRANSIENT (TPM_HT_TRANSIENT << HR_SHIFT) |
| #define HR_PERSISTENT (TPM_HT_PERSISTENT << HR_SHIFT) |
| #define HR_NV_INDEX (TPM_HT_NV_INDEX << HR_SHIFT) |
| #define HR_PERMANENT (TPM_HT_PERMANENT << HR_SHIFT) |
| #define PCR_FIRST (HR_PCR + 0) |
| #define PCR_LAST (PCR_FIRST + IMPLEMENTATION_PCR-1) |
| #define HMAC_SESSION_FIRST (HR_HMAC_SESSION + 0) |
| #define HMAC_SESSION_LAST (HMAC_SESSION_FIRST+MAX_ACTIVE_SESSIONS-1) |
| #define LOADED_SESSION_FIRST HMAC_SESSION_FIRST |
| #define LOADED_SESSION_LAST HMAC_SESSION_LAST |
| #define POLICY_SESSION_FIRST (HR_POLICY_SESSION + 0) |
| #define POLICY_SESSION_LAST (POLICY_SESSION_FIRST + MAX_ACTIVE_SESSIONS-1) |
| #define TRANSIENT_FIRST (HR_TRANSIENT + 0) |
| #define ACTIVE_SESSION_FIRST POLICY_SESSION_FIRST |
| #define ACTIVE_SESSION_LAST POLICY_SESSION_LAST |
| #define TRANSIENT_LAST (TRANSIENT_FIRST+MAX_LOADED_OBJECTS-1) |
| #define PERSISTENT_FIRST (HR_PERSISTENT + 0) |
| #define PERSISTENT_LAST (PERSISTENT_FIRST + 0x00FFFFFF) |
| #define PLATFORM_PERSISTENT (PERSISTENT_FIRST + 0x00800000) |
| #define NV_INDEX_FIRST (HR_NV_INDEX + 0) |
| #define NV_INDEX_LAST (NV_INDEX_FIRST + 0x00FFFFFF) |
| #define PERMANENT_FIRST TPM_RH_FIRST |
| #define PERMANENT_LAST TPM_RH_LAST |
| |
| // Table 31 Definition of TPMA_ALGORITHM Bits |
| typedef struct { |
| UINT32 asymmetric : 1; |
| UINT32 symmetric : 1; |
| UINT32 hash : 1; |
| UINT32 object : 1; |
| UINT32 reserved4_7 : 4; |
| UINT32 signing : 1; |
| UINT32 encrypting : 1; |
| UINT32 method : 1; |
| UINT32 reserved11_31 : 21; |
| } TPMA_ALGORITHM; |
| |
| // Table 32 Definition of TPMA_OBJECT Bits |
| typedef struct { |
| UINT32 reserved0 : 1; |
| UINT32 fixedTPM : 1; |
| UINT32 stClear : 1; |
| UINT32 reserved3 : 1; |
| UINT32 fixedParent : 1; |
| UINT32 sensitiveDataOrigin : 1; |
| UINT32 userWithAuth : 1; |
| UINT32 adminWithPolicy : 1; |
| UINT32 reserved8_9 : 2; |
| UINT32 noDA : 1; |
| UINT32 encryptedDuplication : 1; |
| UINT32 reserved12_15 : 4; |
| UINT32 restricted : 1; |
| UINT32 decrypt : 1; |
| UINT32 sign : 1; |
| UINT32 reserved19_31 : 13; |
| } TPMA_OBJECT; |
| |
| // Table 33 Definition of TPMA_SESSION Bits < IN/OUT> |
| typedef struct { |
| UINT8 continueSession : 1; |
| UINT8 auditExclusive : 1; |
| UINT8 auditReset : 1; |
| UINT8 reserved3_4 : 2; |
| UINT8 decrypt : 1; |
| UINT8 encrypt : 1; |
| UINT8 audit : 1; |
| } TPMA_SESSION; |
| |
| // Table 34 Definition of TPMA_LOCALITY Bits < IN/OUT> |
| typedef struct { |
| UINT8 locZero : 1; |
| UINT8 locOne : 1; |
| UINT8 locTwo : 1; |
| UINT8 locThree : 1; |
| UINT8 locFour : 1; |
| UINT8 Extended : 3; |
| } TPMA_LOCALITY; |
| |
| // Table 35 Definition of TPMA_PERMANENT Bits < OUT> |
| typedef struct { |
| UINT32 ownerAuthSet : 1; |
| UINT32 endorsementAuthSet : 1; |
| UINT32 lockoutAuthSet : 1; |
| UINT32 reserved3_7 : 5; |
| UINT32 disableClear : 1; |
| UINT32 inLockout : 1; |
| UINT32 tpmGeneratedEPS : 1; |
| UINT32 reserved11_31 : 21; |
| } TPMA_PERMANENT; |
| |
| // Table 36 Definition of TPMA_STARTUP_CLEAR Bits < OUT> |
| typedef struct { |
| UINT32 phEnable : 1; |
| UINT32 shEnable : 1; |
| UINT32 ehEnable : 1; |
| UINT32 phEnableNV : 1; |
| UINT32 reserved4_30 : 27; |
| UINT32 orderly : 1; |
| } TPMA_STARTUP_CLEAR; |
| |
| // Table 37 Definition of TPMA_MEMORY Bits < Out> |
| typedef struct { |
| UINT32 sharedRAM : 1; |
| UINT32 sharedNV : 1; |
| UINT32 objectCopiedToRam : 1; |
| UINT32 reserved3_31 : 29; |
| } TPMA_MEMORY; |
| |
| // Table 38 Definition of TPMA_CC Bits < OUT> |
| typedef struct { |
| TPM_CC commandIndex : 16; |
| TPM_CC reserved16_21 : 6; |
| TPM_CC nv : 1; |
| TPM_CC extensive : 1; |
| TPM_CC flushed : 1; |
| TPM_CC cHandles : 3; |
| TPM_CC rHandle : 1; |
| TPM_CC V : 1; |
| TPM_CC Res : 2; |
| } TPMA_CC; |
| |
| // Table 39 Definition of TPMI_YES_NO Type |
| typedef BYTE TPMI_YES_NO; |
| // Table 40 Definition of TPMI_DH_OBJECT Type |
| typedef TPM_HANDLE TPMI_DH_OBJECT; |
| // Table 41 Definition of TPMI_DH_PERSISTENT Type |
| typedef TPM_HANDLE TPMI_DH_PERSISTENT; |
| // Table 42 Definition of TPMI_DH_ENTITY Type < IN> |
| typedef TPM_HANDLE TPMI_DH_ENTITY; |
| // Table 43 Definition of TPMI_DH_PCR Type < IN> |
| typedef TPM_HANDLE TPMI_DH_PCR; |
| // Table 44 Definition of TPMI_SH_AUTH_SESSION Type < IN/OUT> |
| typedef TPM_HANDLE TPMI_SH_AUTH_SESSION; |
| // Table 45 Definition of TPMI_SH_HMAC Type < IN/OUT> |
| typedef TPM_HANDLE TPMI_SH_HMAC; |
| // Table 46 Definition of TPMI_SH_POLICY Type < IN/OUT> |
| typedef TPM_HANDLE TPMI_SH_POLICY; |
| // Table 47 Definition of TPMI_DH_CONTEXT Type |
| typedef TPM_HANDLE TPMI_DH_CONTEXT; |
| // Table 48 Definition of TPMI_RH_HIERARCHY Type |
| typedef TPM_HANDLE TPMI_RH_HIERARCHY; |
| // Table 49 Definition of TPMI_RH_ENABLES Type |
| typedef TPM_HANDLE TPMI_RH_ENABLES; |
| // Table 50 Definition of TPMI_RH_HIERARCHY_AUTH Type < IN> |
| typedef TPM_HANDLE TPMI_RH_HIERARCHY_AUTH; |
| // Table 51 Definition of TPMI_RH_PLATFORM Type < IN> |
| typedef TPM_HANDLE TPMI_RH_PLATFORM; |
| // Table 52 Definition of TPMI_RH_OWNER Type < IN> |
| typedef TPM_HANDLE TPMI_RH_OWNER; |
| // Table 53 Definition of TPMI_RH_ENDORSEMENT Type < IN> |
| typedef TPM_HANDLE TPMI_RH_ENDORSEMENT; |
| // Table 54 Definition of TPMI_RH_PROVISION Type < IN> |
| typedef TPM_HANDLE TPMI_RH_PROVISION; |
| // Table 55 Definition of TPMI_RH_CLEAR Type < IN> |
| typedef TPM_HANDLE TPMI_RH_CLEAR; |
| // Table 56 Definition of TPMI_RH_NV_AUTH Type < IN> |
| typedef TPM_HANDLE TPMI_RH_NV_AUTH; |
| // Table 57 Definition of TPMI_RH_LOCKOUT Type < IN> |
| typedef TPM_HANDLE TPMI_RH_LOCKOUT; |
| // Table 58 Definition of TPMI_RH_NV_INDEX Type < IN/OUT> |
| typedef TPM_HANDLE TPMI_RH_NV_INDEX; |
| // Table 59 Definition of TPMI_ALG_HASH Type |
| typedef TPM_ALG_ID TPMI_ALG_HASH; |
| // Table 60 Definition of TPMI_ALG_ASYM Type |
| typedef TPM_ALG_ID TPMI_ALG_ASYM; |
| // Table 61 Definition of TPMI_ALG_SYM Type |
| typedef TPM_ALG_ID TPMI_ALG_SYM; |
| // Table 62 Definition of TPMI_ALG_SYM_OBJECT Type |
| typedef TPM_ALG_ID TPMI_ALG_SYM_OBJECT; |
| // Table 63 Definition of TPMI_ALG_SYM_MODE Type |
| typedef TPM_ALG_ID TPMI_ALG_SYM_MODE; |
| // Table 64 Definition of TPMI_ALG_KDF Type |
| typedef TPM_ALG_ID TPMI_ALG_KDF; |
| // Table 65 Definition of TPMI_ALG_SIG_SCHEME Type |
| typedef TPM_ALG_ID TPMI_ALG_SIG_SCHEME; |
| // Table 66 Definition of TPMI_ECC_KEY_EXCHANGE Type |
| typedef TPM_ALG_ID TPMI_ECC_KEY_EXCHANGE; |
| // Table 67 Definition of TPMI_ST_COMMAND_TAG Type |
| typedef TPM_ST TPMI_ST_COMMAND_TAG; |
| // Table 68 Definition of TPMS_EMPTY Structure < IN/OUT> |
| typedef struct { |
| } TPMS_EMPTY; |
| |
| // Table 69 Definition of TPMS_ALGORITHM_DESCRIPTION Structure < OUT> |
| typedef struct { |
| TPM_ALG_ID alg; |
| TPMA_ALGORITHM attributes; |
| } TPMS_ALGORITHM_DESCRIPTION; |
| |
| // Table 70 Definition of TPMU_HA Union < IN/OUT, S> |
| typedef union { |
| #ifdef TPM_ALG_SHA |
| BYTE sha[SHA_DIGEST_SIZE]; |
| #endif |
| #ifdef TPM_ALG_SHA1 |
| BYTE sha1[SHA1_DIGEST_SIZE]; |
| #endif |
| #ifdef TPM_ALG_SHA256 |
| BYTE sha256[SHA256_DIGEST_SIZE]; |
| #endif |
| #ifdef TPM_ALG_SHA384 |
| BYTE sha384[SHA384_DIGEST_SIZE]; |
| #endif |
| #ifdef TPM_ALG_SHA512 |
| BYTE sha512[SHA512_DIGEST_SIZE]; |
| #endif |
| #ifdef TPM_ALG_SM3_256 |
| BYTE sm3_256[SM3_256_DIGEST_SIZE]; |
| #endif |
| } TPMU_HA; |
| |
| // Table 71 Definition of TPMT_HA Structure < IN/OUT> |
| typedef struct { |
| TPMI_ALG_HASH hashAlg; |
| TPMU_HA digest; |
| } TPMT_HA; |
| |
| // Table 72 Definition of TPM2B_DIGEST Structure |
| typedef union { |
| struct { |
| UINT16 size; |
| BYTE buffer[sizeof(TPMU_HA)]; |
| } t; |
| TPM2B b; |
| } TPM2B_DIGEST; |
| |
| // Table 73 Definition of TPM2B_DATA Structure |
| typedef union { |
| struct { |
| UINT16 size; |
| BYTE buffer[sizeof(TPMT_HA)]; |
| } t; |
| TPM2B b; |
| } TPM2B_DATA; |
| |
| // Table 74 Definition of Types for TPM2B_NONCE |
| typedef TPM2B_DIGEST TPM2B_NONCE; |
| |
| // Table 75 Definition of Types for TPM2B_AUTH |
| typedef TPM2B_DIGEST TPM2B_AUTH; |
| |
| // Table 76 Definition of Types for TPM2B_OPERAND |
| typedef TPM2B_DIGEST TPM2B_OPERAND; |
| |
| // Table 77 Definition of TPM2B_EVENT Structure |
| typedef union { |
| struct { |
| UINT16 size; |
| BYTE buffer[1024]; |
| } t; |
| TPM2B b; |
| } TPM2B_EVENT; |
| |
| // Table 78 Definition of TPM2B_MAX_BUFFER Structure |
| typedef union { |
| struct { |
| UINT16 size; |
| BYTE buffer[MAX_DIGEST_BUFFER]; |
| } t; |
| TPM2B b; |
| } TPM2B_MAX_BUFFER; |
| |
| // Table 79 Definition of TPM2B_MAX_NV_BUFFER Structure |
| typedef union { |
| struct { |
| UINT16 size; |
| BYTE buffer[MAX_NV_BUFFER_SIZE]; |
| } t; |
| TPM2B b; |
| } TPM2B_MAX_NV_BUFFER; |
| |
| // Table 80 Definition of TPM2B_TIMEOUT Structure < IN/OUT> |
| typedef union { |
| struct { |
| UINT16 size; |
| BYTE buffer[sizeof(UINT64)]; |
| } t; |
| TPM2B b; |
| } TPM2B_TIMEOUT; |
| |
| // Table 81 Definition of TPM2B_IV Structure < IN/OUT> |
| typedef union { |
| struct { |
| UINT16 size; |
| BYTE buffer[MAX_SYM_BLOCK_SIZE]; |
| } t; |
| TPM2B b; |
| } TPM2B_IV; |
| |
| // Table 82 Definition of TPMU_NAME Union <> |
| typedef union { |
| TPMT_HA digest; |
| TPM_HANDLE handle; |
| } TPMU_NAME; |
| |
| // Table 83 Definition of TPM2B_NAME Structure |
| typedef union { |
| struct { |
| UINT16 size; |
| BYTE name[sizeof(TPMU_NAME)]; |
| } t; |
| TPM2B b; |
| } TPM2B_NAME; |
| |
| // Table 84 Definition of TPMS_PCR_SELECT Structure |
| typedef struct { |
| UINT8 sizeofSelect; |
| BYTE pcrSelect[PCR_SELECT_MAX]; |
| } TPMS_PCR_SELECT; |
| |
| // Table 85 Definition of TPMS_PCR_SELECTION Structure |
| typedef struct { |
| TPMI_ALG_HASH hash; |
| UINT8 sizeofSelect; |
| BYTE pcrSelect[PCR_SELECT_MAX]; |
| } TPMS_PCR_SELECTION; |
| |
| // Unprocessed: Table 86 Values for proof Used in Tickets |
| // Unprocessed: Table 87 General Format of a Ticket |
| // Table 88 Definition of TPMT_TK_CREATION Structure |
| typedef struct { |
| TPM_ST tag; |
| TPMI_RH_HIERARCHY hierarchy; |
| TPM2B_DIGEST digest; |
| } TPMT_TK_CREATION; |
| |
| // Table 89 Definition of TPMT_TK_VERIFIED Structure |
| typedef struct { |
| TPM_ST tag; |
| TPMI_RH_HIERARCHY hierarchy; |
| TPM2B_DIGEST digest; |
| } TPMT_TK_VERIFIED; |
| |
| // Table 90 Definition of TPMT_TK_AUTH Structure |
| typedef struct { |
| TPM_ST tag; |
| TPMI_RH_HIERARCHY hierarchy; |
| TPM2B_DIGEST digest; |
| } TPMT_TK_AUTH; |
| |
| // Table 91 Definition of TPMT_TK_HASHCHECK Structure |
| typedef struct { |
| TPM_ST tag; |
| TPMI_RH_HIERARCHY hierarchy; |
| TPM2B_DIGEST digest; |
| } TPMT_TK_HASHCHECK; |
| |
| // Table 92 Definition of TPMS_ALG_PROPERTY Structure < OUT> |
| typedef struct { |
| TPM_ALG_ID alg; |
| TPMA_ALGORITHM algProperties; |
| } TPMS_ALG_PROPERTY; |
| |
| // Table 93 Definition of TPMS_TAGGED_PROPERTY Structure < OUT> |
| typedef struct { |
| TPM_PT property; |
| UINT32 value; |
| } TPMS_TAGGED_PROPERTY; |
| |
| // Table 94 Definition of TPMS_TAGGED_PCR_SELECT Structure < OUT> |
| typedef struct { |
| TPM_PT tag; |
| UINT8 sizeofSelect; |
| BYTE pcrSelect[PCR_SELECT_MAX]; |
| } TPMS_TAGGED_PCR_SELECT; |
| |
| // Table 95 Definition of TPML_CC Structure |
| typedef struct { |
| UINT32 count; |
| TPM_CC commandCodes[MAX_CAP_CC]; |
| } TPML_CC; |
| |
| // Table 96 Definition of TPML_CCA Structure < OUT> |
| typedef struct { |
| UINT32 count; |
| TPMA_CC commandAttributes[MAX_CAP_CC]; |
| } TPML_CCA; |
| |
| // Table 97 Definition of TPML_ALG Structure |
| typedef struct { |
| UINT32 count; |
| TPM_ALG_ID algorithms[MAX_ALG_LIST_SIZE]; |
| } TPML_ALG; |
| |
| // Table 98 Definition of TPML_HANDLE Structure < OUT> |
| typedef struct { |
| UINT32 count; |
| TPM_HANDLE handle[MAX_CAP_HANDLES]; |
| } TPML_HANDLE; |
| |
| // Table 99 Definition of TPML_DIGEST Structure |
| typedef struct { |
| UINT32 count; |
| TPM2B_DIGEST digests[8]; |
| } TPML_DIGEST; |
| |
| // Table 100 Definition of TPML_DIGEST_VALUES Structure |
| typedef struct { |
| UINT32 count; |
| TPMT_HA digests[HASH_COUNT]; |
| } TPML_DIGEST_VALUES; |
| |
| // Table 101 Definition of TPM2B_DIGEST_VALUES Structure |
| typedef union { |
| struct { |
| UINT16 size; |
| BYTE buffer[sizeof(TPML_DIGEST_VALUES)]; |
| } t; |
| TPM2B b; |
| } TPM2B_DIGEST_VALUES; |
| |
| // Table 102 Definition of TPML_PCR_SELECTION Structure |
| typedef struct { |
| UINT32 count; |
| TPMS_PCR_SELECTION pcrSelections[HASH_COUNT]; |
| } TPML_PCR_SELECTION; |
| |
| // Table 103 Definition of TPML_ALG_PROPERTY Structure < OUT> |
| typedef struct { |
| UINT32 count; |
| TPMS_ALG_PROPERTY algProperties[MAX_CAP_ALGS]; |
| } TPML_ALG_PROPERTY; |
| |
| // Table 104 Definition of TPML_TAGGED_TPM_PROPERTY Structure < OUT> |
| typedef struct { |
| UINT32 count; |
| TPMS_TAGGED_PROPERTY tpmProperty[MAX_TPM_PROPERTIES]; |
| } TPML_TAGGED_TPM_PROPERTY; |
| |
| // Table 105 Definition of TPML_TAGGED_PCR_PROPERTY Structure < OUT> |
| typedef struct { |
| UINT32 count; |
| TPMS_TAGGED_PCR_SELECT pcrProperty[MAX_PCR_PROPERTIES]; |
| } TPML_TAGGED_PCR_PROPERTY; |
| |
| // Table 106 Definition of TPML_ECC_CURVE Structure < OUT> |
| typedef struct { |
| UINT32 count; |
| TPM_ECC_CURVE eccCurves[MAX_ECC_CURVES]; |
| } TPML_ECC_CURVE; |
| |
| // Table 107 Definition of TPMU_CAPABILITIES Union < OUT> |
| typedef union { |
| TPML_ALG_PROPERTY algorithms; |
| TPML_HANDLE handles; |
| TPML_CCA command; |
| TPML_CC ppCommands; |
| TPML_CC auditCommands; |
| TPML_PCR_SELECTION assignedPCR; |
| TPML_TAGGED_TPM_PROPERTY tpmProperties; |
| TPML_TAGGED_PCR_PROPERTY pcrProperties; |
| TPML_ECC_CURVE eccCurves; |
| } TPMU_CAPABILITIES; |
| |
| // Table 108 Definition of TPMS_CAPABILITY_DATA Structure < OUT> |
| typedef struct { |
| TPM_CAP capability; |
| TPMU_CAPABILITIES data; |
| } TPMS_CAPABILITY_DATA; |
| |
| // Table 109 Definition of TPMS_CLOCK_INFO Structure |
| typedef struct { |
| UINT64 clock; |
| UINT32 resetCount; |
| UINT32 restartCount; |
| TPMI_YES_NO safe; |
| } TPMS_CLOCK_INFO; |
| |
| // Table 110 Definition of TPMS_TIME_INFO Structure |
| typedef struct { |
| UINT64 time; |
| TPMS_CLOCK_INFO clockInfo; |
| } TPMS_TIME_INFO; |
| |
| // Table 111 Definition of TPMS_TIME_ATTEST_INFO Structure < OUT> |
| typedef struct { |
| TPMS_TIME_INFO time; |
| UINT64 firmwareVersion; |
| } TPMS_TIME_ATTEST_INFO; |
| |
| // Table 112 Definition of TPMS_CERTIFY_INFO Structure < OUT> |
| typedef struct { |
| TPM2B_NAME name; |
| TPM2B_NAME qualifiedName; |
| } TPMS_CERTIFY_INFO; |
| |
| // Table 113 Definition of TPMS_QUOTE_INFO Structure < OUT> |
| typedef struct { |
| TPML_PCR_SELECTION pcrSelect; |
| TPM2B_DIGEST pcrDigest; |
| } TPMS_QUOTE_INFO; |
| |
| // Table 114 Definition of TPMS_COMMAND_AUDIT_INFO Structure < OUT> |
| typedef struct { |
| UINT64 auditCounter; |
| TPM_ALG_ID digestAlg; |
| TPM2B_DIGEST auditDigest; |
| TPM2B_DIGEST commandDigest; |
| } TPMS_COMMAND_AUDIT_INFO; |
| |
| // Table 115 Definition of TPMS_SESSION_AUDIT_INFO Structure < OUT> |
| typedef struct { |
| TPMI_YES_NO exclusiveSession; |
| TPM2B_DIGEST sessionDigest; |
| } TPMS_SESSION_AUDIT_INFO; |
| |
| // Table 116 Definition of TPMS_CREATION_INFO Structure < OUT> |
| typedef struct { |
| TPM2B_NAME objectName; |
| TPM2B_DIGEST creationHash; |
| } TPMS_CREATION_INFO; |
| |
| // Table 117 Definition of TPMS_NV_CERTIFY_INFO Structure < OUT> |
| typedef struct { |
| TPM2B_NAME indexName; |
| UINT16 offset; |
| TPM2B_MAX_NV_BUFFER nvContents; |
| } TPMS_NV_CERTIFY_INFO; |
| |
| // Table 118 Definition of TPMI_ST_ATTEST Type < OUT> |
| typedef TPM_ST TPMI_ST_ATTEST; |
| // Table 119 Definition of TPMU_ATTEST Union < OUT> |
| typedef union { |
| TPMS_CERTIFY_INFO certify; |
| TPMS_CREATION_INFO creation; |
| TPMS_QUOTE_INFO quote; |
| TPMS_COMMAND_AUDIT_INFO commandAudit; |
| TPMS_SESSION_AUDIT_INFO sessionAudit; |
| TPMS_TIME_ATTEST_INFO time; |
| TPMS_NV_CERTIFY_INFO nv; |
| } TPMU_ATTEST; |
| |
| // Table 120 Definition of TPMS_ATTEST Structure < OUT> |
| typedef struct { |
| TPM_GENERATED magic; |
| TPMI_ST_ATTEST type; |
| TPM2B_NAME qualifiedSigner; |
| TPM2B_DATA extraData; |
| TPMS_CLOCK_INFO clockInfo; |
| UINT64 firmwareVersion; |
| TPMU_ATTEST attested; |
| } TPMS_ATTEST; |
| |
| // Table 121 Definition of TPM2B_ATTEST Structure < OUT> |
| typedef union { |
| struct { |
| UINT16 size; |
| BYTE attestationData[sizeof(TPMS_ATTEST)]; |
| } t; |
| TPM2B b; |
| } TPM2B_ATTEST; |
| |
| // Table 122 Definition of TPMS_AUTH_COMMAND Structure < IN> |
| typedef struct { |
| TPMI_SH_AUTH_SESSION sessionHandle; |
| TPM2B_NONCE nonce; |
| TPMA_SESSION sessionAttributes; |
| TPM2B_AUTH hmac; |
| } TPMS_AUTH_COMMAND; |
| |
| // Table 123 Definition of TPMS_AUTH_RESPONSE Structure < OUT> |
| typedef struct { |
| TPM2B_NONCE nonce; |
| TPMA_SESSION sessionAttributes; |
| TPM2B_AUTH hmac; |
| } TPMS_AUTH_RESPONSE; |
| |
| // Table 124 Definition of TPMI_!ALG.S_KEY_BITS Type |
| typedef TPM_KEY_BITS TPMI_AES_KEY_BITS; |
| typedef TPM_KEY_BITS TPMI_SM4_KEY_BITS; |
| typedef TPM_KEY_BITS TPMI_CAMELLIA_KEY_BITS; |
| |
| |
| // Table 125 Definition of TPMU_SYM_KEY_BITS Union |
| typedef union { |
| #ifdef TPM_ALG_AES |
| TPMI_AES_KEY_BITS aes; |
| #endif |
| #ifdef TPM_ALG_SM4 |
| TPMI_SM4_KEY_BITS sm4; |
| #endif |
| #ifdef TPM_ALG_CAMELLIA |
| TPMI_CAMELLIA_KEY_BITS camellia; |
| #endif |
| TPM_KEY_BITS sym; |
| #ifdef TPM_ALG_XOR |
| TPMI_ALG_HASH xor_; |
| #endif |
| } TPMU_SYM_KEY_BITS; |
| |
| // Table 126 Definition of TPMU_SYM_MODE Union |
| typedef union { |
| #ifdef TPM_ALG_AES |
| TPMI_ALG_SYM_MODE aes; |
| #endif |
| #ifdef TPM_ALG_SM4 |
| TPMI_ALG_SYM_MODE sm4; |
| #endif |
| #ifdef TPM_ALG_CAMELLIA |
| TPMI_ALG_SYM_MODE camellia; |
| #endif |
| TPMI_ALG_SYM_MODE sym; |
| } TPMU_SYM_MODE; |
| |
| // Table 127 xDefinition of TPMU_SYM_DETAILS Union |
| typedef union { |
| } TPMU_SYM_DETAILS; |
| |
| // Table 128 Definition of TPMT_SYM_DEF Structure |
| typedef struct { |
| TPMI_ALG_SYM algorithm; |
| TPMU_SYM_KEY_BITS keyBits; |
| TPMU_SYM_MODE mode; |
| } TPMT_SYM_DEF; |
| |
| // Table 129 Definition of TPMT_SYM_DEF_OBJECT Structure |
| typedef struct { |
| TPMI_ALG_SYM_OBJECT algorithm; |
| TPMU_SYM_KEY_BITS keyBits; |
| TPMU_SYM_MODE mode; |
| } TPMT_SYM_DEF_OBJECT; |
| |
| // Table 130 Definition of TPM2B_SYM_KEY Structure |
| typedef union { |
| struct { |
| UINT16 size; |
| BYTE buffer[MAX_SYM_KEY_BYTES]; |
| } t; |
| TPM2B b; |
| } TPM2B_SYM_KEY; |
| |
| // Table 131 Definition of TPMS_SYMCIPHER_PARMS Structure |
| typedef struct { |
| TPMT_SYM_DEF_OBJECT sym; |
| } TPMS_SYMCIPHER_PARMS; |
| |
| // Table 132 Definition of TPM2B_SENSITIVE_DATA Structure |
| typedef union { |
| struct { |
| UINT16 size; |
| BYTE buffer[MAX_SYM_DATA]; |
| } t; |
| TPM2B b; |
| } TPM2B_SENSITIVE_DATA; |
| |
| // Table 133 Definition of TPMS_SENSITIVE_CREATE Structure < IN> |
| typedef struct { |
| TPM2B_AUTH userAuth; |
| TPM2B_SENSITIVE_DATA data; |
| } TPMS_SENSITIVE_CREATE; |
| |
| // Table 134 Definition of TPM2B_SENSITIVE_CREATE Structure < IN, S> |
| typedef union { |
| struct { |
| UINT16 size; |
| TPMS_SENSITIVE_CREATE sensitive; |
| } t; |
| TPM2B b; |
| } TPM2B_SENSITIVE_CREATE; |
| |
| // Table 135 Definition of TPMS_SCHEME_HASH Structure |
| typedef struct { |
| TPMI_ALG_HASH hashAlg; |
| } TPMS_SCHEME_HASH; |
| |
| // Table 136 Definition of TPMS_SCHEME_ECDAA Structure |
| typedef struct { |
| TPMI_ALG_HASH hashAlg; |
| UINT16 count; |
| } TPMS_SCHEME_ECDAA; |
| |
| // Table 137 Definition of TPMI_ALG_KEYEDHASH_SCHEME Type |
| typedef TPM_ALG_ID TPMI_ALG_KEYEDHASH_SCHEME; |
| // Table 138 Definition of Types for HMAC_SIG_SCHEME |
| typedef TPMS_SCHEME_HASH TPMS_SCHEME_HMAC; |
| |
| // Table 139 Definition of TPMS_SCHEME_XOR Structure |
| typedef struct { |
| TPMI_ALG_HASH hashAlg; |
| TPMI_ALG_KDF kdf; |
| } TPMS_SCHEME_XOR; |
| |
| // Table 140 Definition of TPMU_SCHEME_KEYEDHASH Union < IN/OUT, S> |
| typedef union { |
| #ifdef TPM_ALG_HMAC |
| TPMS_SCHEME_HMAC hmac; |
| #endif |
| #ifdef TPM_ALG_XOR |
| TPMS_SCHEME_XOR xor_; |
| #endif |
| } TPMU_SCHEME_KEYEDHASH; |
| |
| // Table 141 Definition of TPMT_KEYEDHASH_SCHEME Structure |
| typedef struct { |
| TPMI_ALG_KEYEDHASH_SCHEME scheme; |
| TPMU_SCHEME_KEYEDHASH details; |
| } TPMT_KEYEDHASH_SCHEME; |
| |
| // Table 142 Definition of Types for RSA Signature Schemes |
| typedef TPMS_SCHEME_HASH TPMS_SIG_SCHEME_RSASSA; |
| typedef TPMS_SCHEME_HASH TPMS_SIG_SCHEME_RSAPSS; |
| |
| // Table 143 Definition of Types for ECC Signature Schemes |
| typedef TPMS_SCHEME_HASH TPMS_SIG_SCHEME_ECDSA; |
| typedef TPMS_SCHEME_HASH TPMS_SIG_SCHEME_SM2; |
| typedef TPMS_SCHEME_HASH TPMS_SIG_SCHEME_ECSCHNORR; |
| typedef TPMS_SCHEME_ECDAA TPMS_SIG_SCHEME_ECDAA; |
| |
| // Table 144 Definition of TPMU_SIG_SCHEME Union < IN/OUT, S> |
| typedef union { |
| #ifdef TPM_ALG_RSASSA |
| TPMS_SIG_SCHEME_RSASSA rsassa; |
| #endif |
| #ifdef TPM_ALG_RSAPSS |
| TPMS_SIG_SCHEME_RSAPSS rsapss; |
| #endif |
| #ifdef TPM_ALG_ECDSA |
| TPMS_SIG_SCHEME_ECDSA ecdsa; |
| #endif |
| // TODO(ngm): ECDAA is not currently supported |
| // on CR50, but this field has unguarded references |
| // in CryptUtil.c, so allow its inclusion. |
| // #ifdef TPM_ALG_ECDAA |
| TPMS_SIG_SCHEME_ECDAA ecdaa; |
| // #endif |
| #ifdef TPM_ALG_SM2 |
| TPMS_SIG_SCHEME_SM2 sm2; |
| #endif |
| #ifdef TPM_ALG_ECSCHNORR |
| TPMS_SIG_SCHEME_ECSCHNORR ecschnorr; |
| #endif |
| #ifdef TPM_ALG_HMAC |
| TPMS_SCHEME_HMAC hmac; |
| #endif |
| TPMS_SCHEME_HASH any; |
| } TPMU_SIG_SCHEME; |
| |
| // Table 145 Definition of TPMT_SIG_SCHEME Structure |
| typedef struct { |
| TPMI_ALG_SIG_SCHEME scheme; |
| TPMU_SIG_SCHEME details; |
| } TPMT_SIG_SCHEME; |
| |
| // Table 146 Definition of Types for Encryption Schemes |
| typedef TPMS_SCHEME_HASH TPMS_ENC_SCHEME_OAEP; |
| typedef TPMS_EMPTY TPMS_ENC_SCHEME_RSAES; |
| |
| // Table 147 Definition of Types for ECC Key Exchange |
| typedef TPMS_SCHEME_HASH TPMS_KEY_SCHEME_ECDH; |
| typedef TPMS_SCHEME_HASH TPMS_KEY_SCHEME_ECMQV; |
| |
| // Table 148 Definition of Types for KDF Schemes |
| typedef TPMS_SCHEME_HASH TPMS_SCHEME_MGF1; |
| typedef TPMS_SCHEME_HASH TPMS_SCHEME_KDF1_SP800_56A; |
| typedef TPMS_SCHEME_HASH TPMS_SCHEME_KDF2; |
| typedef TPMS_SCHEME_HASH TPMS_SCHEME_KDF1_SP800_108; |
| |
| // Table 149 Definition of TPMU_KDF_SCHEME Union < IN/OUT, S> |
| typedef union { |
| #ifdef TPM_ALG_MGF1 |
| TPMS_SCHEME_MGF1 mgf1; |
| #endif |
| #ifdef TPM_ALG_KDF1_SP800_56A |
| TPMS_SCHEME_KDF1_SP800_56A kdf1_sp800_56a; |
| #endif |
| #ifdef TPM_ALG_KDF2 |
| TPMS_SCHEME_KDF2 kdf2; |
| #endif |
| #ifdef TPM_ALG_KDF1_SP800_108 |
| TPMS_SCHEME_KDF1_SP800_108 kdf1_sp800_108; |
| #endif |
| } TPMU_KDF_SCHEME; |
| |
| // Table 150 Definition of TPMT_KDF_SCHEME Structure |
| typedef struct { |
| TPMI_ALG_KDF scheme; |
| TPMU_KDF_SCHEME details; |
| } TPMT_KDF_SCHEME; |
| |
| // Table 151 Definition of TPMI_ALG_ASYM_SCHEME Type <> |
| typedef TPM_ALG_ID TPMI_ALG_ASYM_SCHEME; |
| // Table 152 Definition of TPMU_ASYM_SCHEME Union |
| typedef union { |
| #ifdef TPM_ALG_ECDH |
| TPMS_KEY_SCHEME_ECDH ecdh; |
| #endif |
| #ifdef TPM_ALG_ECMQV |
| TPMS_KEY_SCHEME_ECMQV ecmqv; |
| #endif |
| #ifdef TPM_ALG_RSASSA |
| TPMS_SIG_SCHEME_RSASSA rsassa; |
| #endif |
| #ifdef TPM_ALG_RSAPSS |
| TPMS_SIG_SCHEME_RSAPSS rsapss; |
| #endif |
| #ifdef TPM_ALG_ECDSA |
| TPMS_SIG_SCHEME_ECDSA ecdsa; |
| #endif |
| #ifdef TPM_ALG_ECDAA |
| TPMS_SIG_SCHEME_ECDAA ecdaa; |
| #endif |
| #ifdef TPM_ALG_SM2 |
| TPMS_SIG_SCHEME_SM2 sm2; |
| #endif |
| #ifdef TPM_ALG_ECSCHNORR |
| TPMS_SIG_SCHEME_ECSCHNORR ecschnorr; |
| #endif |
| #ifdef TPM_ALG_RSAES |
| TPMS_ENC_SCHEME_RSAES rsaes; |
| #endif |
| #ifdef TPM_ALG_OAEP |
| TPMS_ENC_SCHEME_OAEP oaep; |
| #endif |
| TPMS_SCHEME_HASH anySig; |
| } TPMU_ASYM_SCHEME; |
| |
| // Table 153 Definition of TPMT_ASYM_SCHEME Structure <> |
| typedef struct { |
| TPMI_ALG_ASYM_SCHEME scheme; |
| TPMU_ASYM_SCHEME details; |
| } TPMT_ASYM_SCHEME; |
| |
| // Table 154 Definition of TPMI_ALG_RSA_SCHEME Type |
| typedef TPM_ALG_ID TPMI_ALG_RSA_SCHEME; |
| // Table 155 Definition of TPMT_RSA_SCHEME Structure |
| typedef struct { |
| TPMI_ALG_RSA_SCHEME scheme; |
| TPMU_ASYM_SCHEME details; |
| } TPMT_RSA_SCHEME; |
| |
| // Table 156 Definition of TPMI_ALG_RSA_DECRYPT Type |
| typedef TPM_ALG_ID TPMI_ALG_RSA_DECRYPT; |
| // Table 157 Definition of TPMT_RSA_DECRYPT Structure |
| typedef struct { |
| TPMI_ALG_RSA_DECRYPT scheme; |
| TPMU_ASYM_SCHEME details; |
| } TPMT_RSA_DECRYPT; |
| |
| // Table 158 Definition of TPM2B_PUBLIC_KEY_RSA Structure |
| typedef union { |
| struct { |
| UINT16 size; |
| BYTE buffer[MAX_RSA_KEY_BYTES]; |
| } t; |
| TPM2B b; |
| } TPM2B_PUBLIC_KEY_RSA; |
| |
| // Table 159 Definition of TPMI_RSA_KEY_BITS Type |
| typedef TPM_KEY_BITS TPMI_RSA_KEY_BITS; |
| // Table 160 Definition of TPM2B_PRIVATE_KEY_RSA Structure |
| typedef union { |
| struct { |
| UINT16 size; |
| BYTE buffer[MAX_RSA_KEY_BYTES/2]; |
| } t; |
| TPM2B b; |
| } TPM2B_PRIVATE_KEY_RSA; |
| |
| // Table 161 Definition of TPM2B_ECC_PARAMETER Structure |
| typedef union { |
| struct { |
| UINT16 size; |
| BYTE buffer[MAX_ECC_KEY_BYTES]; |
| } t; |
| TPM2B b; |
| } TPM2B_ECC_PARAMETER; |
| |
| // Table 162 Definition of TPMS_ECC_POINT Structure |
| typedef struct { |
| TPM2B_ECC_PARAMETER x; |
| TPM2B_ECC_PARAMETER y; |
| } TPMS_ECC_POINT; |
| |
| // Table 163 Definition of TPM2B_ECC_POINT Structure |
| typedef union { |
| struct { |
| UINT16 size; |
| TPMS_ECC_POINT point; |
| } t; |
| TPM2B b; |
| } TPM2B_ECC_POINT; |
| |
| // Table 164 Definition of TPMI_ALG_ECC_SCHEME Type |
| typedef TPM_ALG_ID TPMI_ALG_ECC_SCHEME; |
| // Table 165 Definition of TPMI_ECC_CURVE Type |
| typedef TPM_ECC_CURVE TPMI_ECC_CURVE; |
| // Table 166 Definition of TPMT_ECC_SCHEME Structure |
| typedef struct { |
| TPMI_ALG_ECC_SCHEME scheme; |
| TPMU_ASYM_SCHEME details; |
| } TPMT_ECC_SCHEME; |
| |
| // Table 167 Definition of TPMS_ALGORITHM_DETAIL_ECC Structure < OUT> |
| typedef struct { |
| TPM_ECC_CURVE curveID; |
| UINT16 keySize; |
| TPMT_KDF_SCHEME kdf; |
| TPMT_ECC_SCHEME sign; |
| TPM2B_ECC_PARAMETER p; |
| TPM2B_ECC_PARAMETER a; |
| TPM2B_ECC_PARAMETER b; |
| TPM2B_ECC_PARAMETER gX; |
| TPM2B_ECC_PARAMETER gY; |
| TPM2B_ECC_PARAMETER n; |
| TPM2B_ECC_PARAMETER h; |
| } TPMS_ALGORITHM_DETAIL_ECC; |
| |
| // Table 168 Definition of TPMS_SIGNATURE_RSA Structure |
| typedef struct { |
| TPMI_ALG_HASH hash; |
| TPM2B_PUBLIC_KEY_RSA sig; |
| } TPMS_SIGNATURE_RSA; |
| |
| // Table 169 Definition of Types for Signature |
| typedef TPMS_SIGNATURE_RSA TPMS_SIGNATURE_RSASSA; |
| typedef TPMS_SIGNATURE_RSA TPMS_SIGNATURE_RSAPSS; |
| |
| // Table 170 Definition of TPMS_SIGNATURE_ECC Structure |
| typedef struct { |
| TPMI_ALG_HASH hash; |
| TPM2B_ECC_PARAMETER signatureR; |
| TPM2B_ECC_PARAMETER signatureS; |
| } TPMS_SIGNATURE_ECC; |
| |
| // Table 171 Definition of Types for TPMS_SIGNATUE_ECC |
| typedef TPMS_SIGNATURE_ECC TPMS_SIGNATURE_ECDSA; |
| typedef TPMS_SIGNATURE_ECC TPMS_SIGNATURE_ECDAA; |
| typedef TPMS_SIGNATURE_ECC TPMS_SIGNATURE_SM2; |
| typedef TPMS_SIGNATURE_ECC TPMS_SIGNATURE_ECSCHNORR; |
| |
| // Table 172 Definition of TPMU_SIGNATURE Union < IN/OUT, S> |
| typedef union { |
| #ifdef TPM_ALG_RSASSA |
| TPMS_SIGNATURE_RSASSA rsassa; |
| #endif |
| #ifdef TPM_ALG_RSAPSS |
| TPMS_SIGNATURE_RSAPSS rsapss; |
| #endif |
| #ifdef TPM_ALG_ECDSA |
| TPMS_SIGNATURE_ECDSA ecdsa; |
| #endif |
| #ifdef TPM_ALG_ECDAA |
| TPMS_SIGNATURE_ECDAA ecdaa; |
| #endif |
| #ifdef TPM_ALG_SM2 |
| TPMS_SIGNATURE_SM2 sm2; |
| #endif |
| #ifdef TPM_ALG_ECSCHNORR |
| TPMS_SIGNATURE_ECSCHNORR ecschnorr; |
| #endif |
| #ifdef TPM_ALG_HMAC |
| TPMT_HA hmac; |
| #endif |
| TPMS_SCHEME_HASH any; |
| } TPMU_SIGNATURE; |
| |
| // Table 173 Definition of TPMT_SIGNATURE Structure |
| typedef struct { |
| TPMI_ALG_SIG_SCHEME sigAlg; |
| TPMU_SIGNATURE signature; |
| } TPMT_SIGNATURE; |
| |
| // Table 174 Definition of TPMU_ENCRYPTED_SECRET Union < S> |
| typedef union { |
| #ifdef TPM_ALG_ECC |
| BYTE ecc[sizeof(TPMS_ECC_POINT)]; |
| #endif |
| #ifdef TPM_ALG_RSA |
| BYTE rsa[MAX_RSA_KEY_BYTES]; |
| #endif |
| #ifdef TPM_ALG_SYMCIPHER |
| BYTE symmetric[sizeof(TPM2B_DIGEST)]; |
| #endif |
| #ifdef TPM_ALG_KEYEDHASH |
| BYTE keyedHash[sizeof(TPM2B_DIGEST)]; |
| #endif |
| } TPMU_ENCRYPTED_SECRET; |
| |
| // Table 175 Definition of TPM2B_ENCRYPTED_SECRET Structure |
| typedef union { |
| struct { |
| UINT16 size; |
| BYTE secret[sizeof(TPMU_ENCRYPTED_SECRET)]; |
| } t; |
| TPM2B b; |
| } TPM2B_ENCRYPTED_SECRET; |
| |
| // Table 176 Definition of TPMI_ALG_PUBLIC Type |
| typedef TPM_ALG_ID TPMI_ALG_PUBLIC; |
| // Table 177 Definition of TPMU_PUBLIC_ID Union < IN/OUT, S> |
| typedef union { |
| #ifdef TPM_ALG_KEYEDHASH |
| TPM2B_DIGEST keyedHash; |
| #endif |
| #ifdef TPM_ALG_SYMCIPHER |
| TPM2B_DIGEST sym; |
| #endif |
| #ifdef TPM_ALG_RSA |
| TPM2B_PUBLIC_KEY_RSA rsa; |
| #endif |
| #ifdef TPM_ALG_ECC |
| TPMS_ECC_POINT ecc; |
| #endif |
| } TPMU_PUBLIC_ID; |
| |
| // Table 178 Definition of TPMS_KEYEDHASH_PARMS Structure |
| typedef struct { |
| TPMT_KEYEDHASH_SCHEME scheme; |
| } TPMS_KEYEDHASH_PARMS; |
| |
| // Table 179 Definition of TPMS_ASYM_PARMS Structure <> |
| typedef struct { |
| TPMT_SYM_DEF_OBJECT symmetric; |
| TPMT_ASYM_SCHEME scheme; |
| } TPMS_ASYM_PARMS; |
| |
| // Table 180 Definition of TPMS_RSA_PARMS Structure |
| typedef struct { |
| TPMT_SYM_DEF_OBJECT symmetric; |
| TPMT_RSA_SCHEME scheme; |
| TPMI_RSA_KEY_BITS keyBits; |
| UINT32 exponent; |
| } TPMS_RSA_PARMS; |
| |
| // Table 181 Definition of TPMS_ECC_PARMS Structure |
| typedef struct { |
| TPMT_SYM_DEF_OBJECT symmetric; |
| TPMT_ECC_SCHEME scheme; |
| TPMI_ECC_CURVE curveID; |
| TPMT_KDF_SCHEME kdf; |
| } TPMS_ECC_PARMS; |
| |
| // Table 182 Definition of TPMU_PUBLIC_PARMS Union < IN/OUT, S> |
| typedef union { |
| #ifdef TPM_ALG_KEYEDHASH |
| TPMS_KEYEDHASH_PARMS keyedHashDetail; |
| #endif |
| #ifdef TPM_ALG_SYMCIPHER |
| TPMS_SYMCIPHER_PARMS symDetail; |
| #endif |
| #ifdef TPM_ALG_RSA |
| TPMS_RSA_PARMS rsaDetail; |
| #endif |
| #ifdef TPM_ALG_ECC |
| TPMS_ECC_PARMS eccDetail; |
| #endif |
| TPMS_ASYM_PARMS asymDetail; |
| } TPMU_PUBLIC_PARMS; |
| |
| // Table 183 Definition of TPMT_PUBLIC_PARMS Structure |
| typedef struct { |
| TPMI_ALG_PUBLIC type; |
| TPMU_PUBLIC_PARMS parameters; |
| } TPMT_PUBLIC_PARMS; |
| |
| // Table 184 Definition of TPMT_PUBLIC Structure |
| typedef struct { |
| TPMI_ALG_PUBLIC type; |
| TPMI_ALG_HASH nameAlg; |
| TPMA_OBJECT objectAttributes; |
| TPM2B_DIGEST authPolicy; |
| TPMU_PUBLIC_PARMS parameters; |
| TPMU_PUBLIC_ID unique; |
| } TPMT_PUBLIC; |
| |
| // Table 185 Definition of TPM2B_PUBLIC Structure |
| typedef union { |
| struct { |
| UINT16 size; |
| TPMT_PUBLIC publicArea; |
| } t; |
| TPM2B b; |
| } TPM2B_PUBLIC; |
| |
| // Table 186 Definition of TPM2B_PRIVATE_VENDOR_SPECIFIC Structure<> |
| typedef union { |
| struct { |
| UINT16 size; |
| BYTE buffer[PRIVATE_VENDOR_SPECIFIC_BYTES]; |
| } t; |
| TPM2B b; |
| } TPM2B_PRIVATE_VENDOR_SPECIFIC; |
| |
| // Table 187 Definition of TPMU_SENSITIVE_COMPOSITE Union < IN/OUT, S> |
| typedef union { |
| #ifdef TPM_ALG_RSA |
| TPM2B_PRIVATE_KEY_RSA rsa; |
| #endif |
| #ifdef TPM_ALG_ECC |
| TPM2B_ECC_PARAMETER ecc; |
| #endif |
| #ifdef TPM_ALG_KEYEDHASH |
| TPM2B_SENSITIVE_DATA bits; |
| #endif |
| #ifdef TPM_ALG_SYMCIPHER |
| TPM2B_SYM_KEY sym; |
| #endif |
| TPM2B_PRIVATE_VENDOR_SPECIFIC any; |
| } TPMU_SENSITIVE_COMPOSITE; |
| |
| // Table 188 Definition of TPMT_SENSITIVE Structure |
| typedef struct { |
| TPMI_ALG_PUBLIC sensitiveType; |
| TPM2B_AUTH authValue; |
| TPM2B_DIGEST seedValue; |
| TPMU_SENSITIVE_COMPOSITE sensitive; |
| } TPMT_SENSITIVE; |
| |
| // Table 189 Definition of TPM2B_SENSITIVE Structure < IN/OUT> |
| typedef union { |
| struct { |
| UINT16 size; |
| TPMT_SENSITIVE sensitiveArea; |
| } t; |
| TPM2B b; |
| } TPM2B_SENSITIVE; |
| |
| // Table 190 Definition of _PRIVATE Structure <> |
| typedef struct { |
| TPM2B_DIGEST integrityOuter; |
| TPM2B_DIGEST integrityInner; |
| TPMT_SENSITIVE sensitive; |
| } _PRIVATE; |
| |
| // Table 191 Definition of TPM2B_PRIVATE Structure < IN/OUT, S> |
| typedef union { |
| struct { |
| UINT16 size; |
| BYTE buffer[sizeof(_PRIVATE)]; |
| } t; |
| TPM2B b; |
| } TPM2B_PRIVATE; |
| |
| // Table 192 Definition of _ID_OBJECT Structure <> |
| typedef struct { |
| TPM2B_DIGEST integrityHMAC; |
| TPM2B_DIGEST encIdentity; |
| } _ID_OBJECT; |
| |
| // Table 193 Definition of TPM2B_ID_OBJECT Structure < IN/OUT> |
| typedef union { |
| struct { |
| UINT16 size; |
| BYTE credential[sizeof(_ID_OBJECT)]; |
| } t; |
| TPM2B b; |
| } TPM2B_ID_OBJECT; |
| |
| // Table 194 Definition of TPM_NV_INDEX Bits <> |
| typedef struct { |
| UINT32 index : 24; |
| UINT32 RH_NV : 8; |
| } TPM_NV_INDEX; |
| |
| // Table 195 Definition of TPMA_NV Bits |
| typedef struct { |
| UINT32 TPMA_NV_PPWRITE : 1; |
| UINT32 TPMA_NV_OWNERWRITE : 1; |
| UINT32 TPMA_NV_AUTHWRITE : 1; |
| UINT32 TPMA_NV_POLICYWRITE : 1; |
| UINT32 TPMA_NV_COUNTER : 1; |
| UINT32 TPMA_NV_BITS : 1; |
| UINT32 TPMA_NV_EXTEND : 1; |
| UINT32 reserved7_9 : 3; |
| UINT32 TPMA_NV_POLICY_DELETE : 1; |
| UINT32 TPMA_NV_WRITELOCKED : 1; |
| UINT32 TPMA_NV_WRITEALL : 1; |
| UINT32 TPMA_NV_WRITEDEFINE : 1; |
| UINT32 TPMA_NV_WRITE_STCLEAR : 1; |
| UINT32 TPMA_NV_GLOBALLOCK : 1; |
| UINT32 TPMA_NV_PPREAD : 1; |
| UINT32 TPMA_NV_OWNERREAD : 1; |
| UINT32 TPMA_NV_AUTHREAD : 1; |
| UINT32 TPMA_NV_POLICYREAD : 1; |
| UINT32 reserved20_24 : 5; |
| UINT32 TPMA_NV_NO_DA : 1; |
| UINT32 TPMA_NV_ORDERLY : 1; |
| UINT32 TPMA_NV_CLEAR_STCLEAR : 1; |
| UINT32 TPMA_NV_READLOCKED : 1; |
| UINT32 TPMA_NV_WRITTEN : 1; |
| UINT32 TPMA_NV_PLATFORMCREATE : 1; |
| UINT32 TPMA_NV_READ_STCLEAR : 1; |
| } TPMA_NV; |
| |
| // Table 196 Definition of TPMS_NV_PUBLIC Structure |
| typedef struct { |
| TPMI_RH_NV_INDEX nvIndex; |
| TPMI_ALG_HASH nameAlg; |
| TPMA_NV attributes; |
| TPM2B_DIGEST authPolicy; |
| UINT16 dataSize; |
| } TPMS_NV_PUBLIC; |
| |
| // Table 197 Definition of TPM2B_NV_PUBLIC Structure |
| typedef union { |
| struct { |
| UINT16 size; |
| TPMS_NV_PUBLIC nvPublic; |
| } t; |
| TPM2B b; |
| } TPM2B_NV_PUBLIC; |
| |
| // Table 198 Definition of TPM2B_CONTEXT_SENSITIVE Structure < IN/OUT> |
| typedef union { |
| struct { |
| UINT16 size; |
| BYTE buffer[MAX_CONTEXT_SIZE]; |
| } t; |
| TPM2B b; |
| } TPM2B_CONTEXT_SENSITIVE; |
| |
| // Table 199 Definition of TPMS_CONTEXT_DATA Structure < IN/OUT, S> |
| typedef struct { |
| TPM2B_DIGEST integrity; |
| TPM2B_CONTEXT_SENSITIVE encrypted; |
| } TPMS_CONTEXT_DATA; |
| |
| // Table 200 Definition of TPM2B_CONTEXT_DATA Structure < IN/OUT> |
| typedef union { |
| struct { |
| UINT16 size; |
| BYTE buffer[sizeof(TPMS_CONTEXT_DATA)]; |
| } t; |
| TPM2B b; |
| } TPM2B_CONTEXT_DATA; |
| |
| // Table 201 Definition of TPMS_CONTEXT Structure |
| typedef struct { |
| UINT64 sequence; |
| TPMI_DH_CONTEXT savedHandle; |
| TPMI_RH_HIERARCHY hierarchy; |
| TPM2B_CONTEXT_DATA contextBlob; |
| } TPMS_CONTEXT; |
| |
| // Unprocessed: Table 202 Context Handle Values |
| // Table 203 Definition of TPMS_CREATION_DATA Structure < OUT> |
| typedef struct { |
| TPML_PCR_SELECTION pcrSelect; |
| TPM2B_DIGEST pcrDigest; |
| TPMA_LOCALITY locality; |
| TPM_ALG_ID parentNameAlg; |
| TPM2B_NAME parentName; |
| TPM2B_NAME parentQualifiedName; |
| TPM2B_DATA outsideInfo; |
| } TPMS_CREATION_DATA; |
| |
| // Table 204 Definition of TPM2B_CREATION_DATA Structure < OUT> |
| typedef union { |
| struct { |
| UINT16 size; |
| TPMS_CREATION_DATA creationData; |
| } t; |
| TPM2B b; |
| } TPM2B_CREATION_DATA; |
| |
| |
| #endif // TPM2_TPM_TYPES_H_ |