Trusted Platform Module Library
Part 2: Structures
Family “2.0”
Level 00 Revision 00.99
October 31, 2013

Contact: admin@trustedcomputinggroup.org

Published
Copyright © TCG 2006-2013

TCG

Part 2: Structures

Trusted Platform Module Library

Licenses and Notices
1. Copyright Licenses:


Trusted Computing Group (TCG) grants to the user of the source code in this specification (the
“Source Code”) a worldwide, irrevocable, nonexclusive, royalty free, copyright license to
reproduce, create derivative works, distribute, display and perform the Source Code and
derivative works thereof, and to grant others the rights granted herein.



The TCG grants to the user of the other parts of the specification (other than the Source Code)
the rights to reproduce, distribute, display, and perform the specification solely for the purpose of
developing products based on such documents.

2. Source Code Distribution Conditions:


Redistributions of Source Code must retain the above copyright licenses, this list of conditions
and the following disclaimers.



Redistributions in binary form must reproduce the above copyright licenses, this list of conditions
and the following disclaimers in the documentation and/or other materials provided with the
distribution.

3. Disclaimers:


THE COPYRIGHT LICENSES SET FORTH ABOVE DO NOT REPRESENT ANY FORM OF
LICENSE OR WAIVER, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, WITH
RESPECT TO PATENT RIGHTS HELD BY TCG MEMBERS (OR OTHER THIRD PARTIES)
THAT MAY BE NECESSARY TO IMPLEMENT THIS SPECIFICATION OR OTHERWISE.
Contact TCG Administration (admin@trustedcomputinggroup.org) for information on specification
licensing rights available through TCG membership agreements.



THIS SPECIFICATION IS PROVIDED "AS IS" WITH NO EXPRESS OR IMPLIED WARRANTIES
WHATSOEVER, INCLUDING ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A
PARTICULAR PURPOSE, ACCURACY, COMPLETENESS, OR NONINFRINGEMENT OF
INTELLECTUAL PROPERTY RIGHTS, OR ANY WARRANTY OTHERWISE ARISING OUT OF
ANY PROPOSAL, SPECIFICATION OR SAMPLE.



Without limitation, TCG and its members and licensors disclaim all liability, including liability for
infringement of any proprietary rights, relating to use of information in this specification and to the
implementation of this specification, and TCG disclaims all liability for cost of procurement of
substitute goods or services, lost profits, loss of use, loss of data or any incidental, consequential,
direct, indirect, or special damages, whether under contract, tort, warranty or otherwise, arising in
any way out of use or reliance upon this specification or any information herein.

Any marks and brands contained herein are the property of their respective owners.

Page ii
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

CONTENTS
1

Scope .................................................................................................................................................... 1

2

Terms and definitions ............................................................................................................................ 1

3

Symbols and abbreviated terms ............................................................................................................ 1

4

Notation ................................................................................................................................................. 1
4.1
Introduction ................................................................................................................................ 1
4.2
Named Constants ...................................................................................................................... 2
4.3
Data Type Aliases (typedefs) .................................................................................................... 3
4.4
Enumerations............................................................................................................................. 3
4.5
Interface Type ............................................................................................................................ 4
4.6
Arrays ........................................................................................................................................ 5
4.7
Structure Definitions .................................................................................................................. 6
4.8
Conditional Types ...................................................................................................................... 7
4.9
Unions........................................................................................................................................ 8
4.9.1
Introduction...................................................................................................................... 8
4.9.2
Union Definition ............................................................................................................... 8
4.9.3
Union Instance ................................................................................................................ 9
4.9.4
Union Selector Definition ............................................................................................... 10
4.10 Bit Field Definitions .................................................................................................................. 11
4.11 Parameter Limits ..................................................................................................................... 11
4.12 Enumeration Macro ................................................................................................................. 13
4.13 Size Checking .......................................................................................................................... 13
4.14 Data Direction .......................................................................................................................... 14
4.15 Structure Validations ............................................................................................................... 14
4.16 Name Prefix Convention .......................................................................................................... 14
4.17 Data Alignment ........................................................................................................................ 15
4.18 Parameter Unmarshaling Errors .............................................................................................. 15

5

Base Types ......................................................................................................................................... 17
5.1
Primitive Types ........................................................................................................................ 17
5.2
Miscellaneous Types ............................................................................................................... 17

6

Constants ............................................................................................................................................ 18
6.1
TPM_SPEC (Specification Version Values) ............................................................................ 18
6.2
TPM_GENERATED ................................................................................................................. 18
6.3
TPM_ALG_ID .......................................................................................................................... 19
6.4
TPM_ECC_CURVE ................................................................................................................. 22
6.5
TPM_CC (Command Codes) .................................................................................................. 22
6.5.1
Format ........................................................................................................................... 22
6.5.2
Description .................................................................................................................... 23
6.5.3
TPM_CC Listing ............................................................................................................ 24
6.6
TPM_RC (Response Codes) ................................................................................................... 28
6.6.1
Description .................................................................................................................... 28
6.6.2
Response Code Formats .............................................................................................. 29
6.6.3
TPM_RC Values ........................................................................................................... 32
6.7
TPM_CLOCK_ADJUST ........................................................................................................... 37
6.8
TPM_EO (EA Arithmetic Operands) ........................................................................................ 37
6.9
TPM_ST (Structure Tags) ....................................................................................................... 38
6.10 TPM_SU (Startup Type) .......................................................................................................... 40
6.11 TPM_SE (Session Type) ......................................................................................................... 40
6.12 TPM_CAP (Capabilities) .......................................................................................................... 41
6.13 TPM_PT (Property Tag) .......................................................................................................... 41
6.14 TPM_PT_PCR (PCR Property Tag) ........................................................................................ 47
6.15 TPM_PS (Platform Specific) .................................................................................................... 49

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page iii
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

7

Handles ............................................................................................................................................... 50
7.1
Introduction .............................................................................................................................. 50
7.2
TPM_HT (Handle Types) ......................................................................................................... 50
7.3
Persistent Handle Sub-ranges................................................................................................. 51
7.4
TPM_RH (Permanent Handles)............................................................................................... 52
7.5
TPM_HC (Handle Value Constants) ....................................................................................... 53

8

Attribute Structures .............................................................................................................................. 55
8.1
Description ............................................................................................................................... 55
8.2
TPMA_ALGORITHM ............................................................................................................... 55
8.3
TPMA_OBJECT (Object Attributes) ........................................................................................ 55
8.3.1
Introduction.................................................................................................................... 55
8.3.2
Structure Definition ........................................................................................................ 56
8.3.3
Attribute Descriptions .................................................................................................... 57
8.3.3.1
Introduction ............................................................................................................ 57
8.3.3.2
Bit[1] – fixedTPM ................................................................................................... 57
8.3.3.3
Bit[2] – stClear ....................................................................................................... 58
8.3.3.4
Bit[4] – fixedParent ................................................................................................ 58
8.3.3.5
Bit[5] – sensitiveDataOrigin ................................................................................... 58
8.3.3.6
Bit[6] – userWithAuth............................................................................................. 59
8.3.3.7
Bit[7] – adminWithPolicy........................................................................................ 59
8.3.3.8
Bit[10] – noDA ....................................................................................................... 59
8.3.3.9
Bit[11] – encryptedDuplication .............................................................................. 60
8.3.3.10
Bit[16] – restricted ................................................................................................. 60
8.3.3.11
Bit[17] – decrypt .................................................................................................... 61
8.3.3.12
Bit[18] – sign .......................................................................................................... 61
8.4
TPMA_SESSION (Session Attributes) .................................................................................... 62
8.5
TPMA_LOCALITY (Locality Attribute) ..................................................................................... 63
8.6
TPMA_PERMANENT .............................................................................................................. 64
8.7
TPMA_STARTUP_CLEAR ...................................................................................................... 65
8.8
TPMA_MEMORY .................................................................................................................... 66
8.9
TPMA_CC (Command Code Attributes) ................................................................................. 67
8.9.1
Introduction.................................................................................................................... 67
8.9.2
Structure Definition ........................................................................................................ 67
8.9.3
Field Descriptions .......................................................................................................... 67
8.9.3.1
Bits[15:0] – commandIndex ................................................................................... 67
8.9.3.2
Bit[22] – nv ............................................................................................................ 67
8.9.3.3
Bit[23] – extensive ................................................................................................. 67
8.9.3.4
Bit[24] – flushed ..................................................................................................... 68
8.9.3.5
Bits[27:25] – cHandles .......................................................................................... 68
8.9.3.6
Bit[28] – rHandle .................................................................................................... 68
8.9.3.7
Bit[29] – V .............................................................................................................. 69
8.9.3.8
Bits[31:30] – Res ................................................................................................... 69

9

Interface Types .................................................................................................................................... 70
9.1
Introduction .............................................................................................................................. 70
9.2
TPMI_YES_NO ....................................................................................................................... 70
9.3
TPMI_DH_OBJECT ................................................................................................................. 70
9.4
TPMI_DH_PERSISTENT ........................................................................................................ 71
9.5
TPMI_DH_ENTITY .................................................................................................................. 71
9.6
TPMI_DH_PCR ....................................................................................................................... 72
9.7
TPMI_SH_AUTH_SESSION ................................................................................................... 72
9.8
TPMI_SH_HMAC .................................................................................................................... 72
9.9
TPMI_SH_POLICY .................................................................................................................. 72
9.10 TPMI_DH_CONTEXT .............................................................................................................. 73
9.11 TPMI_RH_HIERARCHY .......................................................................................................... 73
9.12 TPMI_RH_ENABLES .............................................................................................................. 73

Page iv
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library
9.13
9.14
9.15
9.16
9.17
9.18
9.19
9.20
9.21
9.22
9.23
9.24
9.25
9.26
9.27
9.28
9.29
9.30
10

Part 2: Structures

TPMI_RH_HIERARCHY_AUTH .............................................................................................. 74
TPMI_RH_PLATFORM ........................................................................................................... 74
TPMI_RH_OWNER ................................................................................................................. 74
TPMI_RH_ENDORSEMENT ................................................................................................... 75
TPMI_RH_PROVISION ........................................................................................................... 75
TPMI_RH_CLEAR ................................................................................................................... 75
TPMI_RH_NV_AUTH .............................................................................................................. 76
TPMI_RH_LOCKOUT ............................................................................................................. 76
TPMI_RH_NV_INDEX ............................................................................................................. 76
TPMI_ALG_HASH ................................................................................................................... 77
TPMI_ALG_ASYM (Asymmetric Algorithms) .......................................................................... 77
TPMI_ALG_SYM (Symmetric Algorithms) .............................................................................. 78
TPMI_ALG_SYM_OBJECT ..................................................................................................... 78
TPMI_ALG_SYM_MODE ........................................................................................................ 79
TPMI_ALG_KDF (Key and Mask Generation Functions) ........................................................ 79
TPMI_ALG_SIG_SCHEME ..................................................................................................... 80
TPMI_ECC_KEY_EXCHANGE ............................................................................................... 80
TPMI_ST_COMMAND_TAG ................................................................................................... 80

Structure Definitions ............................................................................................................................ 81
10.1 TPMS_ALGORITHM_DESCRIPTION .................................................................................... 81
10.2 Hash/Digest Structures ............................................................................................................ 81
10.2.1
TPMU_HA (Hash) ......................................................................................................... 81
10.2.2
TPMT_HA...................................................................................................................... 82
10.3 Sized Buffers ........................................................................................................................... 82
10.3.1
Introduction.................................................................................................................... 82
10.3.2
TPM2B_DIGEST ........................................................................................................... 83
10.3.3
TPM2B_DATA ............................................................................................................... 83
10.3.4
TPM2B_NONCE ........................................................................................................... 83
10.3.5
TPM2B_AUTH .............................................................................................................. 83
10.3.6
TPM2B_OPERAND ...................................................................................................... 84
10.3.7
TPM2B_EVENT ............................................................................................................ 84
10.3.8
TPM2B_MAX_BUFFER ................................................................................................ 84
10.3.9
TPM2B_MAX_NV_BUFFER ......................................................................................... 84
10.3.10 TPM2B_TIMEOUT ........................................................................................................ 85
10.3.11 TPM2B_IV ..................................................................................................................... 85
10.4 Names ..................................................................................................................................... 85
10.4.1
Introduction.................................................................................................................... 85
10.4.2
TPMU_NAME ................................................................................................................ 85
10.4.3
TPM2B_NAME .............................................................................................................. 86
10.5 PCR Structures ........................................................................................................................ 86
10.5.1
TPMS_PCR_SELECT ................................................................................................... 86
10.5.2
TPMS_PCR_SELECTION ............................................................................................ 87
10.6 Tickets ..................................................................................................................................... 87
10.6.1
Introduction.................................................................................................................... 87
10.6.2
A NULL Ticket ............................................................................................................... 88
10.6.3
TPMT_TK_CREATION ................................................................................................. 89
10.6.4
TPMT_TK_VERIFIED ................................................................................................... 90
10.6.5
TPMT_TK_AUTH .......................................................................................................... 91
10.6.6
TPMT_TK_HASHCHECK ............................................................................................. 92
10.7 Property Structures .................................................................................................................. 92
10.7.1
TPMS_ALG_PROPERTY ............................................................................................. 92
10.7.2
TPMS_TAGGED_PROPERTY ..................................................................................... 92
10.7.3
TPMS_TAGGED_PCR_SELECT ................................................................................. 93
10.8 Lists ......................................................................................................................................... 93

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page v
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

10.8.1
TPML_CC...................................................................................................................... 93
10.8.2
TPML_CCA ................................................................................................................... 94
10.8.3
TPML_ALG.................................................................................................................... 94
10.8.4
TPML_HANDLE ............................................................................................................ 94
10.8.5
TPML_DIGEST ............................................................................................................. 95
10.8.6
TPML_DIGEST_VALUES ............................................................................................. 95
10.8.7
TPM2B_DIGEST_VALUES........................................................................................... 95
10.8.8
TPML_PCR_SELECTION............................................................................................. 96
10.8.9
TPML_ALG_PROPERTY.............................................................................................. 96
10.8.10 TPML_TAGGED_TPM_PROPERTY ............................................................................ 96
10.8.11 TPML_TAGGED_PCR_PROPERTY ............................................................................ 97
10.8.12 TPML_ECC_CURVE .................................................................................................... 97
10.9 Capabilities Structures ............................................................................................................. 97
10.9.1
TPMU_CAPABILITIES .................................................................................................. 97
10.9.2
TPMS_CAPABILITY_DATA .......................................................................................... 98
10.10 Clock/Counter Structures ........................................................................................................ 98
10.10.1 TPMS_CLOCK_INFO ................................................................................................... 98
10.10.2 Clock ............................................................................................................................. 98
10.10.3 ResetCount ................................................................................................................... 98
10.10.4 RestartCount ................................................................................................................. 99
10.10.5 Safe ............................................................................................................................... 99
10.10.6 TPMS_TIME_INFO ....................................................................................................... 99
10.11 TPM Attestation Structures .................................................................................................... 100
10.11.1 Introduction.................................................................................................................. 100
10.11.2 TPMS_TIME_ATTEST_INFO ..................................................................................... 100
10.11.3 TPMS_CERTIFY_INFO .............................................................................................. 100
10.11.1 TPMS_QUOTE_INFO ................................................................................................. 100
10.11.2 TPMS_COMMAND_AUDIT_INFO .............................................................................. 101
10.11.3 TPMS_SESSION_AUDIT_INFO ................................................................................. 101
10.11.4 TPMS_CREATION_INFO ........................................................................................... 101
10.11.5 TPMS_NV_CERTIFY_INFO ....................................................................................... 101
10.11.6 TPMI_ST_ATTEST ..................................................................................................... 102
10.11.7 TPMU_ATTEST .......................................................................................................... 102
10.11.8 TPMS_ATTEST .......................................................................................................... 103
10.11.9 TPM2B_ATTEST ........................................................................................................ 103
10.12 Authorization Structures ........................................................................................................ 104
10.12.1 TPMS_AUTH_COMMAND ......................................................................................... 104
10.12.2 TPMS_AUTH_RESPONSE ........................................................................................ 104
11

Algorithm Parameters and Structures ............................................................................................... 105
11.1 Symmetric .............................................................................................................................. 105
11.1.1
Introduction.................................................................................................................. 105
11.1.2
TPMI_AES_KEY_BITS ............................................................................................... 105
11.1.3
TPMI_SM4_KEY_BITS ............................................................................................... 105
11.1.4
TPMU_SYM_KEY_BITS ............................................................................................. 106
11.1.5
TPMU_SYM_MODE ................................................................................................... 106
11.1.6
TPMU_SYM_DETAILS ............................................................................................... 107
11.1.7
TPMT_SYM_DEF ....................................................................................................... 107
11.1.8
TPMT_SYM_DEF_OBJECT ....................................................................................... 107
11.1.9
TPM2B_SYM_KEY ..................................................................................................... 108
11.1.10 TPMS_SYMCIPHER_PARMS .................................................................................... 108
11.1.11 TPM2B_SENSITIVE_DATA ........................................................................................ 108
11.1.12 TPMS_SENSITIVE_CREATE ..................................................................................... 109
11.1.13 TPM2B_SENSITIVE_CREATE ................................................................................... 110
11.1.14 TPMS_SCHEME_SIGHASH....................................................................................... 110
11.1.15 TPMI_ALG_HASH_SCHEME ..................................................................................... 110

Page vi
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

11.1.16 HMAC_SIG_SCHEME ................................................................................................ 110
11.1.17 TPMS_SCHEME_XOR ............................................................................................... 111
11.1.18 TPMU_SCHEME_HMAC ............................................................................................ 111
11.1.19 TPMT_KEYEDHASH_SCHEME ................................................................................. 111
11.2 Asymmetric ............................................................................................................................ 112
11.2.1
Signing Schemes ........................................................................................................ 112
11.2.1.1
Introduction .......................................................................................................... 112
11.2.1.2
RSA_SIG_SCHEMES ......................................................................................... 112
11.2.1.3
ECC_SIG_SCHEMES ......................................................................................... 112
11.2.1.4
TPMS_SCHEME_ECDAA................................................................................... 112
11.2.1.5
TPMU_SIG_SCHEME......................................................................................... 113
11.2.1.6
TPMT_SIG_SCHEME ......................................................................................... 113
11.2.2
Encryption Schemes ................................................................................................... 114
11.2.2.1
Introduction .......................................................................................................... 114
11.2.2.2
TPMS_SCHEME_OAEP ..................................................................................... 114
11.2.2.3
TPMS_SCHEME_ECDH ..................................................................................... 114
11.2.3
Key Derivation Schemes ............................................................................................. 114
11.2.3.1
Introduction .......................................................................................................... 114
11.2.3.2
TPMS_SCHEME_MGF1 ..................................................................................... 114
11.2.3.3
TPMS_SCHEME_KDF1_SP800_56a ................................................................. 114
11.2.3.4
TPMS_SCHEME_KDF2 ...................................................................................... 115
11.2.3.5
TPMS_SCHEME_KDF1_SP800_108 ................................................................. 115
11.2.3.6
TPMU_KDF_SCHEME........................................................................................ 115
11.2.3.7
TPMT_KDF_SCHEME ........................................................................................ 115
11.2.3.8
TPMI_ALG_ASYM_SCHEME ............................................................................. 116
11.2.3.9
TPMU_ASYM_SCHEME..................................................................................... 116
11.2.3.10 TPMT_ASYM_SCHEME ..................................................................................... 117
11.2.4
RSA ............................................................................................................................. 117
11.2.4.1
TPMI_ALG_RSA_SCHEME ................................................................................ 117
11.2.4.2
TPMT_RSA_SCHEME ........................................................................................ 117
11.2.4.3
TPMI_ALG_RSA_DECRYPT .............................................................................. 118
11.2.4.4
TPMT_RSA_DECRYPT ...................................................................................... 118
11.2.4.5
TPM2B_PUBLIC_KEY_RSA ............................................................................... 118
11.2.4.6
TPMI_RSA_KEY_BITS ....................................................................................... 118
11.2.4.7
TPM2B_PRIVATE_KEY_RSA ............................................................................ 119
11.2.5
ECC ............................................................................................................................. 120
11.2.5.1
TPM2B_ECC_PARAMETER .............................................................................. 120
11.2.5.2
TPMS_ECC_POINT ............................................................................................ 120
11.2.5.3
TPM2B_ECC_POINT .......................................................................................... 120
11.2.5.4
TPMI_ALG_ECC_SCHEME ............................................................................... 121
11.2.5.5
TPMI_ECC_CURVE ............................................................................................ 121
11.2.5.6
TPMT_ECC_SCHEME........................................................................................ 121
11.2.5.7
TPMS_ALGORITHM_DETAIL_ECC ................................................................... 122
11.3 Signatures.............................................................................................................................. 122
11.3.1
TPMS_SIGNATURE_RSASSA .................................................................................. 122
11.3.2
TPMS_SIGNATURE_RSAPSS .................................................................................. 122
11.3.3
TPMS_SIGNATURE_ECDSA ..................................................................................... 123
11.3.4
TPMU_SIGNATURE ................................................................................................... 123
11.3.5
TPMT_SIGNATURE ................................................................................................... 124
11.4 Key/Secret Exchange ............................................................................................................ 124
11.4.1
Introduction.................................................................................................................. 124
11.4.2
TPMU_ENCRYPTED_SECRET ................................................................................. 124
11.4.3
TPM2B_ENCRYPTED_SECRET ............................................................................... 125
12

Key/Object Complex.......................................................................................................................... 126

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page vii
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

12.1 Introduction ............................................................................................................................ 126
12.2 Public Area Structures ........................................................................................................... 126
12.2.1
Description .................................................................................................................. 126
12.2.2
TPMI_ALG_PUBLIC ................................................................................................... 126
12.2.3
Type-Specific Parameters ........................................................................................... 126
12.2.3.1
Description .......................................................................................................... 126
12.2.3.2
TPMU_PUBLIC_ID .............................................................................................. 127
12.2.3.3
TPMS_KEYEDHASH_PARMS ........................................................................... 127
12.2.3.4
TPMS_ASYM_PARMS ....................................................................................... 127
12.2.3.5
TPMS_RSA_PARMS .......................................................................................... 128
12.2.3.6
TPMS_ECC_PARMS .......................................................................................... 129
12.2.3.7
TPMU_PUBLIC_PARMS .................................................................................... 129
12.2.3.8
TPMT_PUBLIC_PARMS ..................................................................................... 130
12.2.4
TPMT_PUBLIC ........................................................................................................... 130
12.2.5
TPM2B_PUBLIC ......................................................................................................... 131
12.3 Private Area Structures ......................................................................................................... 131
12.3.1
Introduction.................................................................................................................. 131
12.3.2
Sensitive Data Structures ............................................................................................ 131
12.3.2.1
Introduction .......................................................................................................... 131
12.3.2.2
TPM2B_PRIVATE_VENDOR_SPECIFIC ........................................................... 131
12.3.2.3
TPMU_SENSITIVE_COMPOSITE ...................................................................... 132
12.3.2.4
TPMT_SENSITIVE .............................................................................................. 132
12.3.3
TPM2B_SENSITIVE ................................................................................................... 132
12.3.4
Encryption ................................................................................................................... 133
12.3.5
Integrity........................................................................................................................ 133
12.3.6
_PRIVATE ................................................................................................................... 133
12.3.7
TPM2B_PRIVATE ....................................................................................................... 133
12.4 Identity Object ........................................................................................................................ 134
12.4.1
Description .................................................................................................................. 134
12.4.2
_ID_OBJECT .............................................................................................................. 134
12.4.3
TPM2B_ID_OBJECT .................................................................................................. 134
13

NV Storage Structures ...................................................................................................................... 135
13.1 TPM_NV_INDEX ................................................................................................................... 135
13.2 TPMA_NV (NV Index Attributes) ........................................................................................... 136
13.3 TPMS_NV_PUBLIC ............................................................................................................... 139
13.4 TPM2B_NV_PUBLIC ............................................................................................................. 139

14

Context Data ..................................................................................................................................... 140
14.1 Introduction ............................................................................................................................ 140
14.2 TPM2B_CONTEXT_SENSITIVE........................................................................................... 140
14.3 TPMS_CONTEXT_DATA ...................................................................................................... 140
14.4 TPM2B_CONTEXT_DATA .................................................................................................... 140
14.5 TPMS_CONTEXT ................................................................................................................. 141
14.6 Parameters of TPMS_CONTEXT .......................................................................................... 142
14.6.1
sequence ..................................................................................................................... 142
14.6.2
savedHandle ............................................................................................................... 142
14.6.3
hierarchy...................................................................................................................... 143
14.7 Context Protection ................................................................................................................. 143
14.7.1
Context Integrity .......................................................................................................... 143
14.7.2
Context Confidentiality ................................................................................................ 143

15

Creation Data .................................................................................................................................... 144
15.1 TPMS_CREATION_DATA .................................................................................................... 144
15.2 TPM2B_CREATION_DATA .................................................................................................. 144

Page viii
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

Annex A (informative) Algorithm Constants ............................................................................................. 145
A.1
Introduction ............................................................................................................................ 145
A.2
Allowed Hash Algorithms....................................................................................................... 145
A.2.1
SHA1 ........................................................................................................................... 145
A.2.2
SHA256 ....................................................................................................................... 145
A.2.3
SHA384 ....................................................................................................................... 145
A.2.4
SHA512 ....................................................................................................................... 146
A.2.5
SM3_256 ..................................................................................................................... 146
A.3
Architectural Limits ................................................................................................................ 146
Annex B (informative) Implementation Definitions ................................................................................... 147
B.1
Introduction ............................................................................................................................ 147
B.2
Logic Values .......................................................................................................................... 147
B.3
Processor Values .................................................................................................................. 147
B.4
Implemented Algorithms ........................................................................................................ 148
B.5
Implemented Commands ...................................................................................................... 148
B.6
Algorithm Constants .............................................................................................................. 151
B.6.1
RSA ............................................................................................................................. 152
B.6.2
ECC ............................................................................................................................. 152
B.6.3
AES ............................................................................................................................. 152
B.6.4
SM4 ............................................................................................................................. 152
B.6.5
Symmetric ................................................................................................................... 153
B.7
Implementation Specific Values ............................................................................................ 154

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page ix
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

Tables
Table 1 — Name Prefix Convention ........................................................................................................... 15
Table 2 — Unmarshaling Errors ................................................................................................................. 16
Table 3 — Definition of Base Types ........................................................................................................... 17
Table 4 — Definition of Types for Documentation Clarity ........................................................................... 17
Table 5 — Definition of (UINT32) TPM_SPEC Constants <> ..................................................................... 18
Table 6 — Definition of (UINT32) TPM_GENERATED Constants <O> ..................................................... 18
Table 7 — Definition of (UINT16) TPM_ALG_ID Constants <IN/OUT, S> ................................................. 19
Table 8 — Definition of (UINT16) {ECC} TPM_ECC_CURVE Constants <IN/OUT, S> ............................ 22
Table 9 — TPM Command Format Fields Description ............................................................................... 22
Table 10 — Legend for Command Code Tables ........................................................................................ 23
Table 11 — Definition of (UINT32) TPM_CC Constants (Numeric Order) <IN/OUT, S> ........................... 24
Table 12 — Format-Zero Response Codes ................................................................................................ 30
Table 13 — Format-One Response Codes ................................................................................................ 31
Table 14 — Response Code Groupings ..................................................................................................... 31
Table 15 — Definition of (UINT32) TPM_RC Constants (Actions) <OUT> ................................................ 32
Table 16 — Definition of (INT8) TPM_CLOCK_ADJUST Constants <IN> ................................................. 37
Table 17 — Definition of (UINT16) TPM_EO Constants <IN/OUT> ........................................................... 37
Table 18 — Definition of (UINT16) TPM_ST Constants <IN/OUT, S> ....................................................... 38
Table 19 — Definition of (UINT16) TPM_SU Constants <IN> .................................................................... 40
Table 20 — Definition of (UINT8) TPM_SE Constants <IN> ...................................................................... 40
Table 21 — Definition of (UINT32) TPM_CAP Constants .......................................................................... 41
Table 22 — Definition of (UINT32) TPM_PT Constants <IN/OUT, S> ....................................................... 41
Table 23 — Definition of (UINT32) TPM_PT_PCR Constants <IN/OUT, S> ............................................. 47
Table 24 — Definition of (UINT32) TPM_PS Constants <OUT> ................................................................ 49
Table 25 — Definition of Types for Handles ............................................................................................... 50
Table 26 — Definition of (UINT8) TPM_HT Constants <S> ....................................................................... 50
Table 27 — Definition of (UINT32) TPM_RH Constants <IN, S> ............................................................... 52
Table 28 — Definition of (TPM_HANDLE) TPM_HC Constants <IN, S> ................................................... 54
Table 29 — Definition of (UINT32) TPMA_ALGORITHM Bits .................................................................... 55
Table 30 — Definition of (UINT32) TPMA_OBJECT Bits ........................................................................... 56
Table 31 — Definition of (UINT8) TPMA_SESSION Bits <IN/OUT> .......................................................... 62
Table 32 — Definition of (UINT8) TPMA_LOCALITY Bits <IN/OUT> ........................................................ 64
Table 33 — Definition of (UINT32) TPMA_PERMANENT Bits <OUT> ...................................................... 64
Table 34 — Definition of (UINT32) TPMA_STARTUP_CLEAR Bits <OUT> .............................................. 65
Table 35 — Definition of (UINT32) TPMA_MEMORY Bits <Out> .............................................................. 66
Table 36 — Definition of (TPM_CC) TPMA_CC Bits <OUT> ..................................................................... 67
Table 37 — Definition of (BYTE) TPMI_YES_NO Type ............................................................................. 70

Page x
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

Table 38 — Definition of (TPM_HANDLE) TPMI_DH_OBJECT Type........................................................ 70
Table 39 — Definition of (TPM_HANDLE) TPMI_DH_PERSISTENT Type ............................................... 71
Table 40 — Definition of (TPM_HANDLE) TPMI_DH_ENTITY Type <IN> ................................................ 71
Table 41 — Definition of (TPM_HANDLE) TPMI_DH_PCR Type <IN> ..................................................... 72
Table 42 — Definition of (TPM_HANDLE) TPMI_SH_AUTH_SESSION Type <IN/OUT> ........................ 72
Table 43 — Definition of (TPM_HANDLE) TPMI_SH_HMAC Type <IN/OUT> .......................................... 72
Table 44 — Definition of (TPM_HANDLE) TPMI_SH_POLICY Type <IN/OUT> ....................................... 72
Table 45 — Definition of (TPM_HANDLE) TPMI_DH_CONTEXT Type .................................................... 73
Table 46 — Definition of (TPM_HANDLE) TPMI_RH_HIERARCHY Type ................................................ 73
Table 47 — Definition of (TPM_HANDLE) TPMI_RH_ENABLES Type ..................................................... 73
Table 48 — Definition of (TPM_HANDLE) TPMI_RH_HIERARCHY_AUTH Type <IN> ............................ 74
Table 49 — Definition of (TPM_HANDLE) TPMI_RH_PLATFORM Type <IN> ......................................... 74
Table 50 — Definition of (TPM_HANDLE) TPMI_RH_OWNER Type <IN> ............................................... 74
Table 51 — Definition of (TPM_HANDLE) TPMI_RH_ENDORSEMENT Type <IN> ................................. 75
Table 52 — Definition of (TPM_HANDLE) TPMI_RH_PROVISION Type <IN> ......................................... 75
Table 53 — Definition of (TPM_HANDLE) TPMI_RH_CLEAR Type <IN> ................................................. 75
Table 54 — Definition of (TPM_HANDLE) TPMI_RH_NV_AUTH Type <IN> ............................................ 76
Table 55 — Definition of (TPM_HANDLE) TPMI_RH_LOCKOUT Type <IN> ........................................... 76
Table 56 — Definition of (TPM_HANDLE) TPMI_RH_NV_INDEX Type <IN/OUT> .................................. 76
Table 57 — Definition of (TPM_ALG_ID) TPMI_ALG_HASH Type............................................................ 77
Table 58 — Definition of (TPM_ALG_ID) TPMI_ALG_ASYM Type ........................................................... 77
Table 59 — Definition of (TPM_ALG_ID) TPMI_ALG_SYM Type .............................................................. 78
Table 60 — Definition of (TPM_ALG_ID) TPMI_ALG_SYM_OBJECT Type ............................................. 78
Table 61 — Definition of (TPM_ALG_ID) TPMI_ALG_SYM_MODE Type ................................................. 79
Table 62 — Definition of (TPM_ALG_ID) TPMI_ALG_KDF Type .............................................................. 79
Table 63 — Definition of (TPM_ALG_ID) TPMI_ALG_SIG_SCHEME Type .............................................. 80
Table 64 — Definition of (TPM_ALG_ID) TPMI_ECC_KEY_EXCHANGE Type ........................................ 80
Table 65 — Definition of (TPM_ST) TPMI_ST_COMMAND_TAG Type .................................................... 80
Table 66 — Definition of TPMS_ALGORITHM_DESCRIPTION Structure <OUT> .................................... 81
Table 67 — Definition of TPMU_HA Union <IN/OUT, S> ........................................................................... 81
Table 68 — Definition of TPMT_HA Structure <IN/OUT> .......................................................................... 82
Table 69 — Definition of TPM2B_DIGEST Structure ................................................................................. 83
Table 70 — Definition of TPM2B_DATA Structure ..................................................................................... 83
Table 71 — Definition of Types for TPM2B_NONCE ................................................................................. 83
Table 72 — Definition of Types for TPM2B_AUTH .................................................................................... 83
Table 73 — Definition of Types for TPM2B_OPERAND ............................................................................ 84
Table 74 — Definition of TPM2B_EVENT Structure ................................................................................... 84
Table 75 — Definition of TPM2B_MAX_BUFFER Structure ...................................................................... 84

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page xi
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

Table 76 — Definition of TPM2B_MAX_NV_BUFFER Structure ............................................................... 84
Table 77 — Definition of TPM2B_TIMEOUT Structure <IN/OUT> ............................................................. 85
Table 78 — Definition of TPM2B_IV Structure <IN/OUT> .......................................................................... 85
Table 79 — Definition of TPMU_NAME Union <> ...................................................................................... 85
Table 80 — Definition of TPM2B_NAME Structure .................................................................................... 86
Table 81 — Definition of TPMS_PCR_SELECT Structure ......................................................................... 87
Table 82 — Definition of TPMS_PCR_SELECTION Structure ................................................................... 87
Table 83 — Values for proof Used in Tickets ............................................................................................. 88
Table 84 — General Format of a Ticket ...................................................................................................... 88
Table 85 — Definition of TPMT_TK_CREATION Structure ........................................................................ 89
Table 86 — Definition of TPMT_TK_VERIFIED Structure .......................................................................... 90
Table 87 — Definition of TPMT_TK_AUTH Structure ................................................................................ 91
Table 88 — Definition of TPMT_TK_HASHCHECK Structure .................................................................... 92
Table 89 — Definition of TPMS_ALG_PROPERTY Structure <OUT> ....................................................... 92
Table 90 — Definition of TPMS_TAGGED_PROPERTY Structure <OUT> ............................................... 92
Table 91 — Definition of TPMS_TAGGED_PCR_SELECT Structure <OUT> ........................................... 93
Table 92 — Definition of TPML_CC Structure ............................................................................................ 93
Table 93 — Definition of TPML_CCA Structure <OUT> ............................................................................. 94
Table 94 — Definition of TPML_ALG Structure .......................................................................................... 94
Table 95 — Definition of TPML_HANDLE Structure <OUT>...................................................................... 94
Table 96 — Definition of TPML_DIGEST Structure .................................................................................... 95
Table 97 — Definition of TPML_DIGEST_VALUES Structure ................................................................... 95
Table 98 — Definition of TPM2B_DIGEST_VALUES Structure ................................................................. 95
Table 99 — Definition of TPML_PCR_SELECTION Structure ................................................................... 96
Table 100 — Definition of TPML_ALG_PROPERTY Structure <OUT> ..................................................... 96
Table 101 — Definition of TPML_TAGGED_TPM_PROPERTY Structure <OUT> ................................... 96
Table 102 — Definition of TPML_TAGGED_PCR_PROPERTY Structure <OUT> ................................... 97
Table 103 — Definition of {ECC} TPML_ECC_CURVE Structure <OUT> ................................................. 97
Table 104 — Definition of TPMU_CAPABILITIES Union <OUT>............................................................... 97
Table 105 — Definition of TPMS_CAPABILITY_DATA Structure <OUT> ................................................. 98
Table 106 — Definition of TPMS_CLOCK_INFO Structure ........................................................................ 98
Table 107 — Definition of TPMS_TIME_INFO Structure ........................................................................... 99
Table 108 — Definition of TPMS_TIME_ATTEST_INFO Structure <OUT> ............................................. 100
Table 109 — Definition of TPMS_CERTIFY_INFO Structure <OUT> ...................................................... 100
Table 110 — Definition of TPMS_QUOTE_INFO Structure <OUT> ........................................................ 100
Table 111 — Definition of TPMS_COMMAND_AUDIT_INFO Structure <OUT> ..................................... 101
Table 112 — Definition of TPMS_SESSION_AUDIT_INFO Structure <OUT> ........................................ 101
Table 113 — Definition of TPMS_CREATION_INFO Structure <OUT> .................................................. 101
Table 114 — Definition of TPMS_NV_CERTIFY_INFO Structure <OUT> ............................................... 101
Page xii
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

Table 115 — Definition of (TPM_ST) TPMI_ST_ATTEST Type <OUT> .................................................. 102
Table 116 — Definition of TPMU_ATTEST Union <OUT> ....................................................................... 102
Table 117 — Definition of TPMS_ATTEST Structure <OUT> .................................................................. 103
Table 118 — Definition of TPM2B_ATTEST Structure <OUT> ................................................................ 103
Table 119 — Definition of TPMS_AUTH_COMMAND Structure <IN> ..................................................... 104
Table 120 — Definition of TPMS_AUTH_RESPONSE Structure <OUT> ................................................ 104
Table 121 — Definition of {AES} (TPM_KEY_BITS) TPMI_AES_KEY_BITS Type ................................. 105
Table 122 — Definition of {SM4} (TPM_KEY_BITS) TPMI_SM4_KEY_BITS Type ................................. 105
Table 123 — Definition of TPMU_SYM_KEY_BITS Union ....................................................................... 106
Table 124 — Definition of TPMU_SYM_MODE Union ............................................................................. 106
Table 125 — xDefinition of TPMU_SYM_DETAILS Union ....................................................................... 107
Table 126 — Definition of TPMT_SYM_DEF Structure ............................................................................ 107
Table 127 — Definition of TPMT_SYM_DEF_OBJECT Structure ............................................................ 107
Table 128 — Definition of TPM2B_SYM_KEY Structure .......................................................................... 108
Table 129 — Definition of TPMS_SYMCIPHER_PARMS Structure ........................................................ 108
Table 130 — Definition of TPM2B_SENSITIVE_DATA Structure ............................................................ 108
Table 131 — Definition of TPMS_SENSITIVE_CREATE Structure <IN> ................................................ 109
Table 132 — Definition of TPM2B_SENSITIVE_CREATE Structure <IN, S> .......................................... 110
Table 133 — Definition of TPMS_SCHEME_SIGHASH Structure ........................................................... 110
Table 134 — Definition of (TPM_ALG_ID) TPMI_ALG_KEYEDHASH_SCHEME Type .......................... 110
Table 135 — Definition of Types for HMAC_SIG_SCHEME .................................................................... 110
Table 136 — Definition of TPMS_SCHEME_XOR Structure ................................................................... 111
Table 137 — Definition of TPMU_SCHEME_KEYEDHASH Union <IN/OUT, S> .................................... 111
Table 138 — Definition of TPMT_KEYEDHASH_SCHEME Structure ..................................................... 111
Table 139 — Definition of {RSA} Types for RSA_SIG_SCHEMES .......................................................... 112
Table 140 — Definition of {ECC} Types for ECC_SIG_SCHEMES.......................................................... 112
Table 141 — Definition of {ECC} TPMS_SCHEME_ECDAA Structure .................................................... 112
Table 142 — Definition of TPMU_SIG_SCHEME Union <IN/OUT, S> .................................................... 113
Table 143 — Definition of TPMT_SIG_SCHEME Structure ..................................................................... 113
Table 144 — Definition of {RSA} TPMS_SCHEME_OAEP Structure ...................................................... 114
Table 145 — Definition of {ECC} TPMS_SCHEME_ECDH Structure ...................................................... 114
Table 146 — Definition of TPMS_SCHEME_MGF1 Structure ................................................................. 114
Table 147 — Definition of {ECC} TPMS_SCHEME_KDF1_SP800_56a Structure .................................. 114
Table 148 — Definition of TPMS_SCHEME_KDF2 Structure .................................................................. 115
Table 149 — Definition of TPMS_SCHEME_KDF1_SP800_108 Structure ............................................. 115
Table 150 — Definition of TPMU_KDF_SCHEME Union <IN/OUT, S> ................................................... 115
Table 151 — Definition of TPMT_KDF_SCHEME Structure .................................................................... 115
Table 152 — Definition of (TPM_ALG_ID) TPMI_ALG_ASYM_SCHEME Type <> ................................. 116

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page xiii
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

Table 153 — Definition of TPMU_ASYM_SCHEME Union ...................................................................... 116
Table 154 — Definition of TPMT_ASYM_SCHEME Structure <> ............................................................ 117
Table 155 — Definition of (TPM_ALG_ID) {RSA} TPMI_ALG_RSA_SCHEME Type .............................. 117
Table 156 — Definition of {RSA} TPMT_RSA_SCHEME Structure ......................................................... 117
Table 157 — Definition of (TPM_ALG_ID) {RSA} TPMI_ALG_RSA_DECRYPT Type ............................ 118
Table 158 — Definition of {RSA} TPMT_RSA_DECRYPT Structure ....................................................... 118
Table 159 — Definition of {RSA} TPM2B_PUBLIC_KEY_RSA Structure ................................................ 118
Table 160 — Definition of {RSA} (TPM_KEY_BITS) TPMI_RSA_KEY_BITS Type ................................. 119
Table 161 — Definition of {RSA} TPM2B_PRIVATE_KEY_RSA Structure .............................................. 119
Table 162 — Definition of {ECC} TPM2B_ECC_PARAMETER Structure ............................................... 120
Table 163 — Definition of {ECC} TPMS_ECC_POINT Structure ............................................................. 120
Table 164 — Definition of {ECC} TPM2B_ECC_POINT Structure ........................................................... 120
Table 165 — Definition of (TPM_ALG_ID) {ECC} TPMI_ALG_ECC_SCHEME Type ............................. 121
Table 166 — Definition of {ECC} (TPM_ECC_CURVE) TPMI_ECC_CURVE Type ................................ 121
Table 167 — Definition of (TPMT_SIG_SCHEME) {ECC} TPMT_ECC_SCHEME Structure .................. 121
Table 168 — Definition of {ECC} TPMS_ALGORITHM_DETAIL_ECC Structure <OUT> ....................... 122
Table 169 — Definition of {RSA} TPMS_SIGNATURE_RSASSA Structure ............................................ 122
Table 170 — Definition of {RSA} TPMS_SIGNATURE_RSAPSS Structure ............................................ 123
Table 171 — Definition of {ECC} TPMS_SIGNATURE_ECDSA Structure .............................................. 123
Table 172 — Definition of TPMU_SIGNATURE Union <IN/OUT, S> ....................................................... 123
Table 173 — Definition of TPMT_SIGNATURE Structure ........................................................................ 124
Table 174 — Definition of TPMU_ENCRYPTED_SECRET Union <S> ................................................... 124
Table 175 — Definition of TPM2B_ENCRYPTED_SECRET Structure .................................................... 125
Table 176 — Definition of (TPM_ALG_ID) TPMI_ALG_PUBLIC Type .................................................... 126
Table 177 — Definition of TPMU_PUBLIC_ID Union <IN/OUT, S> ......................................................... 127
Table 178 — Definition of TPMS_KEYEDHASH_PARMS Structure........................................................ 127
Table 179 — Definition of TPMS_ASYM_PARMS Structure <> .............................................................. 128
Table 180 — Definition of {RSA} TPMS_RSA_PARMS Structure ............................................................ 128
Table 181 — Definition of {ECC} TPMS_ECC_PARMS Structure ........................................................... 129
Table 182 — Definition of TPMU_PUBLIC_PARMS Union <IN/OUT, S> ................................................ 129
Table 183 — Definition of TPMT_PUBLIC_PARMS Structure ................................................................. 130
Table 184 — Definition of TPMT_PUBLIC Structure ................................................................................ 130
Table 185 — Definition of TPM2B_PUBLIC Structure .............................................................................. 131
Table 186 — Definition of {RSA} TPM2B_PRIVATE_VENDOR_SPECIFIC Structure<> ........................ 131
Table 187 — Definition of TPMU_SENSITIVE_COMPOSITE Union <IN/OUT, S> ................................. 132
Table 188 — Definition of TPMT_SENSITIVE Structure .......................................................................... 132
Table 189 — Definition of TPM2B_SENSITIVE Structure <IN/OUT> ...................................................... 132
Table 190 — Definition of _PRIVATE Structure <> .................................................................................. 133
Table 191 — Definition of TPM2B_PRIVATE Structure <IN/OUT, S> ..................................................... 133
Page xiv
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

Table 192 — Definition of _ID_OBJECT Structure <> .............................................................................. 134
Table 193 — Definition of TPM2B_ID_OBJECT Structure <IN/OUT> ..................................................... 134
Table 194 — Definition of (UINT32) TPM_NV_INDEX Bits <> ................................................................. 135
Table 195 — Options for space Field of TPM_NV_INDEX ....................................................................... 136
Table 196 — Definition of (UINT32) TPMA_NV Bits ................................................................................ 137
Table 197 — Definition of TPMS_NV_PUBLIC Structure ......................................................................... 139
Table 198 — Definition of TPM2B_NV_PUBLIC Structure ....................................................................... 139
Table 199 — Definition of TPM2B_CONTEXT_SENSITIVE Structure <IN/OUT> ................................... 140
Table 200 — Definition of TPMS_CONTEXT_DATA Structure <IN/OUT, S> .......................................... 140
Table 201 — Definition of TPM2B_CONTEXT_DATA Structure <IN/OUT> ............................................ 140
Table 202 — Definition of TPMS_CONTEXT Structure ........................................................................... 141
Table 203 — Context Handle Values ........................................................................................................ 142
Table 204 — Definition of TPMS_CREATION_DATA Structure <OUT> ................................................. 144
Table 205 — Definition of TPM2B_CREATION_DATA Structure <OUT> ............................................... 144
Table 206 — Defines for SHA1 Hash Values ........................................................................................... 145
Table 207 — Defines for SHA256 Hash Values ....................................................................................... 145
Table 208 — Defines for SHA384 Hash Values ....................................................................................... 145
Table 209 — Defines for SHA512 Hash Values ....................................................................................... 146
Table 210 — Defines for SM3_256 Hash Values ..................................................................................... 146
Table 211 — Defines for Architectural Limits Values ............................................................................... 146
Table 212 — Defines for Logic Values ..................................................................................................... 147
Table 213 — Defines for Processor Values .............................................................................................. 147
Table 214 — Defines for Implemented Algorithms ................................................................................... 148
Table 215 — Defines for Implemented Commands .................................................................................. 149
Table 216 — Defines for RSA Algorithm Constants ................................................................................. 152
Table 217 — Defines for ECC Algorithm Constants ................................................................................. 152
Table 218 — Defines for AES Algorithm Constants ................................................................................. 152
Table 219 — Defines for SM4 Algorithm Constants ................................................................................. 152
Table 220 — Defines for Symmetric Algorithm Constants ....................................................................... 153
Table 221 — Defines for Implementation Values ..................................................................................... 154

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page xv
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

Figures
Figure 1 — Command Format .................................................................................................................... 22
Figure 2 — Format-Zero Response Codes ................................................................................................. 29
Figure 3 — Format-One Response Codes ................................................................................................. 30
Figure 4 — TPM 1.2 TPM_NV_INDEX ..................................................................................................... 135
Figure 5 — TPM 2.0 TPM_NV_INDEX ..................................................................................................... 135

Page xvi
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

Trusted Platform Module Library
Part 2: Structures
1

Scope

This part of the Trusted Platform Module Library specification contains the definitions of the constants,
flags, structure, and union definitions used to communicate with the TPM. Values defined in this
document are used by the TPM commands defined in part 3: Commands and by the functions in part 4:
Supporting Routines.
NOTE

2

The structures in this document are the canonical form of the structures on the interface. All structures
are "packed" with no octets of padding between structure elements. The TPM-internal form of the
structures is dependent on the processor and compiler for the TPM implementation.

Terms and definitions

For the purposes of this document, the terms and definitions given in part 1 of this specification apply.
3

Symbols and abbreviated terms

For the purposes of this document, the symbols and abbreviated terms given in part 1 apply.
4
4.1

Notation
Introduction

The information in this document is formatted so that it may be converted to standard computer-language
formats by an automated process. The purpose of this automated process is to minimize the transcription
errors that often occur during the conversion process.
For the purposes of this document, the conventions given in Part 1 apply.
In addition, the conventions and notations in this clause describe the representation of various data so
that it is both human readable and amenable to automated processing.
When a table row contains the keyword “reserved” (all lower case) in columns 1 or 2, the tools will not
produce any values for the row in the table.
NOTE 1

In the examples in this clause 4, the unmarshaling routines are shown as returning bool. In the code of
the reference implementation, the return value is a TPM_RC. A bool is used in the examples, because
the meaning of a TPM_RC is not yet defined.

NOTE 2

The unmarshaling code examples are the actual code that would be produced by the automatic code
generator used in the construction of the reference code. The actual code contains additional parameter
checking that is omitted for clarity of the principle being illustrated. Actual examples of the code are found
in Part 4.

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 1
October 31, 2013

Part 2: Structures
4.2

Trusted Platform Module Library

Named Constants

A named constant is a numeric value to which a name has been assigned. In the C language, this is done
with a #define statement. In this specification, a named constant is defined in a table that has a title that
starts with “Definition” and ends with “Constants.”
The table title will indicate the name of the class of constants that are being defined in the table. The title
will include the data type of the constants in parentheses.
The table in Example 1 names a collection of 16-bit constants and Example 2 shows the C code that
might be produced from that table by an automated process.
NOTE

A named constant (#define) has no data type in C and an enumeration would be a better choice for
many of the defined constants. However, the C language does not allow an enumerated type to have a
storage type other than int so the method of using a combination of typedef and #define is used.

EXAMPLE 1

Table xx — Definition of (UINT16) COUNTING Constants
Parameter

Value

Description

first

1

decimal value is implicitly the size of the

second

0x0002

hex value will match the number of bits in the constant

third

3

fourth

0x0004

EXAMPLE 2
/* The C language equivalent of the constants from the table above */
typedef
UINT16
COUNTING;
#define
first
1
#define
second
0x0002
#define
third
3
#define
fourth
0x0004

Page 2
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library
4.3

Part 2: Structures

Data Type Aliases (typedefs)

When a group of named items is assigned a type, it is placed in a table that has a title starting with
“Definition of Types.” In this specification, defined types have names that use all upper-case characters.
The table in Example 1 shows how typedefs would be defined in this specification and Example 2 shows
the C-compatible code that might be produced from that table by an automated process.
EXAMPLE 1

Table xx — Definition of Types for Some Purpose
Type

Name

Description

unsigned short

UINT16

UINT16

SOME_TYPE

unsigned long

UINT32

UINT32

LAST_TYPE

EXAMPLE 2
/* C language equivalent of the typedefs from the table above */
typedef unsigned short
UINT16;
typedef UINT16
SOME_TYPE;
typedef unsigned long
UINT32;
typedef UINT32
LAST_TYPE;

4.4

Enumerations

A table that defines an enumerated data type will start with the word “Definition” and end with “Values.”
A value in parenthesis will denote the intrinsic data size of the value and may have the values "INT8",
"UINT8", "INT16", “UINT16”, "INT32", and “UINT32.” If this value is not present, “UINT16” is assumed.
Most C compilers set the type of an enumerated value to be an integer on the machine – often 16 bits –
but this is not always consistent. To ensure interoperability, the enumeration values may not exceed
32,384.
The table in Example 1 shows how an enumeration would be defined in this specification. Example 2
shows the C code that might be produced from that table by an automated process.
EXAMPLE 1

Table xx — Definition of (UINT16) CARD_SUIT Values
Suit Names

Value

CLUBS

0x0000

DIAMONDS

0x000D

HEARTS

0x001A

SPADES

Description

0x0027

EXAMPLE 2
/* C language equivalent of the structure defined in the table above */
typedef enum {
CLUBS
=
0x0000,
DIAMONDS
=
0x000D,
HEARTS
=
0x001A,
SPADES
=
0x0027
} CARD_SUIT;

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 3
October 31, 2013

Part 2: Structures
4.5

Trusted Platform Module Library

Interface Type

An interface type is used for an enumeration that is checked by the unmarshaling code. This type is
defined for purposes of automatic generation of the code that will validate the type. The title will start with
the keyword “Definition” and end with the keyword “Type.” A value in parenthesis indicates the base type
of the interface. The table may contain an entry that is prefixed with the “#” character to indicate the
response code if the validation code determines that the input parameter is the wrong type.
EXAMPLE 1

Table xx — Definition of (CARD_SUIT) RED_SUIT Type
Values

Comments

HEARTS
DIAMONDS
#TPM_RC_SUIT

response code returned when the unmarshaling of this type fails
NOTE

TPM_RC_SUIT is an example and no such response
code is actually defined in this specification.

EXAMPLE 2
/* Validation code that might be automatically generated from table above */
if((*target != HEARTS) && (*target != DIAMONDS))
return TPM_RC_SUIT;

In some cases, the allowed values are numeric values with no associated mnemonic. In such a case, the
list of numeric values may be given a name. Then, when used in an interface definition, the name would
have a "$" prefix to indicate that a named list of values should be substituted.
To illustrate, assume that the implementation only supports two sizes (1024 and 2048 bits) for keys
associated with some algorithm (MY algorithm). In the implementation section (Annex B a named list
would be created.
EXAMPLE 3

Table xx — Defines for MY Algorithm Constants
Name

Value

Comments

MY_KEY_SIZES_BITS

{1024, 2048}

braces because this is a list value

Page 4
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

Then, whenever an input value would need to be a valid MY key size for the implementation, the value
$MY_KEY_SIZES_BITS could be used. Given the definition for MY_KEY_SIZES_BITS in example 3
above, the tables in example 4 and 5 below, are equivalent.
EXAMPLE 4

Table xx — Definition of (UINT16) MY_KEY_BITS Type
Parameter

Description

{1024, 2048}

the number of bits in the supported key

EXAMPLE 5

Table xx — Definition of (UINT16) MY_KEY_BITS Type
Parameter
$MY_KEY_SIZES_BITS

4.6

Description
the number of bits in the supported key

Arrays

Arrays are denoted by a value in square brackets (“[ ]”) following a parameter name. The value in the
brackets may be either an integer value such as “[20]” or the name of a component of the same structure
that contains the array.
The table in Example 1 shows how a structure containing fixed and variable-length arrays would be
defined in this specification. Example 2 shows the C code that might be produced from that table by an
automated process.
EXAMPLE 1

Table xx — Definition of A_STRUCT Structure
Parameter

Type

Description

array1[20]

UINT16

an array of 20 UINT16s

a_size

UINT16

array2[a_size]

UINT32

an array of UINT32 values that has a
number of elements determined by a_size
above

EXAMPLE 2
/* C language equivalent of the typedefs from the table above */
typedef struct {
UINT16
array1[20];
UINT16
a_size;
UINT32
array2[];
} A_STRUCT;

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 5
October 31, 2013

Part 2: Structures

4.7

Trusted Platform Module Library

Structure Definitions

The tables used to define structures have a title that starts with the word “Definition” and ends with
“Structure.” The first column of the table will denote the reference names for the structure members; the
second column the data type of the member; and the third column a synopsis of the use of the element.
The table in Example 1 shows an example of how a structure would be defined in this specification and
Example 2 shows the C code that might be produced from the table by an automated process. Example 3
illustrates the type of unmarshaling code that could be generated using the information available in the
table.
EXAMPLE 1

Table xx — Definition of SIMPLE_STRUCTURE Structure
Parameter

Type

Description

tag

TPM_ST

value1

INT32

value2

INT32

EXAMPLE 2
/* C language equivalent of the structure defined in the table above */
typedef struct {
TPM_ST
tag;
INT32
value1
INT32
value2;
} SIMPLE_STRUCTURE;
EXAMPLE 3
bool SIMPLE_STRUCTURE_Unmarshal(SIMPLE_STRUCTURE *target, BYTE **buffer, INT32 *size)
{
// If unmarshal of tag succeeds
if(TPM_ST_Unmarshal((TPM_ST *)&(target->tag), buffer, size))
// then umarshal value1, and if that succeeds...
if(INT32_Unmarshal((INT32 *)&(target->value1, buffer, size))
// then return the results of unmarshaling values
return(INT32_Unmarshal((INT32 *)&(target->value2, buffer, size))
// if unmarshal of tag or value failed, return failure
return FALSE;
}

Page 6
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library
4.8

Part 2: Structures

Conditional Types

An enumeration may contain an extended value indicated by “+” preceding the name in the "Value"
column. This “+” indicates that this is a conditional value that may be allowed in certain situations.
NOTE

In many cases, the input values are algorithm IDs. When two collections of algorithm IDs differ only
because one collection allows TPM_ALG_NULL and the other does not, it is preferred that the re not be
two completely different enumerations because this leads to many casts. To avoid this, the “+” can be
added to a TPM_ALG_NULL value in the table defining the type. When the use of that type allows
TPM_ALG_NULL to be in the set, the use would append a “+” to the instance.

EXAMPLE

Table xx — Definition of (CARD_SUIT) TPMI_CARD_SUIT Type
Values

Comments

SPADES
HEARTS
DIAMONDS
CLUBS
+JOKER

an optional value that may be allowed

#TPM_RC_SUIT

response code returned when the input value is not one of the
values above

When an interface type is used, a “+” will be appended to the type specification for the parameter when
the conditional value is allowed. If no “+” is present, then the conditional value is not allowed.
EXAMPLE 1

Table xx — Definition of POKER_CARD Structure
Parameter

Type

Description

suit

TPMI_CARD_SUIT+

allows joker

number

UINT8

the card value

EXAMPLE 2

Table xx — Definition of BRIDGE_CARD Structure
Parameter

Type

Description

suit

TPMI_CARD_SUIT

does not allow joker

number

UINT8

the card value

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 7
October 31, 2013

Part 2: Structures
4.9

Trusted Platform Module Library

Unions

4.9.1

Introduction

A union allows a structure to contain a variety of structures or types. The union has members, only one of
which is present at a time. Three different tables are required to fully characterize a union so that it may
be communicated on the TPM interface and used by the TPM:
1) union definition;
2) union instance; and
3) union selector definition.
4.9.2

Union Definition

The table in Example 1 illustrates a union definition. The title of a union definition table starts with
“Definition” and ends with “Union.” The “Parameter” column of a union definition lists the different names
that are used when referring a specific type. The “Type” column identifies the data type of the member.
The “Selector” column identifies the value that is used by the marshaling and unmarshaling code to
determine which case of the union is present.
If a parameter is the keyword “null,” then this denotes a selector with no contents. The table in Example 1
illustrates a union in which a conditional null selector is allowed to indicate an empty union member.
Example 2 shows how the table would be converted into C-compatible code.
The expectation is that the unmarshaling code for the union will validate that the selector for the union is
one of values in the selector list.
EXAMPLE 1

Table xx — Definition of NUMBER_UNION Union
Parameter

Type

Selector

a_byte

BYTE

BYTE_SELECT

an_int

int

INT_SELECT

a_float

float

FLOAT_SELECT

+null

NULL_SELECT

Description

the empty branch

EXAMPLE 2
// C-compatible version of the union defined in the table above
typedef union {
BYTE
a_byte;
int
an_int;
float
a_float;
} NUMBER_UNION;
EXAMPLE 3

Page 8
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

// Possible auto-generated code to unmarshal a union in Example 2 based on the
// input value of selector
bool NUMBER_UNION_Unmarshal(NUMBER_UNION *target, BYTE **buffer,
INT32 *size, UINT32 selector)
{
switch (selector) {
case BYTE_SELECT:
return BYTE_Unmarshal((BYTE *)&(target->a_byte), buffer, size);
case INT_SELECT:
return INT_Unmarshal((int *)&(target->an_int), buffer, size);
case FLOAT_SELECT:
return FLOAT_Unmarshal((float *)&(target->a_float), buffer, size);
case NULL_SELECT:
return;
}

A table may have a type with no selector. This is used when the first part of the structure for all union
members is identical. This type is a programming convenience, allowing code to reference the common
members without requiring a case statement to determine the specific structure. In object oriented
programming terms, this type is a superclass and the types with selectors are subclasses.
4.9.3

Union Instance

When a union is used in a structure that is sent on the interface, the structure will minimally contain a
selector and a union. The selector value indicates which of the possible union members is present so that
the unmarshaling code can unmarshal the correct type. The selector may be any of the parameters that
occur in the structure before the union instance. To denote the structure parameter that is used as the
selector, its name is in brackets (“[ ]”) placed before the parameter name associated with the union.
The table in Example 1 shows the definition of a structure that contains a union and a selector. Example 2
shows how the table would be converted into C-compatible code and Example 3 shows how the
unmarshaling code would handle the selector.
EXAMPLE 1

Table xx — Definition of STRUCTURE_WITH_UNION Structure
Parameter

Type

Description

select

NUMBER_SELECT

a value indicating the type in number

[select] number

NUMBER_UNION

a union as shown in 4.9.2

EXAMPLE 2
// C-compatible version of the union structure in the table above
typedef struct {
NUMBER_SELECT
select;
NUMBER_UNION
number;
} STRUCT_WITH_UNION;
EXAMPLE 3

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 9
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

// Possible unmarshaling code for the structure above
bool STRUCT_WITH_UNION_Unmarshal(STRUCT_WITH_UNION *target, BYTE **buffer, INT32 *size)
{
// Unmarshal the selector value
if(!NUMBER_SELECT_Unmarshal((NUMBER_SELECT *)&target->select, buffer, size))
return FALSE;
// Use the unmarshaled selector value to indicate to the union unmarshal
// function which unmarshaling branch to follow.
return(NUMBER_UNION_Unmarshal((NUMBER_UNION *)&(target->number),
buffer, size, (UINT32)target->select);
}

4.9.4

Union Selector Definition

The selector definition limits the values that are used in unmarshaling a union. Two different selector sets
applied to the same union define different types.
For the union in 4.9.2, a selector definition should be limited to no more than four values, one for each of
the union members. The selector definition could have fewer than four values.
In Example 1, the table defines a value for each of the union members.
EXAMPLE 1

Table xx — Definition of (INT8) NUMBER_SELECT Values <IN>
Name

Value

BYTE_SELECT

3

INT_SELECT

2

FLOAT_SELECT

1

NULL_SELECT

Comments

0

The unmarshaling code would limit the input values to the defined values. When the NUMBER_SELECT
is used in the union instance of 4.9.3, any of the allowed union members of NUMBER_UNION could be
present.
A different selection could be used to limit the values in a specific instance. To get the different selection,
a new structure is defined with a different selector. The table in example 2 illustrates a way to subset the
union. The base type of the selection is NUMBER_SELECT so a NUMBER_SELECT will be unmarshaled
before the checks are made to see if the value is in the correct range for JUST_INTEGERS types. If the
base type had been UINT8, then no checking would occur prior to checking that the value is in the
allowed list. In this particular case, the effect is the same in either case since the only values that will be
accepted by the unmarshaling code for JUST_INTEGER are BYTE_SELECT and INT_SELECT.
EXAMPLE 2

Table xx — Definition of (NUMBER_SELECT) AN_INTEGER Type <IN>
Values
{BYTE_SELECT, INT_SELECT}
NOTE

Comments
list of allowed values

Since NULL_SELECT is not in the list of values accepted as a JUST_INTEGER, the “+” modifier will have
no effect if used for a JUST_INTEGERS type shown in Example 3.

Page 10
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

The selector in Example 2 can then be used in a subset union as shown in Example 3.
EXAMPLE 3

Table xx — Definition of JUST_INTEGERS Structure
Parameter

Type

Description

select

AN_INTEGER

a value indicating the type in number

[select] number

NUMBER_UNION

a union as shown in 4.9.2

4.10 Bit Field Definitions
A table that defines a structure containing bit fields has a title that starts with “Definition” and ends with
“Bits.” A type identifier in parentheses in the title indicates the size of the datum that contains the bit
fields.
When the bit fields do not occupy consecutive locations, a spacer field is defined with a name of
“Reserved.” Bits in these spaces are reserved and shall be zero.
The table in Example 1 shows how a structure containing bit fields would be defined in this specification.
Example 2 shows the C code that might be produced from that table by an automated process.
When a field has more than one bit, the range is indicated by a pair of numbers separated by a colon (“:”).
The numbers will be in high:low order.
EXAMPLE1

Table xx — Definition of (UINT32) SOME_ATTRIBUTE Bits
Bit
0

Name

Action

zeroth_bit

SET (1): what to do if bit is 1
CLEAR (0): what to do if bit is 0

1

first_bit

SET (1): what to do if bit is 1
CLEAR (0): what to do if bit is 0

6:2
7

Reserved

A placeholder that spans 5 bits

third_bit

SET (1): what to do if bit is 1
CLEAR (0): what to do if bit is 0

31:8

Reserved

Placeholder to fill 32 bits

EXAMPLE 2
/* C language equivalent of the attributes structure defined in the table above */
typedef struct {
int zeroth_bit : 1;
int first_bit : 1;
int Reserved3 : 5;
int third_bit : 1;
int Reserved7 : 24;
} SOME_ATTRIBUTE;

4.11 Parameter Limits
A parameter used in a structure may be given a set of values that can be checked by the unmarshaling
code. The allowed values for a parameter may be included in the definition of the parameter by
appending the values and delimiting them with braces (“{ }”). The values are comma-separated
expressions. A range of numbers may be indicated by separating two expressions with a colon (“:”). The
Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 11
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

first number is an expression that represents the minimum allowed value and the second number
indicates the maximum. If the minimum or maximum value expression is omitted, then the range is openended.
Parameter limits expressed using braces apply only to inputs to the TPM. Any value returned by the
TPM is assumed to be valid.
The maximum size of an array may be indicated by putting a “{}” delimited expression following the
square brackets (“[ ]”) that indicate that the value is an array.
EXAMPLE

Table xx — Definition of B_STRUCT Structure
Parameter

Type

Description

value1 {20:25}

UINT16

a parameter that must have a value between 20
and 25

value2 {20}

UINT16

a parameter that must have a value of 20

value3 {:25}

INT16

a parameter that may be no larger than 25
Since the parameter is signed, the minimum value
is the largest negative integer that may be
expressed in 16 bits.

value4 {20:}

a parameter that must be at least 20

value5 {1,2,3,5}

UINT16

a parameter that may only have one of the four
listed values

value6 {1, 2, 10:(10+10)}

UINT32

a parameter that may have a value of 1, 2, or be
between 10 and 20

array1[value1]

BYTE

Because the index refers to value1, which is a
value limited to be between 20 and 25 inclusive,
array1 is an array that may have between 20 and
25 octets. This is not the preferred way to indicate
the upper limit for an array as it does not indicate
the upper bound of the size.
NOTE

array2[value4]{:25}

BYTE

This is a limitation of the current
parser. A different parser could
associate the range of value1 with this
value and compute the maximum size
of the array.

an array that may have between 20 and 25 octets
This arrangement is used to allow the automatic
code generation to allocate 25 octets to store the
largest array2 that can be unmarshaled. The code
generation can determine from this expression that
value4 shall have a value of 25 or less. From the
definition of value4 above, it can determine that
value4 must have a value of at least 20.

Page 12
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

4.12 Enumeration Macro
An enumeration can be a list of allowed numeric values. For example, the allowed sizes for an RSA key
might be expressed as:

4.13 Size Checking
In some structures, a size field is present to indicate the number of octets in some subsequent part of the
structure. In the B_STRUCT table in 4.11, value4 indicates how many octets to unmarshal for array2. This
semantic applies when the size field determines the number of octets to unmarshal. However, in some
cases, the subsequent structure is self-defining. If the size precedes a parameter that is not an octet
array, then the unmarshaled size of that parameter is determined by its data type. The table in Example 1
shows a structure where the size parameter would nominally indicate the number of octets in the
remainder of the structure.
EXAMPLE 1

Table xx — Definition of C_STRUCT Structure
Parameter

Type

Comments

size

UINT16

the expected size of the remainder of the structure

anInteger

UINT32

a 4-octet value

In this particular case, the value of size would be incorrect if it had any value other than 4. So that the
table parser is able to know that the purpose of the size parameter is to define the number of octets
expected in the remainder of the structure, an equal sign (“=”) is appended to the parameter name.
In the example below, the size= causes the parser to generate validation code that will check that the
unmarshaled size of someStructure and someData adds to the value unmarshaled for size. When the “=”
decoration is present, a value of zero is not allowed for the size.
EXAMPLE 2

Table xx — Definition of D_STRUCT Structure
Parameter

Type

Comments

size=

UINT16

the size of a structure
The “=” indicates that the TPM is required to
validate that the remainder of the D_STRUCT
structure is exactly the value in size. That is, the
number of bytes in the input buffer used to
successfully unmarshal someStructure must be the
same as size.

someStructure

A_STRUCT

a structure to be unmarshaled
The size of the structure is computed when it is
unmarshaled. Because an “=” is present on the
definition of size, the TPM is required to validate
that the unmarshaled size exactly matches size.

someData

Family “2.0”
Level 00 Revision 00.99

UINT32

a value

Published
Copyright © TCG 2006-2013

Page 13
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

4.14 Data Direction
A structure or union may be input (IN), output (OUT), or internal. An input structure is sent to the TPM and
is unmarshaled by the TPM. An output structure is sent from the TPM and is marshaled by the TPM. An
internal structure is not used outside of the TPM except that it may be included in a saved context.
By default, structures are assumed to be both IN and OUT and the code generation tool will generate
both marshaling and unmarshaling code for the structure. This default may be changed by using values
enclosed in angle brackets (“<>”) as part of the table title. If the angle brackets are empty, then the
structure is internal and neither marshaling nor unmarshaling code is generated. If the angle brackets
contain the letter “I” (such as in “IN” or “in” or “i”), then the structure is input and unmarshaling code will be
generated. If the angle brackets contain the letter “O” (such as in “OUT” or “out” or “o”), then the structure
is output and marshaling code will be generated.
EXAMPLE 1

Both of the following table titles would indicate a structure that is used in both input and output
Table xx — Definition of TPMS_A Structure
Table xx — Definition of TPMS_A Structure <IN/OUT>

EXAMPLE 2

The following table title would indicate a structure that is used only for input
Table xx — Definition of TPMS_A Structure <IN>

EXAMPLE 3

The following table title would indicate a structure that is used only for output
Table xx — Definition of TPMS_A Structure <OUT>

4.15 Structure Validations
By default, when a structure is used for input to the TPM, the code generation tool will generate the
unmarshaling code for that structure. Auto-generation may be suppressed by adding an “S” within the
angle brackets.
EXAMPLE

The following table titles indicate a structure for which the auto -generation of the validation code is to be
suppressed.
Table xx — Definition of TPMT_A Structure <S>
Table xx — Definition of TPMT_A Structure <IN, S>
Table xx — Definition of TPMT_A Structure <IN/OUT, S>

4.16 Name Prefix Convention
Parameters are constants, variables, structures, unions, and structure members. Structure members are
given a name that is indicative of its use, with no special prefix. The other parameter types are named
according to their type with their name starting with “TPMx_”, where “x” is an optional character to indicate
the data type.
In some cases, additional qualifying characters will follow the underscore. These are generally used when
dealing with an enumerated data type.
TPMA_ This is an attribute structure, where bits are associated with particular attributes

Page 14
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

Table 1 — Name Prefix Convention
Prefix

Description

_TPM_

an indication/signal from the TPM’s system interface

TPM_

a constant or an enumerated type

TPM2_

a command defined by this specification

TPM2B_

a structure that is a sized buffer where the size of the buffer is contained in a 16-bit, unsigned
value
The first parameter is the size in octets of the second parameter. The second parameter may be
any type.

TPMA_

a structure where each of the fields defines an attribute and each field is usually a single bit
All the attributes in an attribute structure are packed with the overall size of the structure
indicated in the heading of the attribute description (UINT8, UINT16, or UINT32).

TPM_ALG_

an enumerated type that indicates an algorithm
A TPM_ALG_ is often used as a selector for a union.

TPMI_

an interface type
The value is specified for purposes of dynamic type checking when unmarshaled.

TPML_

a list length followed by the indicated number of entries of the indicated type
This is an array with a length field.

TPMS_

a structure that is not a size buffer or a tagged buffer or a list

TPMT_

a structure with the first parameter being a structure tag, indicating the type of the structure that
follows
A structure tag may be either a TPMT_ST_ or TPM_ALG_ depending on context.

TPMU_

a union of structures, lists, or unions
If a union exists, there will normally be a companion TPMT_ that is the expression of the union
in a tagged structure, where the tag is the selector indicating which member of the union is
present.

TPM_xx_

an enumeration value of a particular type
The value of “xx” will be indicative of the use of the enumerated type. A table of “TPM_xx”
constant definitions will exist to define each of the TPM_xx_ values.
EXAMPLE 1

TPM_CC_ indicates that the type is used for a commandCode. The allowed enumeration
values will be found in the table defining the TPM_CC constants (Table 11).

EXAMPLE 2

TPM_RC_ indicates that the type is used for a responseCode. The allowed enumeration
values are in Table 15.

4.17 Data Alignment
The data structures in this Part 2 use octet alignment for all structures. When used in a table to indicate a
maximum size, the sizeof() function returns the octet-aligned size of the structure, with no padding.
4.18

Parameter Unmarshaling Errors

The TPM commands are defined in Part 3. The command definition included C code that details the
actions performed by that command. The code is written assuming that the parameters of the command
have been unmarshaled.
NOTE 1

An implementation is not required to process parameters in this manner or to separate the parameter
parsing from the command actions. This method was chosen for the specification so that the normative
behavior described by the detailed actions would be clear and unencumbered.

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 15
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

Unmarshaling is the process of processing the parameters in the input buffer and preparing the
parameters for use by the command-specific action code. No data movement need take place but it is
required that the TPM validate that the parameters meet the requirements of the expected data type as
defined in this Part 2.
When an error is encountered while unmarshaling a command parameter, an error response code is
returned and no command processing occurs. A table defining a data type may have response codes
embedded in the table to indicate the error returned when the input value does not match the parameters
of the table.
EXAMPLE 1

Table 11 has a listing of TPM command code values. The last row in the table contains
"#TPM_RC_COMMAND_CODE" indicating the response code that is returned if the TPM is unmarshaling
a value that it expects to be a TPM_CC and the input value is not in the table.

NOTE 2

In the reference implementation, a parameter number is added to the response code so that the offending
parameter can be isolated.

In many cases, the table contains no specific response code value and the return code will be determined
as defined in Table 2.
Table 2 — Unmarshaling Errors
Response code

Usage

TPM_RC_INSUFFICIENT

the input buffer did not contain enough octets to allow unmarshaling of the
expected data type;

TPM_RC_RESERVED

a non-zero value was found in a reserved field of an attribute structure (TPMA_)

TPM_RC_SIZE

the value of a size parameter is larger or smaller than allowed

TPM_RC_VALUE

A parameter does not have one of its allowed values

TPM_RC_TAG

A parameter that should be a structure tag has a value that is not supported by
the TPM

In some commands, a parameter may not be used because of various options of that command.
However, the unmarshaling code is required to validate that all parameters have values that are allowed
by the Part 2 definition of the parameter type even if that parameter is not used in the command actions.

Page 16
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

5

Part 2: Structures

Base Types

5.1

Primitive Types

The types listed in Table 3 are the primitive types on which all of the other types and structures are
based. The values in the “Type” column should be edited for the compiler and computer on which the
TPM is implemented. The values in the “Name” column should remain the same because these values
are used in the remainder of the specification.
NOTE

The types are compatible with the C99 standard and should be defined in stdint.h that is provided with a
C99-compliant compiler;

The parameters in the Name column should remain in the order shown.
Table 3 — Definition of Base Types
Type

Name

Description

uint8_t

UINT8

unsigned, 8-bit integer

uint8_t

BYTE

unsigned 8-bit integer

int8_t

INT8

signed, 8-bit integer

int

BOOL

a bit in an int
This is not used across the interface but is used in many places in the code. If
the type were sent on the interface, it would have to have a type with a specific
number of bytes.

uint16_t

UINT16

unsigned, 16-bit integer

int16_t

INT16

signed, 16-bit integer

uint32_t

UINT32

unsigned, 32-bit integer

int32_t

INT32

signed, 32-bit integer

uint64_t

UINT64

unsigned, 64-bit integer

int64_t

INT64

signed, 64-bit integer

5.2

Miscellaneous Types

These types are defined either for compatibility with previous versions of this specification or for clarity of
this specification.
Table 4 — Definition of Types for Documentation Clarity
Type

Name

Description

UINT32

TPM_ALGORITHM_ID

this is the 1.2 compatible form of the TPM_ALG_ID

UINT32

TPM_MODIFIER_INDICATOR

UINT32

TPM_AUTHORIZATION_SIZE

the authorizationSize parameter in a command

UINT32

TPM_PARAMETER_SIZE

the parameterSizeset parameter in a command

UINT16

TPM_KEY_SIZE

a key size in octets

UINT16

TPM_KEY_BITS

a key size in bits

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 17
October 31, 2013

Part 2: Structures

6

Trusted Platform Module Library

Constants

6.1

TPM_SPEC (Specification Version Values)

These values are readable with TPM2_GetCapability().
NOTE

This table will require editing when the specification is updated.

Table 5 — Definition of (UINT32) TPM_SPEC Constants <>
Name

Value

Comments
ASCII “2.0” with null terminator

TPM_SPEC_FAMILY

0x322E3000

TPM_SPEC_LEVEL

00

the level number for the specification

TPM_SPEC_VERSION

99

the version number of the spec (00.99 * 100)

TPM_SPEC_YEAR

2013

the year of the version

TPM_SPEC_DAY_OF_YEAR

304

the day of the year (October 31, 2013)

6.2

TPM_GENERATED

This constant value differentiates TPM-generated structures from non-TPM structures.
Table 6 — Definition of (UINT32) TPM_GENERATED Constants <O>
Name

Value

Comments

TPM_GENERATED_VALUE

0xff544347

0xFF ‘TCG’ (FF 54 43 4716)

Page 18
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library
6.3

Part 2: Structures

TPM_ALG_ID

The TCG maintains a registry of all algorithms that have an assigned algorithm ID. That registry is the
definitive list of algorithms that may be supported by a TPM.
NOTE

Inclusion of an algorithm does NOT indicate that the necessary claims of the algorithm are av ailable
under RAND terms from a TCG member.

Table 7 is a copy of the TPM_ALG_ID constants table in the TCG registry as of the date of publication of
this specification. Table 7 is provided for illustrative purposes only.
{{Note for TCG Admin: Table 7 and the text in the paragraph above should be updated to reflect the final
decisions by the TCG Board of Directors about inclusion of the table and the contents of the table. The
desired approach is to leave the text as is and, immediately before publication of this specification for
TCG admin to verify that Table 7 is the same as the algorithm registry table published by the TCG.}}
An algorithm ID is often used like a tag to determine the type of a structure in a context-sensitive way.
The values for TPM_ALG_ID shall be in the range of 00 0016 – 7F FF16. Other structure tags will be in the
range 80 0016 – FF FF16.
NOTE

In TPM 1.2, these were defined as 32-bit constants. This specification limits the future size of the
algorithm ID to 16 bits. The TPM_ALGORITHM_ID data type will continue to be a 32-bit number.

An algorithm shall not be assigned a value in the range 00 C116 – 00 C616 in order to prevent any overlap
with the command structure tags used in TPM 1.2.
The implementation of some algorithms is dependent on the presence of other algorithms. When there is
a dependency, the algorithm that is required is listed in column labeled "D" (dependent) in Table 7.
EXAMPLE

Implementation of TPM_ALG_RSASSA requires that the RSA algorithm be implemented.

TPM_ALG_KEYEDHASH and TPM_ALG_NULL are required of all TPM implementations.
Table 7 — Definition of (UINT16) TPM_ALG_ID Constants <IN/OUT, S>
Algorithm Name

Value

Type

a

D

Comments

TPM_ALG_ERROR

0x0000

should not occur

TPM_ALG_FIRST

0x0001

TPM_ALG_RSA

0x0001

AO

the RSA algorithm

TPM_ALG_SHA

0x0004

H

the SHA1 algorithm

TPM_ALG_SHA1

0x0004

H

redefinition for documentation consistency
OID 30 21 30 09 06 05 2B 0E 03 02 1A 05 00 04 14 16

TPM_ALG_HMAC

0x0005

HX

the RFC 2104 Hash Message Authentication Code
(HMAC) algorithm

TPM_ALG_AES

0x0006

S

the AES algorithm with a key size of 128 bits for TPM
1.2
the AES algorithm with multiple sizes of key for TPM
2.0

TPM_ALG_MGF1

0x0007

HM

the mask-generation function defined in IEEE Std
1363-2000

TPM_ALG_KEYEDHASH

0x0008

HEXO

an encryption or signing algorithm using a keyed hash,
defined by TCG in the TPM 2.0 specification
may also refer to a data object that is neither signing
nor encrypting

TPM_ALG_XOR

0x000A

HS

marker value

the XOR obfuscation algorithm
NOTE

Family “2.0”
Level 00 Revision 00.99

The implementation of XOR obfuscation in TPM
2.0 is not the same as the XOR encryption
method in TPM 1.2.

Published
Copyright © TCG 2006-2013

Page 19
October 31, 2013

Part 2: Structures
Algorithm Name

Trusted Platform Module Library
a

Value

Type

TPM_ALG_SHA256

0x000B

H

D

Comments
the SHA 256 algorithm
OID 30 31 30 0d 06 09 60 86 48 01 65 03 04 02 01 05
00 04 2016

TPM_ALG_SHA384

0x000C

H

the SHA 384 algorithm
OID 30 41 30 0d 06 09 60 86 48 01 65 03 04 02 02 05
00 04 3016

TPM_ALG_SHA512

0x000D

H

the SHA 512 algorithm
OID 30 51 30 0d 06 09 60 86 48 01 65 03 04 02 03 05
00 04 4016

TPM_ALG_NULL

0x0010

TPM_ALG_SM3_256

0x0012

H

hash algorithm standardized by OSCCA
Block size is 512 bits.
Output size is 256 bits.

TPM_ALG_SM4

0x0013

S

symmetric algorithm standardized by OSCCA
Key and block size are 128 bits.

TPM_ALG_RSASSA

0x0014

AX

RSA a signature algorithm according to PKCS#1v2.1, 8.2

TPM_ALG_RSAES

0x0015

AE

RSA a padding algorithm according to PKCS#1v2.1, 7.2

TPM_ALG_RSAPSS

0x0016

AX

RSA signature algorithm (RSSASSA-PSS) according to
PKCS#1v2.1, 8.1

TPM_ALG_OAEP

0x0017

AE

RSA padding algorithm
PKCS#1v2.1, 7.1

TPM_ALG_ECDSA

0x0018

AX

ECC signature algorithm using elliptic curve cryptography
(ECC)

TPM_ALG_ECDH

0x0019

AM

ECC secret sharing using ECC from SP800-56A
Based on context, this can be either One-Pass DiffieHellman, C(1, 1, ECC CDH) defined in 6.2.2.2 or Full
Unified Model C(2, 2, ECC CDH) defined in 6.1.1.2

TPM_ALG_ECDAA

0x001A

AX

ECC elliptic-curve based, anonymous signing scheme

TPM_ALG_SM2

0x001B

AXE

Null algorithm

(RSAES_OAEP)

according

to

ECC depending on context, either an elliptic-curve based,
signature algorithm or a key exchange protocol
NOTE

This would be one of the algorithms specified in
CM/T 0002 – 2012.

TPM_ALG_ECSCHNORR

0x001C

AX

ECC elliptic-curve-based Schnorr signature

TPM_ALG_ECMQV

0x001D

AE

ECC two-phase elliptic-curve key exchange -- C(2, 2, ECC
MQV) from SP800-56A

TPM_ALG_KDF1_SP800_56a

0x0020

HM

ECC key derivation alternative #1 from SP800-56A

TPM_ALG_KDF2

0x0021

HM

key derivation function from IEEE Std 1363a-2004

TPM_ALG_KDF1_SP800_108

0x0022

HM

a key derivation method according to SP 800-108, "5.1
KDF in Counter Mode”

TPM_ALG_ECC

0x0023

AO

prime field ECC

TPM_ALG_SYMCIPHER

0x0025

O

TPM_ALG_CTR

0x0040

SE

Counter mode – if implemented, all symmetric block
ciphers (S type) implemented shall be capable of using
this mode.

TPM_ALG_OFB

0x0041

SE

Output Feedback mode – if implemented, all
symmetric block ciphers (S type) implemented shall be
capable of using this mode.

TPM_ALG_CBC

0x0042

SE

Cipher Block Chaining mode – if implemented, all
symmetric block ciphers (S type) implemented shall be
capable of using this mode.

Page 20
October 31, 2013

the object type for a symmetric block cipher

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures
a

Algorithm Name

Value

Type

TPM_ALG_CFB

0x0043

SE

D

Comments
Cipher Feedback mode – if implemented, all
symmetric block ciphers (S type) implemented shall be
capable of using this mode.

TPM_ALG_ECB

0x0044

SE

Electronic Codebook mode – if implemented, all
symmetric block ciphers (S type) implemented shall be
capable of using this mode.
NOTE

This mode is not recommended for uses unless
the key is frequently rotated such as in video
codecs.

TPM_ALG_LAST

0x0044

marker value

reserved

0x00C1

0x00C1 – 0x00C6 are reserved

reserved

0x00C2

reserved

0x00C3

reserved

0x00C4

reserved

0x00C5

reserved

0x00C6

NOTE a Column Indicates the algorithm type and use of the algorithm inside of the TPM. The values are:
A – asymmetric algorithm with a public and private key
S – symmetric algorithm with only a private key
H – hash algorithm that compresses input data to a digest value
X – signing algorithm
E – an encryption algorithm
M – a method such as a mask generation function
O – an object type

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 21
October 31, 2013

Part 2: Structures
6.4

Trusted Platform Module Library

TPM_ECC_CURVE

The TCG maintains a registry of all curves that have an assigned curve identifier. That registry is the
definitive list of curves that may be supported by a TPM.
Table 8 is a copy of the TPM_ECC_CURVE constants table in the TCG registry as of the date of
publication of this specification. Table 8 is provided for illustrative purposes only.
{{Note for TCG Admin: Table 8 and the text in the paragraph above should be updated to reflect the final
decisions by the TCG Board of Directors about inclusion of the table and the contents of the table. The
desired approach is to leave the text as is and, immediately before publication of this specification for
TCG admin to verify that Table 8 is the same as the curve registry table published by the TCG.}}
Table 8 — Definition of (UINT16) {ECC} TPM_ECC_CURVE Constants <IN/OUT, S>
Name

Value

Comments

TPM_ECC_NONE

0x0000

TPM_ECC_NIST_P192

0x0001

TPM_ECC_NIST_P224

0x0002

TPM_ECC_NIST_P256

0x0003

TPM_ECC_NIST_P384

0x0004

TPM_ECC_NIST_P521

0x0005

TPM_ECC_BN_P256

0x0010

curve to support ECDAA

TPM_ECC_BN_P638

0x0011

curve to support ECDAA

TPM_ECC_SM2_P256

0x0020

#TPM_RC_CURVE

6.5
6.5.1

TPM_CC (Command Codes)
Format

A command is a 32-bit structure with fields assigned as shown in Figure 1.
3 3 2 2
1 0 9 8

Res V

1 1
6 5

Reserved

0
0

Command Index

Figure 1 — Command Format
Table 9 — TPM Command Format Fields Description
Bit
15:0

Name

Definition

Command Index

the index of the command

28:16 Reserved
29

V

31:30 Res

Page 22
October 31, 2013

shall be zero
SET(1): the command is vendor specific
CLEAR(0): the command is not vendor specific
shall be zero

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library
6.5.2

Part 2: Structures

Description

Table 10 provides the legend for the interpretation of the column data in Table 11.
Table 10 — Legend for Command Code Tables
Column

Allowed
Values

Comments

Name

Command
Code Name

Name of the command

Command Code

Numeric value

the numeric value for the commandCode

NV Write

blank, Y, O

indicates whether the command may cause an NV write operation
If this column contains a “Y,” then successful completion of the
command is expected to cause modification of the NV memory
because of the command actions.
If the column contains an “O,” then the command may cause a
modification to NV associated with an orderly shutdown. That is, the
command may modify the orderly save state of NV, in which case, an
NV write will be necessary.
NOTE 1

Any command may be delayed in order for the TPM to complete
NV actions due to a previous command or because of an
asynchronous update of Clock.

NOTE 2

Any command with an authorization value may cause an NV write
on an authorization failure but the command does not complete
successfully.

If the entry is blank, then writing to NV is not allowed in the command
actions.
Physical Presence

blank, Y

indicates whether the platformAuth for this command may require
confirmation through a physical presence indication

Encrypted

blank, 2, 4

A numeric value that indicates the number of octets in the size field of
the first parameter of a command
Blank indicates that no size field is present and no parameter
encryption is allowed.

Encrypt

blank, 2, 4

A numeric value that indicates the number of octets in the size field of
the first parameter of a response
Blank indicates that no size field is present and no parameter
encryption is allowed.

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 23
October 31, 2013

Part 2: Structures
6.5.3

Trusted Platform Module Library

TPM_CC Listing

Table 11 lists the command codes and their attributes. The only normative column in this table is the
column indicating the command code assigned to a specific command (the "Command Code" column).
For all other columns, the command and response tables in Part 3 are definitive.

Encrypt

Encrypted

Physical Presence

NV Write

Table 11 — Definition of (UINT32) TPM_CC Constants (Numeric Order) <IN/OUT, S>

Name

Command
Code

TPM_CC_FIRST

0x0000011F

Compile variable. May decrease
based on implementation.

TPM_CC_PP_FIRST

0x0000011F

Compile variable. Would decrease
if new PP commands are added

TPM_CC_NV_UndefineSpaceSpecial

0x0000011F

Y

Y

TPM_CC_EvictControl

0x00000120

Y

Y

TPM_CC_HierarchyControl

0x00000121

Y

Y

TPM_CC_NV_UndefineSpace

0x00000122

Y

Y

TPM_CC_ChangeEPS

0x00000124

Y

Y

TPM_CC_ChangePPS

0x00000125

Y

Y

TPM_CC_Clear

0x00000126

Y

Y

TPM_CC_ClearControl

0x00000127

Y

Y

TPM_CC_ClockSet

0x00000128

Y

Y

TPM_CC_HierarchyChangeAuth

0x00000129

Y

Y

2

TPM_CC_NV_DefineSpace

0x0000012A

Y

Y

2

TPM_CC_PCR_Allocate

0x0000012B

Y

Y

TPM_CC_PCR_SetAuthPolicy

0x0000012C

Y

Y

TPM_CC_PP_Commands

0x0000012D

Y

Y

TPM_CC_SetPrimaryPolicy

0x0000012E

Y

Y

2

TPM_CC_FieldUpgradeStart

0x0000012F

O

Y

2

TPM_CC_ClockRateAdjust

0x00000130

O

Y

TPM_CC_CreatePrimary

0x00000131

TPM_CC_NV_GlobalWriteLock

0x00000132

TPM_CC_PP_LAST

0x00000132

TPM_CC_GetCommandAuditDigest

0x00000133

Y

TPM_CC_NV_Increment

0x00000134

Y

Page 24
October 31, 2013

Y
O

Comments

2

2

2

Y
Compile variable
2

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Command
Code

TPM_CC_NV_SetBits

0x00000135

Y

TPM_CC_NV_Extend

0x00000136

Y

TPM_CC_NV_Write

0x00000137

Y

TPM_CC_NV_WriteLock

0x00000138

Y

TPM_CC_DictionaryAttackLockReset

0x00000139

O

TPM_CC_DictionaryAttackParameters

0x0000013A

Y

TPM_CC_NV_ChangeAuth

0x0000013B

Y

2

TPM_CC_PCR_Event

0x0000013C

O

2

TPM_CC_PCR_Reset

0x0000013D

O

TPM_CC_SequenceComplete

0x0000013E

O

TPM_CC_SetAlgorithmSet

0x0000013F

Y

TPM_CC_SetCommandCodeAuditStatus

0x00000140

Y

TPM_CC_FieldUpgradeData

0x00000141

O

TPM_CC_IncrementalSelfTest

0x00000142

O

TPM_CC_SelfTest

0x00000143

O

TPM_CC_Startup

0x00000144

Y

TPM_CC_Shutdown

0x00000145

Y

TPM_CC_StirRandom

0x00000146

Y

TPM_CC_ActivateCredential

0x00000147

TPM_CC_Certify

0x00000148

TPM_CC_PolicyNV

0x00000149

TPM_CC_CertifyCreation

0x0000014A

TPM_CC_Duplicate

0x0000014B

TPM_CC_GetTime

0x0000014C

O

2

TPM_CC_GetSessionAuditDigest

0x0000014D

O

2

TPM_CC_NV_Read

0x0000014E

TPM_CC_NV_ReadLock

0x0000014F

TPM_CC_ObjectChangeAuth

0x00000150

2

TPM_CC_PolicySecret

0x00000151

2

TPM_CC_Rewrap

0x00000152

2

Family “2.0”
Level 00 Revision 00.99

Encrypt

Name

NV Write

Encrypted

Part 2: Structures

Physical Presence

Trusted Platform Module Library

2

PCR
PCR

2

2

2

2
2

O

2

2

2

2
O

Comments

Policy

2

2

2

2

2
O

Published
Copyright © TCG 2006-2013

2
Policy
2

Page 25
October 31, 2013

Trusted Platform Module Library

Command
Code

Encrypt

TPM_CC_Create

0x00000153

2

2

TPM_CC_ECDH_ZGen

0x00000154

2

2

TPM_CC_HMAC

0x00000155

2

2

TPM_CC_Import

0x00000156

2

2

TPM_CC_Load

0x00000157

2

2

TPM_CC_Quote

0x00000158

2

2

TPM_CC_RSA_Decrypt

0x00000159

TPM_CC_HMAC_Start

0x0000015B

2

TPM_CC_SequenceUpdate

0x0000015C

2

TPM_CC_Sign

0x0000015D

2

TPM_CC_Unseal

0x0000015E

TPM_CC_PolicySigned

0x00000160

TPM_CC_ContextLoad

0x00000161

O

Context

TPM_CC_ContextSave

0x00000162

O

Context

TPM_CC_ECDH_KeyGen

0x00000163

2

TPM_CC_EncryptDecrypt

0x00000164

2

TPM_CC_FlushContext

0x00000165

TPM_CC_LoadExternal

0x00000167

2

2

TPM_CC_MakeCredential

0x00000168

2

2

TPM_CC_NV_ReadPublic

0x00000169

TPM_CC_PolicyAuthorize

0x0000016A

TPM_CC_PolicyAuthValue

0x0000016B

Policy

TPM_CC_PolicyCommandCode

0x0000016C

Policy

TPM_CC_PolicyCounterTimer

0x0000016D

2

Policy

TPM_CC_PolicyCpHash

0x0000016E

2

Policy

TPM_CC_PolicyLocality

0x0000016F

TPM_CC_PolicyNameHash

0x00000170

TPM_CC_PolicyOR

0x00000171

TPM_CC_PolicyTicket

0x00000172

TPM_CC_ReadPublic

0x00000173

Page 26
October 31, 2013

NV Write

Name

Encrypted

Physical Presence

Part 2: Structures

O

Comments

2
2

2
2

Policy

O

Context

NV
2

Policy

Policy
2

Policy
Policy

2

Published
Copyright © TCG 2006-2013

Policy
2

Family “2.0”
Level 00 Revision 00.99

Encrypt

2

NV Write

Encrypted

Part 2: Structures

Physical Presence

Trusted Platform Module Library

2

2

2

Name

Command
Code

TPM_CC_RSA_Encrypt

0x00000174

TPM_CC_StartAuthSession

0x00000176

TPM_CC_VerifySignature

0x00000177

TPM_CC_ECC_Parameters

0x00000178

TPM_CC_FirmwareRead

0x00000179

TPM_CC_GetCapability

0x0000017A

TPM_CC_GetRandom

0x0000017B

TPM_CC_GetTestResult

0x0000017C

TPM_CC_Hash

0x0000017D

TPM_CC_PCR_Read

0x0000017E

PCR

TPM_CC_PolicyPCR

0x0000017F

Policy

TPM_CC_PolicyRestart

0x00000180

TPM_CC_ReadClock

0x00000181

TPM_CC_PCR_Extend

0x00000182

O

2

TPM_CC_PCR_SetAuthValue

0x00000183

N

2

TPM_CC_NV_Certify

0x00000184

O

TPM_CC_EventSequenceComplete

0x00000185

O

TPM_CC_HashSequenceStart

0x00000186

TPM_CC_PolicyPhysicalPresence

0x00000187

Policy

TPM_CC_PolicyDuplicationSelect

0x00000188

Policy

TPM_CC_PolicyGetDigest

0x00000189

Policy

TPM_CC_TestParms

0x0000018A

TPM_CC_Commit

0x0000018B

TPM_CC_PolicyPassword

0x0000018C

TPM_CC_ZGen_2Phase

0x0000018D

TPM_CC_EC_Ephemeral

0x0000018E

TPM_CC_PolicyNvWritten

0x0000018F

Policy

TPM_CC_LAST

0x0000018F

Compile variable. May increase
based on implementation.

O

Comments

2

2

2

O

2

2

2
Policy

2

2

NOTE

#TPM_RC_COMMAND_CODE

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

This is not a FMT1 code
and a parameter indicator
value may not be added to

Page 27
October 31, 2013

Encrypt

Encrypted

Command
Code

Name

Physical Presence

Trusted Platform Module Library

NV Write

Part 2: Structures

Comments
this value.

6.6

TPM_RC (Response Codes)

6.6.1

Description

Each return from the TPM has a 32-bit response code. The TPM will always set the upper 20 bits (31:12)
of the response code to 0 00 0016 and the low-order 12 bits (11:00) will contain the response code.
When a command succeeds, the TPM shall return TPM_RC_SUCCESS (0 0016) and will update any
authorization-session nonce associated with the command.
When a command fails to complete for any reason, the TPM shall return


a TPM_ST (UINT16) with a value of TPM_TAG_RSP_COMMAND or TPM_ST_NO_SESSIONS,
followed by



a UINT32 (responseSize) with a value of 10, followed by



a UINT32 containing a response code with a value other than TPM_RC_SUCCESS.

Commands defined in this specification will use a tag of either TPM_ST_NO_SESSIONS or
TPM_ST_SESSIONS. Error responses will use a tag value of TPM_ST_NO_SESSIONS and the
response code will be as defined in this specification. Commands that use tags defined in the TPM 1.2
specification will use TPM_TAG_RSP_COMMAND in an error and a response code defined in TPM 1.2.
If the tag of the command is not a recognized command tag, the TPM error response will differ depending
on TPM 1.2 compatibility. If the TPM supports 1.2 compatibility, the TPM shall return a tag of
TPM_TAG_RSP_COMMAND and an appropriate TPM 1.2 response code (TPM_BADTAG =
00 00 00 1E16). If the TPM does not have compatibility with TPM 1.2, the TPM shall return
TPM_ST_NO_SESSION and a response code of TPM_RC_TAG.
When a command fails, the TPM shall not update the authorization-session nonces associated with the
command and will not close the authorization sessions used by the command. Audit digests will not be
updated on an error. Unless noted in the command actions, a command that returns an error shall leave
the state of the TPM as if the command had not been attempted. The exception to this principle is that a
failure due to an authorization failure may update the dictionary-attack protection values.

Page 28
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library
6.6.2

Part 2: Structures

Response Code Formats

The response codes for this specification are defined such that there is no overlap between the response
codes used for this specification and those assigned in previous TPM specifications.
The formats defined in this clause only apply when the tag for the response is TPM_ST_NO_SESSIONS.
The response codes use two different format groups. One group contains the TPM 1.2 compatible
response codes and the response codes for this specification that are not related to command
parameters. The second group contains the errors that may be associated with a command parameter,
handle, or session.
Figure 2 shows the format for the response codes when bit 7 is zero.
1
1

1
0

0
9

0
8

0
7

S

bit

T

r

V

0
6

0
5

F

0
4

0
3

0
2

0
1

0
0

E

Figure 2 — Format-Zero Response Codes

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 29
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

The field definitions are:
Table 12 — Format-Zero Response Codes
Bit

Name

Definition

06:00

E

the error number
The interpretation of this field is dependent on the setting of the G and S fields.

07

F

format selector
CLEAR when the format is as defined in this Table 12 or when the response code is
TPM_RC_BAD_TAG.

08

V

version
SET (1): The error number is defined in this specification and is returned when the response tag
is TPM_ST_NO_SESSIONS.
CLEAR (0): The error number is defined by a previous TPM specification. The error number is
returned when the response tag is TPM_TAG_RSP_COMMAND.
NOTE

09

In any error number returned by a TPM, the F (bit 7) and V (bit 8) attributes shall be CLEAR
when the response tag is TPM_TAG_RSP_COMMAND value used in TPM 1.2.

Reserved shall be zero.

10

T

TCG/Vendor indicator
SET (1): The response code is defined by the TPM vendor.
CLEAR (0): The response code is defined by the TCG (a value in this specification).
NOTE

11

S

This attribute does not indicate a vendor-specific code unless the F attribute (bit[07]) is CLEAR.

severity
SET (1): The response code is a warning and the command was not necessarily in error. This
command indicates that the TPM is busy or that the resources of the TPM have to be adjusted in
order to allow the command to execute.
CLEAR (0): The response code indicates that the command had an error that would prevent it
from running.

When the format bit (bit 7) is SET, then the error occurred during the unmarshaling or validation of an
input parameter to the TPM. Figure 3 shows the format for the response codes when bit 7 is one.
bit

1
1

1
0

0
9

N

0
8

0
7

0
6

1

0
5

P

0
4

0
3

0
2

0
1

0
0

E

Figure 3 — Format-One Response Codes
There are 64 errors with this format. The errors can be associated with a parameter, handle, or session.
The error number for this format is in bits[05:00]. When an error is associated with a parameter, 0 40 16 is
added and N is set to the parameter number.
For an error associated with a handle, a parameter number (1 to 7) is added to the N field. For an error
associated with a session, a value of 8 plus the session number (1 to 7) is added to the N field. In other
words, if P is clear, then a value of 0 to 7 in the N field will indicate a handle error, and a value of 8 – 15
will indicate a session error.
NOTE

If an implementation is not able to designate the handle, session, or parameter in error, then P and N will
be zero.

Page 30
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

The field definitions are:
Table 13 — Format-One Response Codes
Bit

Name Definition

05:00

E

the error number
The error number is independent of the other settings.

06

P

SET (1): The error is associated with a parameter.
CLEAR (0): The error is associated with a handle or a session.

07

F

the response code format selector
This field shall be SET for the format in this table.

11:08

N

the number of the handle, session, or parameter in error
If P is SET, then this field is the parameter in error. If P is CLEAR, then this field indicates the
handle or session in error. Handles use values of N between 0000 2 and 01112. Sessions use
values between 10002 and 11112.

The groupings of response codes are determined by bits 08, 07, and 06 of the response code as
summarized in Table 14.
Table 14 — Response Code Groupings
Bit
0
8

0
7

0
6

Definition

0

0

x

a response code defined by TPM 1.2
NOTE

An “x” in a column indicates that this may be either 0 or 1 and not affect the grouping of the response
code.

1

0

x

a response code defined by this specification with no handle, session, or parameter number modifier

x

1

0

a response code defined by this specification with either a handle or session number modifier

x

1

1

a response code defined by this specification with a parameter number modifier

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 31
October 31, 2013

Part 2: Structures
6.6.3

Trusted Platform Module Library

TPM_RC Values

In general, response codes defined in Part 2 will be unmarshaling errors and will have the F (format) bit
SET. Codes that are unique to Part 3 will have the F bit CLEAR but the V (version) attribute will be SET to
indicate that it is a TPM 2.0 response code.
NOTE

The constant RC_VER1 is used to indicate that the V attribute is SET and the constant RC_ FMT1 is used
to indicate that the F attribute is SET and that the return code is variable based on handle, session, and
parameter modifiers.

Table 15 — Definition of (UINT32) TPM_RC Constants (Actions) <OUT>
Name

Value

Description

TPM_RC_SUCCESS

0x000

TPM_RC_BAD_TAG

0x01E

defined for compatibility with TPM 1.2

RC_VER1

0x100

set for all format 0 response codes

TPM_RC_INITIALIZE

RC_VER1 + 0x000

TPM not initialized
commands not being accepted because of a TPM
failure

TPM_RC_FAILURE

RC_VER1 + 0x001

NOTE

TPM_RC_SEQUENCE

RC_VER1 + 0x003

improper use of a sequence handle

TPM_RC_PRIVATE

RC_VER1 + 0x00B

TPM_RC_HMAC

RC_VER1 + 0x019

TPM_RC_DISABLED

RC_VER1 + 0x020

TPM_RC_EXCLUSIVE

RC_VER1 + 0x021

command failed because audit sequence required
exclusivity

TPM_RC_AUTH_TYPE

RC_VER1 + 0x024

authorization handle is not correct for command

TPM_RC_AUTH_MISSING

RC_VER1 + 0x025

command requires an authorization session for
handle and it is not present.

TPM_RC_POLICY

RC_VER1 + 0x026

policy Failure In Math Operation or an invalid
authPolicy value

TPM_RC_PCR

RC_VER1 + 0x027

PCR check fail

TPM_RC_PCR_CHANGED

RC_VER1 + 0x028

PCR have changed since checked.

TPM_RC_UPGRADE

RC_VER1 + 0x02D

for
all
commands
other
than
TPM2_FieldUpgradeData(), this code indicates
that the TPM is in field upgrade mode; for
TPM2_FieldUpgradeData(), this code indicates
that the TPM is not in field upgrade mode

TPM_RC_TOO_MANY_CONTEXTS

RC_VER1 + 0x02E

context ID counter is at maximum.

TPM_RC_AUTH_UNAVAILABLE

RC_VER1 + 0x02F

authValue or authPolicy is not available for
selected entity.

TPM_RC_REBOOT

RC_VER1 + 0x030

a _TPM_Init and Startup(CLEAR) is required
before the TPM can resume operation.

RC_VER1 + 0x031

the protection algorithms (hash and symmetric) are
not reasonably balanced. The digest size of the
hash must be larger than the key size of the
symmetric algorithm.

TPM_RC_UNBALANCED

Page 32
October 31, 2013

This
may
be
returned
by
TPM2_GetTestResult() as the testResult
parameter.

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library
Name

Part 2: Structures
Value

Description

TPM_RC_COMMAND_SIZE

RC_VER1 + 0x042

command commandSize value is inconsistent with
contents of the command buffer; either the size is
not the same as the octets loaded by the hardware
interface layer or the value is not large enough to
hold a command header

TPM_RC_COMMAND_CODE

RC_VER1 + 0x043

command code not supported

TPM_RC_AUTHSIZE

RC_VER1 + 0x044

the value of authorizationSize is out of range or the
number of octets in the Authorization Area is
greater than required

TPM_RC_AUTH_CONTEXT

RC_VER1 + 0x045

use of an authorization session with a context
command

TPM_RC_NV_RANGE

RC_VER1 + 0x046

NV offset+size is out of range.

TPM_RC_NV_SIZE

RC_VER1 + 0x047

Requested allocation size is larger than allowed.

TPM_RC_NV_LOCKED

RC_VER1 + 0x048

NV access locked.

TPM_RC_NV_AUTHORIZATION

RC_VER1 + 0x049

NV access authorization fails in command actions
(this failure does not affect lockout.action)

TPM_RC_NV_UNINITIALIZED

RC_VER1 + 0x04A

an NV Index is used before being initialized or the
state saved by TPM2_Shutdown(STATE) could not
be restored

TPM_RC_NV_SPACE

RC_VER1 + 0x04B

insufficient space for NV allocation

TPM_RC_NV_DEFINED

RC_VER1 + 0x04C

NV Index or persistend object already defined

TPM_RC_BAD_CONTEXT

RC_VER1 + 0x050

context in TPM2_ContextLoad() is not valid

TPM_RC_CPHASH

RC_VER1 + 0x051

cpHash value already set or not correct for use

TPM_RC_PARENT

RC_VER1 + 0x052

handle for parent is not a valid parent

TPM_RC_NEEDS_TEST

RC_VER1 + 0x053

some function needs testing.

RC_VER1 + 0x054

returned when an internal function cannot process
a request due to an unspecified problem. This
code is usually related to invalid parameters that
are not properly filtered by the input unmarshaling
code.

TPM_RC_SENSITIVE

RC_VER1 + 0x055

the sensitive area did not unmarshal correctly after
decryption – this code is used in lieu of the other
unmarshaling errors so that an attacker cannot
determine where the unmarshaling error occurred

RC_MAX_FM0

RC_VER1 + 0x07F

largest version 1 code that is not a warning

TPM_RC_NO_RESULT

New Subsection

RC_FMT1

0x080

This bit is SET in all format 1 response codes
The codes in this group may have a value added to
them to indicate the handle, session, or parameter
to which they apply.

TPM_RC_ASYMMETRIC

RC_FMT1 + 0x001

asymmetric algorithm not supported or not correct

TPM_RC_ATTRIBUTES

RC_FMT1 + 0x002

inconsistent attributes

TPM_RC_HASH

RC_FMT1 + 0x003

hash algrithm not supported or not appropriate

TPM_RC_VALUE

RC_FMT1 + 0x004

value is out of range or is not correct for the
context

TPM_RC_HIERARCHY

RC_FMT1 + 0x005

hierarchy is not enabled or is not correct for the
use

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 33
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

Name

Value

Description

TPM_RC_KEY_SIZE

RC_FMT1 + 0x007

key size is not supported

TPM_RC_MGF

RC_FMT1 + 0x008

mask generation function not supported

TPM_RC_MODE

RC_FMT1 + 0x009

mode of operation not supported

TPM_RC_TYPE

RC_FMT1 + 0x00A

the type of the value is not appropriate for the use

TPM_RC_HANDLE

RC_FMT1 + 0x00B

the handle is not correct for the use

TPM_RC_KDF

RC_FMT1 + 0x00C

unsupported key derivation function or function not
appropriate for use

TPM_RC_RANGE

RC_FMT1 + 0x00D

value was out of allowed range.

TPM_RC_AUTH_FAIL

RC_FMT1 + 0x00E

the authorization HMAC check failed and DA
counter incremented

TPM_RC_NONCE

RC_FMT1 + 0x00F

invalid nonce size

TPM_RC_PP

RC_FMT1 + 0x010

authorization requires assertion of PP

TPM_RC_SCHEME

RC_FMT1 + 0x012

unsupported or incompatible scheme

TPM_RC_SIZE

RC_FMT1 + 0x015

structure is the wrong size

TPM_RC_SYMMETRIC

RC_FMT1 + 0x016

unsupported symmetric algorithm or key size, or
not appropriate for instance

TPM_RC_TAG

RC_FMT1 + 0x017

incorrect structure tag

TPM_RC_SELECTOR

RC_FMT1 + 0x018

union selector is incorrect

TPM_RC_INSUFFICIENT

RC_FMT1 + 0x01A

the TPM was unable to unmarshal a value
because there were not enough octets in the input
buffer

TPM_RC_SIGNATURE

RC_FMT1 + 0x01B

the signature is not valid

TPM_RC_KEY

RC_FMT1 + 0x01C

key fields are not compatible with the selected use

TPM_RC_POLICY_FAIL

RC_FMT1 + 0x01D

a policy check failed

TPM_RC_INTEGRITY

RC_FMT1 + 0x01F

integrity check failed

TPM_RC_TICKET

RC_FMT1 + 0x020

invalid ticket

TPM_RC_RESERVED_BITS

RC_FMT1 + 0x021

reserved bits not set to zero as required

TPM_RC_BAD_AUTH

RC_FMT1 + 0x022

authroization failure without DA implications

TPM_RC_EXPIRED

RC_FMT1 + 0x023

the policy has expired

TPM_RC_POLICY_CC

RC_FMT1 + 0x024

the commandCode in the policy is not the
commandCode of the command or the command
code in a policy command references a command
that is not implemented

TPM_RC_BINDING

RC_FMT1 + 0x025

public and sensitive portions of an object are not
cryptographically bound

TPM_RC_CURVE

RC_FMT1 + 0x026

curve not supported

TPM_RC_ECC_POINT

RC_FMT1 + 0x027

point is not on the required curve.

New Subsection
RC_WARN

0x900

set for warning response codes

TPM_RC_CONTEXT_GAP

RC_WARN + 0x001

gap for context ID is too large

TPM_RC_OBJECT_MEMORY

RC_WARN + 0x002

out of memory for object contexts

Page 34
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

Name

Value

Description

TPM_RC_SESSION_MEMORY

RC_WARN + 0x003

out of memory for session contexts

TPM_RC_MEMORY

RC_WARN + 0x004

out of shared object/session memory or need
space for internal operations

TPM_RC_SESSION_HANDLES

RC_WARN + 0x005

out of session handles – a session must be flushed
before a new session may be created
out of object handles – the handle space for
objects is depleted and a reboot is required
NOTE

TPM_RC_LOCALITY

TPM_RC_YIELDED

This cannot occur
implementation.

NOTE

TPM_RC_OBJECT_HANDLES

There is no reason why an implementation
would implement a design that would deplete
handle space. Platform specifications are
encouraged to forbid it.

RC_WARN + 0x006

RC_WARN + 0x007

RC_WARN + 0x008

on

the

reference

bad locality
the TPM has suspended operation on the
command; forward progress was made and the
command may be retried.
See Part 1, “Multi-tasking.”
NOTE

This cannot occur
implementation.

on

the

reference

TPM_RC_CANCELED

RC_WARN + 0x009

the command was canceled

TPM_RC_TESTING

RC_WARN + 0x00A

TPM is performing self-tests

TPM_RC_REFERENCE_H0

RC_WARN + 0x010

the 1 handle in the handle area references a
transient object or session that is not loaded

TPM_RC_REFERENCE_H1

RC_WARN + 0x011

the 2 handle in the handle area references a
transient object or session that is not loaded

TPM_RC_REFERENCE_H2

RC_WARN + 0x012

the 3 handle in the handle area references a
transient object or session that is not loaded

TPM_RC_REFERENCE_H3

RC_WARN + 0x013

the 4 handle in the handle area references a
transient object or session that is not loaded

TPM_RC_REFERENCE_H4

RC_WARN + 0x014

the 5 handle in the handle area references a
transient object or session that is not loaded

TPM_RC_REFERENCE_H5

RC_WARN + 0x015

the 6 handle in the handle area references a
transient object or session that is not loaded

TPM_RC_REFERENCE_H6

RC_WARN + 0x016

the 7 handle in the handle area references a
transient object or session that is not loaded

TPM_RC_REFERENCE_S0

RC_WARN + 0x018

the 1 authorization session handle references a
session that is not loaded

TPM_RC_REFERENCE_S1

RC_WARN + 0x019

the 2 authorization session handle references a
session that is not loaded

TPM_RC_REFERENCE_S2

RC_WARN + 0x01A

the 3 authorization session handle references a
session that is not loaded

TPM_RC_REFERENCE_S3

RC_WARN + 0x01B

the 4th authorization session handle references a
session that is not loaded

TPM_RC_REFERENCE_S4

RC_WARN + 0x01C

the 5 session handle references a session that is
not loaded

TPM_RC_REFERENCE_S5

RC_WARN + 0x01D

the 6 session handle references a session that is
not loaded

st

nd

rd

th

th

th

th

st

nd

rd

th

th

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 35
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

Name

Value

Description

TPM_RC_REFERENCE_S6

RC_WARN + 0x01E

the 7 authorization session handle references a
session that is not loaded

TPM_RC_NV_RATE

RC_WARN + 0x020

the TPM is rate-limiting accesses to prevent
wearout of NV

TPM_RC_LOCKOUT

RC_WARN + 0x021

authorizations for objects subject to DA protection
are not allowed at this time because the TPM is in
DA lockout mode

TPM_RC_RETRY

RC_WARN + 0x022

the TPM was not able to start the command

TPM_RC_NV_UNAVAILABLE

RC_WARN + 0x023

the command may require writing of NV and NV is
not current accessible

TPM_RC_NOT_USED

RC_WARN + 0x7F

this value is reserved and shall not be returned by
the TPM

th

Additional Defines
TPM_RC_H

0x000

add to a handle-related error

TPM_RC_P

0x040

add to a parameter-related error

TPM_RC_S

0x800

add to a session-related error

TPM_RC_1

0x100

add to a parameter-, handle-, or session-related
error

TPM_RC_2

0x200

add to a parameter-, handle-, or session-related
error

TPM_RC_3

0x300

add to a parameter-, handle-, or session-related
error

TPM_RC_4

0x400

add to a parameter-, handle-, or session-related
error

TPM_RC_5

0x500

add to a parameter-, handle-, or session-related
error

TPM_RC_6

0x600

add to a parameter-, handle-, or session-related
error

TPM_RC_7

0x700

add to a parameter-, handle-, or session-related
error

TPM_RC_8

0x800

add to a parameter-related error

TPM_RC_9

0x900

add to a parameter-related error

TPM_RC_A

0xA00

add to a parameter-related error

TPM_RC_B

0xB00

add to a parameter-related error

TPM_RC_C

0xC00

add to a parameter-related error

TPM_RC_D

0xD00

add to a parameter-related error

TPM_RC_E

0xE00

add to a parameter-related error

TPM_RC_F

0xF00

add to a parameter-related error

TPM_RC_N_MASK

0xF00

number mask

Page 36
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library
6.7

Part 2: Structures

TPM_CLOCK_ADJUST

A TPM_CLOCK_ADJUST value is used to change the rate at which the TPM internal oscillator is divided.
A change to the divider will change the rate at which Clock and Time change.
NOTE

The recommended adjustments are approximately 1% for a course adjustment, 0.1% for a medium
adjustment, and the minimum possible on the implementation for the fine adjustment (e.g., one count of
the pre-scalar if possible).

Table 16 — Definition of (INT8) TPM_CLOCK_ADJUST Constants <IN>
Name

Value

Comments

TPM_CLOCK_COARSE_SLOWER

-3

Slow the Clock update rate by one coarse adjustment step.

TPM_CLOCK_MEDIUM_SLOWER

-2

Slow the Clock update rate by one medium adjustment step.

TPM_CLOCK_FINE_SLOWER

-1

Slow the Clock update rate by one fine adjustment step.

TPM_CLOCK_NO_CHANGE

0

No change to the Clock update rate.

TPM_CLOCK_FINE_FASTER

1

Speed the Clock update rate by one fine adjustment step.

TPM_CLOCK_MEDIUM_FASTER

2

Speed the Clock update rate by one medium adjustment step.

TPM_CLOCK_COARSE_FASTER

3

Speed the Clock update rate by one coarse adjustment step.

#TPM_RC_VALUE

6.8

TPM_EO (EA Arithmetic Operands)
Table 17 — Definition of (UINT16) TPM_EO Constants <IN/OUT>

Operation Name

Value

Comments

TPM_EO_EQ

0x0000

A=B

TPM_EO_NEQ

0x0001

A≠B

TPM_EO_SIGNED_GT

0x0002

A > B signed

TPM_EO_UNSIGNED_GT

0x0003

A > B unsigned

TPM_EO_SIGNED_LT

0x0004

A < B signed

TPM_EO_UNSIGNED_LT

0x0005

A < B unsigned

TPM_EO_SIGNED_GE

0x0006

A ≥ B signed

TPM_EO_UNSIGNED_GE

0x0007

A ≥ B unsigned

TPM_EO_SIGNED_LE

0x0008

A ≤ B signed

TPM_EO_UNSIGNED_LE

0x0009

A ≤ B unsigned

TPM_EO_BITSET

0x000A

All bits SET in B are SET in A. ((A&B)=B)

TPM_EO_BITCLEAR

0x000B

All bits SET in B are CLEAR in A. ((A&B)=0)

#TPM_RC_VALUE

Family “2.0”
Level 00 Revision 00.99

Response code returned when unmarshaling of this type fails

Published
Copyright © TCG 2006-2013

Page 37
October 31, 2013

Part 2: Structures

6.9

Trusted Platform Module Library

TPM_ST (Structure Tags)

Structure tags are used to disambiguate structures. They are 16-bit values with the most significant bit
SET so that they do not overlap TPM_ALG_ID values. A single exception is made for the value
associated with TPM_ST_RSP_COMMAND (0x00C4), which has the same value as the
TPM_TAG_RSP_COMMAND tag from earlier versions of this specification. This value is used when the
TPM is compatible with a previous TPM specification and the TPM cannot determine which family of
response code to return because the command tag is not valid.
Many of the structures defined in this document have parameters that are unions of other structures. That
is, a parameter may be one of several structures. The parameter will have a selector value that indicates
which of the options is actually present.
In order to allow the marshaling and unmarshaling code to determine which of the possible structures is
allowed, each selector will have a unique interface type and will constrain the number of possible tag
values.
Table 18 defines the structure tags values. The definition of many structures is context-sensitive using an
algorithm ID. In cases where an algorithm ID is not a meaningful way to designate the structure, the
values in this table are used.
Table 18 — Definition of (UINT16) TPM_ST Constants <IN/OUT, S>
Name
TPM_ST_RSP_COMMAND

Value

Comments

0x00C4

tag value for a response; used when there is an error
in the tag. This is also the value returned from a TPM
1.2 when an error occurs. This value is used in this
specification because an error in the command tag
may prevent determination of the family. When this tag
is used in the response, the response code will be
TPM_RC_BAD_TAG (0 1E16), which has the same
numeric value as the TPM 1.2 response code for
TPM_BADTAG.
NOTE

In a previously published version of this
specification,
TPM_RC_BAD_TAG
was
incorrectly assigned a value of 0x030 instead of
30 (0x01e). Some implementations my return the
old value instead of the new value.

TPM_ST_NULL

0X8000

no structure type specified

TPM_ST_NO_SESSIONS

0x8001

tag value for a command/response for a command
defined in this specification; indicating that the
command/response has no attached sessions and no
authorizationSize/parameterSize value is present
If the responseCode from the TPM is not
TPM_RC_SUCCESS, then the response tag shall
have this value.

TPM_ST_SESSIONS

0x8002

tag value for a command/response for a command
defined in this specification; indicating that the
command/response has one or more attached
sessions and the authorizationSize/parameterSize
field is present

Page 38
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library
Name
reserved

Part 2: Structures
Value

Comments

0x8003

When used between application software and the TPM
resource manager, this tag indicates that the
command has no sessions and the handles are using
the Name format rather than the 32-bit handle format.
NOTE 1

The response to application software will have a
tag of TPM_ST_NO_SESSIONS.

Between the TRM and TPM, this tag would occur in a
response from a TPM that overlaps the tag parameter
of a request with the tag parameter of a response,
when the response has no associated sessions.
NOTE 2

reserved

0x8004

This tag is not used by all TPM or TRM
implementations.

When used between application software and the TPM
resource manager, this tag indicates that the
command has sessions and the handles are using the
Name format rather than the 32-bit handle format.
NOTE 1

If the command completes successfully, the
response to application software will have a tag
of TPM_ST_SESSIONS.

Between the TRM and TPM, would occur in a
response from a TPM that overlaps the tag parameter
of a request with the tag parameter of a response,
when the response has authorization sessions.
NOTE 2

This tag is not used by all TPM or TRM
implementations.

TPM_ST_ATTEST_NV

0x8014

tag for an attestation structure

TPM_ST_ATTEST_COMMAND_AUDIT

0x8015

tag for an attestation structure

TPM_ST_ATTEST_SESSION_AUDIT

0x8016

tag for an attestation structure

TPM_ST_ATTEST_CERTIFY

0x8017

tag for an attestation structure

TPM_ST_ATTEST_QUOTE

0x8018

tag for an attestation structure

TPM_ST_ATTEST_TIME

0x8019

tag for an attestation structure

TPM_ST_ATTEST_CREATION

0x801A

tag for an attestation structure

reserved

0x801B

do not use
NOTE

This
was
previously
assigned
to
TPM_ST_ATTEST_NV. The tag is changed
because the structure has changed

TPM_ST_CREATION

0x8021

tag for a ticket type

TPM_ST_VERIFIED

0x8022

tag for a ticket type

TPM_ST_AUTH_SECRET

0x8023

tag for a ticket type

TPM_ST_HASHCHECK

0x8024

tag for a ticket type

TPM_ST_AUTH_SIGNED

0x8025

tag for a ticket type

TPM_ST_FU_MANIFEST

0x8029

tag for a structure describing a Field Upgrade Policy

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 39
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

6.10 TPM_SU (Startup Type)
These values are used in TPM2_Startup() to indicate the shutdown and startup mode. The defined
startup sequences are:
a) TPM Reset – Two cases:
1) Shutdown(CLEAR) followed by Startup(CLEAR)
2) Startup(CLEAR) with no Shutdown()
b) TPM Restart – Shutdown(STATE) followed by Startup(CLEAR)
c) TPM Resume – Shutdown(STATE) followed by Startup(STATE)
TPM_SU values of 80 0016 and above are reserved for internal use of the TPM and may not be assigned
values.
NOTE

In the reference code, a value of FF FF 16 indicates that the startup state has not been set. If this was
defined in this table to be, say, TPM_SU_NONE, then TPM_SU_NONE would be a valid input value but
the caller is not allowed to indicate the that the startup type is TPM_SU_NONE so the reserved value is
defined in the implementation as required for internal TPM uses.

Table 19 — Definition of (UINT16) TPM_SU Constants <IN>
Name

Value

Description

TPM_SU_CLEAR

0x0000

on TPM2_Shutdown(), indicates that the TPM should prepare
for loss of power and save state required for an orderly startup
(TPM Reset).
on TPM2_Startup(), indicates that the TPM should start from
perform TPM Reset or TPM Restart

TPM_SU_STATE

0x0001

on TPM2_Shutdown(), indicates that the TPM should prepare
for loss of power and save state required for an orderly startup
(TPM Restart or TPM Resume)
on TPM2_Startup(), indicates that the TPM should restore the
state saved by TPM2_Shutdown(TPM_SU_STATE)

#TPM_RC_VALUE

response code when incorrect value is used

6.11 TPM_SE (Session Type)
This type is used in TPM2_StartAuthSession() to indicate the type of the session to be created.
Table 20 — Definition of (UINT8) TPM_SE Constants <IN>
Name

Value

TPM_SE_HMAC

0x00

TPM_SE_POLICY

0x01

TPM_SE_TRIAL

0x03

#TPM_RC_VALUE

Page 40
October 31, 2013

Description

The policy session is being used to compute the policyHash and
not for command authorization.
This setting modifies some policy commands and prevents
session from being used to authorize a command.
response code when incorrect value is used

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

6.12 TPM_CAP (Capabilities)
The TPM_CAP values are used in TPM2_GetCapability() to select the type of the value to be returned.
The format of the response varies according to the type of the value.
Table 21 — Definition of (UINT32) TPM_CAP Constants
Capability Name

Value

Property Type

Return Type

TPM_CAP_FIRST

0x00000000

TPM_CAP_ALGS

0x00000000 TPM_ALG_ID

TPM_CAP_HANDLES

0x00000001 TPM_HANDLE

TPML_HANDLE

TPM_CAP_COMMANDS

0x00000002 TPM_CC

TPML_CCA

TPM_CAP_PP_COMMANDS

0x00000003 TPM_CC

TPML_CC

TPM_CAP_AUDIT_COMMANDS

0x00000004 TPM_CC

TPML_CC

TPM_CAP_PCRS

0x00000005 reserved

TPML_PCR_SELECTION

TPM_CAP_TPM_PROPERTIES

0x00000006 TPM_PT

TPML_TAGGED_TPM_PROPERTY

TPM_CAP_PCR_PROPERTIES

0x00000007 TPM_PT_PCR

(1)

TPM_CAP_ECC_CURVES

0x00000008 TPM_ECC_CURVE

TPM_CAP_LAST

TPML_ALG_PROPERTY

TPML_TAGGED_PCR_PROPERTY
(1)

0x00000008

TPM_CAP_VENDOR_PROPERTY 0x00000100 manufacturer specific

TPML_ECC_CURVE

manufacturer-specific values

#TPM_RC_VALUE
NOTES:
(1) The TPM_ALG_ID or TPM_ECC_CURVE is cast to a UINT32

6.13 TPM_PT (Property Tag)
The TPM_PT constants are used in TPM2_GetCapability(capability = TPM_CAP_TPM_PROPERTIES) to
indicate the property being selected or returned.
The values in the fixed group (PT_FIXED) are not changeable through programmatic means other than a
firmware update. The values in the variable group (PT_VAR) may be changed with TPM commands but
should be persistent over power cycles and only changed when indicated by the detailed actions code.
Table 22 — Definition of (UINT32) TPM_PT Constants <IN/OUT, S>
Capability Name

Value

Comments

TPM_PT_NONE

0x00000000

indicates no property type

PT_GROUP

0x00000100

The number of properties in each group.
NOTE The first group with any properties is group 1
(PT_GROUP * 1). Group 0 is reserved.

PT_FIXED

PT_GROUP * 1 the
group
of
fixed
properties
returned
as
TPMS_TAGGED_PROPERTY
The values in this group are only changed due to a
firmware change in the TPM.

TPM_PT_FAMILY_INDICATOR

PT_FIXED + 0 a 4-octet character string containing the TPM Family value
(TPM_SPEC_FAMILY)

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 41
October 31, 2013

Part 2: Structures

Capability Name
TPM_PT_LEVEL

Trusted Platform Module Library

Value

Comments

PT_FIXED + 1 the level of the specification
NOTE 1

TPM_PT_REVISION

For this specification, the level is zero.

NOTE 2

The level is on the title page of the specification.

PT_FIXED + 2 the specification Revision times 100
EXAMPLE Revision 01.01 would have a value of 101.
NOTE

TPM_PT_DAY_OF_YEAR

The Revision value is on the title page of the
specification.

PT_FIXED + 3 the specification day of year using TCG calendar
EXAMPLE November 15, 2010, has a day of year value of 319
(00 00 01 3F16).
NOTE

TPM_PT_YEAR

The specification date is on the title page of the
specification.

PT_FIXED + 4 the specification year using the CE
EXAMPLE The year 2010 has a value of 00 00 07 DA16.
NOTE

The specification date is on the title page of the
specification.

TPM_PT_MANUFACTURER

PT_FIXED + 5 the vendor ID unique to each TPM manufacturer

TPM_PT_VENDOR_STRING_1

PT_FIXED + 6 the first four characters of the vendor ID string
NOTE

When the vendor string is fewer than 16 octets, the
additional property values do not have to be present.
A vendor string of 4 octets can be represented in one
32-bit value and no null terminating character is
required.

TPM_PT_VENDOR_STRING_2

PT_FIXED + 7 the second four characters of the vendor ID string

TPM_PT_VENDOR_STRING_3

PT_FIXED + 8 the third four characters of the vendor ID string

TPM_PT_VENDOR_STRING_4

PT_FIXED + 9 the fourth four characters of the vendor ID sting

TPM_PT_VENDOR_TPM_TYPE

PT_FIXED + 10 vendor-defined value indicating the TPM model

TPM_PT_FIRMWARE_VERSION_1

PT_FIXED + 11 the most-significant 32 bits of a vendor-specific value
indicating the version of the firmware

TPM_PT_FIRMWARE_VERSION_2

PT_FIXED + 12 the least-significant 32 bits of a vendor-specific value
indicating the version of the firmware

TPM_PT_INPUT_BUFFER

PT_FIXED + 13 the maximum size of
TPM2B_MAX_BUFFER)

TPM_PT_HR_TRANSIENT_MIN

PT_FIXED + 14 the minimum number of transient objects that can be held
in TPM RAM
NOTE

TPM_PT_HR_PERSISTENT_MIN

parameter

(typically,

a

This minimum shall be no less than the minimum
value required by the platform-specific specification
to which the TPM is built.

PT_FIXED + 15 the minimum number of persistent objects that can be
held in TPM NV memory
NOTE

TPM_PT_HR_LOADED_MIN

a

This minimum shall be no less than the minimum
value required by the platform-specific specification
to which the TPM is built.

PT_FIXED + 16 the minimum number of authorization sessions that can
be held in TPM RAM
NOTE

Page 42
October 31, 2013

This minimum shall be no less than the minimum
value required by the platform-specific specification
to which the TPM is built.

Published

Family “2.0”

Copyright © TCG 2006-2013

Level 00 Revision 00.99

Trusted Platform Module Library
Capability Name
TPM_PT_ACTIVE_SESSIONS_MAX

Part 2: Structures
Value

Comments

PT_FIXED + 17 the number of authorization sessions that may be active at
a time
A session is active when it has a context associated with
its handle. The context may either be in TPM RAM or be
context saved.
NOTE

This value shall be no less than the minimum value
required by the platform-specific specification to
which the TPM is built.

TPM_PT_PCR_COUNT

PT_FIXED + 18 the number of PCR implemented
NOTE This number is determined by the defined
attributes, not the number of PCR that are populated.

TPM_PT_PCR_SELECT_MIN

PT_FIXED + 19 the
minimum
number
of
TPMS_PCR_SELECT.sizeOfSelect
NOTE

TPM_PT_CONTEXT_GAP_MAX

octets

in

a

This value is not determined by the number of PCR
implemented but by the number of PCR required by
the platform-specific specification with which the TPM
is compliant.

PT_FIXED + 20 the maximum allowed difference (unsigned) between the
contextID values of two saved session contexts
16

This value shall be at least 2 -1 (65535).
PT_FIXED + 21 skipped
TPM_PT_NV_COUNTERS_MAX

PT_FIXED + 22 the maximum number of NV Indexes that are allowed to
have the TPMA_NV_COUNTER attribute SET
NOTE

It is allowed for this value to be larger than the
number of NV Indexes that can be defined. This
would be indicative of a TPM implementation that did
not use different implementation technology for
different NV Index types.

TPM_PT_NV_INDEX_MAX

PT_FIXED + 23 the maximum size of an NV Index data area

TPM_PT_MEMORY

PT_FIXED + 24 a TPMA_MEMORY indicating the memory management
method for the TPM

TPM_PT_CLOCK_UPDATE

PT_FIXED + 25 interval, in milliseconds, between updates to the copy of
TPMS_CLOCK_INFO.clock in NV

TPM_PT_CONTEXT_HASH

PT_FIXED + 26 the algorithm used for the integrity HMAC on saved
contexts
and
for
hashing
the
fuData
of
TPM2_FirmwareRead()

TPM_PT_CONTEXT_SYM

PT_FIXED + 27 the algorithm used for encryption of saved contexts

TPM_PT_CONTEXT_SYM_SIZE

PT_FIXED + 28 the size of the key used for encryption of saved contexts

TPM_PT_ORDERLY_COUNT

PT_FIXED + 29 the modulus - 1 of the count for NV update of an orderly
counter
The returned value is MAX_ORDERLY_COUNT.
N
This will have a value of 2 – 1 where 1 ≤ N ≤ 32
NOTE

An “orderly counter” is an NV Index with
TPMA_NV_COUNTER and TPMA_NV_ORDERLY
both SET.

TPM_PT_MAX_COMMAND_SIZE

PT_FIXED + 30 the maximum value for commandSize in a command

TPM_PT_MAX_RESPONSE_SIZE

PT_FIXED + 31 the maximum value for responseSize in a response

TPM_PT_MAX_DIGEST

PT_FIXED + 32 the maximum size of a digest that can be produced by the
TPM

TPM_PT_MAX_OBJECT_CONTEXT

PT_FIXED + 33 the maximum size of an object context that will be
returned by TPM2_ContextSave

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 43
October 31, 2013

Part 2: Structures

Capability Name

Trusted Platform Module Library

Value

Comments

TPM_PT_MAX_SESSION_CONTEXT PT_FIXED + 34 the maximum size of a session context that will be
returned by TPM2_ContextSave
TPM_PT_PS_FAMILY_INDICATOR

PT_FIXED + 35 platform-specific family (a TPM_PS value)(see Table 24)
NOTE

The platform-specific values for the TPM_PT_PS
parameters are in the relevant platform-specific
specification. In the reference implementation, all of
these values are 0.

TPM_PT_PS_LEVEL

PT_FIXED + 36 the level of the platform-specific specification

TPM_PT_PS_REVISION

PT_FIXED + 37 the specification Revision times 100 for the platformspecific specification

TPM_PT_PS_DAY_OF_YEAR

PT_FIXED + 38 the platform-specific specification day of year using TCG
calendar

TPM_PT_PS_YEAR

PT_FIXED + 39 the platform-specific specification year using the CE

TPM_PT_SPLIT_MAX

PT_FIXED + 40 the number of split signing operations supported by the
TPM

TPM_PT_TOTAL_COMMANDS

PT_FIXED + 41 total number of commands implemented in the TPM

TPM_PT_LIBRARY_COMMANDS

PT_FIXED + 42 number of commands from the TPM library that are
implemented

TPM_PT_VENDOR_COMMANDS

PT_FIXED + 43 number of vendor commands that are implemented

TPM_PT_NV_BUFFER_MAX

PT_FIXED + 44 the maximum data size in one NV write command

PT_VAR

PT_GROUP * 2 the group of variable properties returned as
TPMS_TAGGED_PROPERTY
The properties in this group change because of a
Protected Capability other than a firmware update. The
values are not necessarily persistent across all power
transitions.

TPM_PT_PERMANENT

PT_VAR + 0

TPMA_PERMANENT

TPM_PT_STARTUP_CLEAR

PT_VAR + 1

TPMA_STARTUP_CLEAR

TPM_PT_HR_NV_INDEX

PT_VAR + 2

the number of NV Indexes currently defined

TPM_PT_HR_LOADED

PT_VAR + 3

the number of authorization sessions currently loaded into
TPM RAM

TPM_PT_HR_LOADED_AVAIL

PT_VAR + 4

the number of additional authorization sessions, of any
type, that could be loaded into TPM RAM
This value is an estimate. If this value is at least 1, then at
least one authorization session of any type may be
loaded. Any command that changes the RAM memory
allocation can make this estimate invalid.
NOTE

TPM_PT_HR_ACTIVE

Page 44
October 31, 2013

PT_VAR + 5

A valid implementation may return 1 even if more
than one authorization session would fit into RAM.

the number of active authorization sessions currently
being tracked by the TPM
This is the sum of the loaded and saved sessions.

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library
Capability Name
TPM_PT_HR_ACTIVE_AVAIL

Part 2: Structures
Value

Comments

PT_VAR + 6

the number of additional authorization sessions, of any
type, that could be created
This value is an estimate. If this value is at least 1, then at
least one authorization session of any type may be
created. Any command that changes the RAM memory
allocation can make this estimate invalid.
NOTE

TPM_PT_HR_TRANSIENT_AVAIL

PT_VAR + 7

A valid implementation may return 1 even if more
than one authorization session could be created.

estimate of the number of additional transient objects that
could be loaded into TPM RAM
This value is an estimate. If this value is at least 1, then at
least one object of any type may be loaded. Any
command that changes the memory allocation can make
this estimate invalid.
NOTE

A valid implementation may return 1 even if more
than one transient object would fit into RAM.

TPM_PT_HR_PERSISTENT

PT_VAR + 8

the number of persistent objects currently loaded into
TPM NV memory

TPM_PT_HR_PERSISTENT_AVAIL

PT_VAR + 9

the number of additional persistent objects that could be
loaded into NV memory
This value is an estimate. If this value is at least 1, then at
least one object of any type may be made persistent. Any
command that changes the NV memory allocation can
make this estimate invalid.
NOTE

A valid implementation may return 1 even if more
than one persistent object would fit into NV memory.

TPM_PT_NV_COUNTERS

PT_VAR + 10

the number of defined NV Indexes that have NV
TPMA_NV_COUNTER attribute SET

TPM_PT_NV_COUNTERS_AVAIL

PT_VAR + 11

the number of additional NV Indexes that can be defined
with
their
TPMA_NV_COUNTER
and
TPMA_NV_ORDERLY attribute SET
This value is an estimate. If this value is at least 1, then at
least one NV Index may be created with the
TPMA_NV_COUNTER
and
TPMA_NV_ORDERLY
attributes SET. Any command that changes the NV
memory allocation can make this estimate invalid.
NOTE A valid implementation may return 1 even if more
than one NV counter could be defined.

TPM_PT_ALGORITHM_SET

PT_VAR + 12

code that limits the algorithms that may be used with the
TPM

TPM_PT_LOADED_CURVES

PT_VAR + 13

the number of loaded ECC curves

TPM_PT_LOCKOUT_COUNTER

PT_VAR + 14

the current value of the lockout counter (failedTries)

TPM_PT_MAX_AUTH_FAIL

PT_VAR + 15

the number of authorization failures before DA lockout is
invoked

TPM_PT_LOCKOUT_INTERVAL

PT_VAR + 16

the number of seconds before the value reported by
TPM_PT_LOCKOUT_COUNTER is decremented

TPM_PT_LOCKOUT_RECOVERY

PT_VAR + 17

the number of seconds after a lockoutAuth failure before
use of lockoutAuth may be attempted again

TPM_PT_NV_WRITE_RECOVERY

PT_VAR + 18

number of milliseconds before the TPM will accept
another command that will modify NV
This value is an approximation and may go up or down
over time.

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 45
October 31, 2013

Part 2: Structures

Capability Name

Trusted Platform Module Library

Value

Comments

TPM_PT_AUDIT_COUNTER_0

PT_VAR + 19

the high-order 32 bits of the command audit counter

TPM_PT_AUDIT_COUNTER_1

PT_VAR + 20

the low-order 32 bits of the command audit counter

Page 46
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

6.14 TPM_PT_PCR (PCR Property Tag)
The TPM_PT_PCR constants are used in TPM2_GetCapability() to indicate the property being selected
or returned. The PCR properties can be read when capability == TPM_CAP_PCR_PROPERTIES.
Table 23 — Definition of (UINT32) TPM_PT_PCR Constants <IN/OUT, S>
Capability Name

Value

Comments

TPM_PT_PCR_FIRST

0x00000000

bottom of the range of TPM_PT_PCR properties

TPM_PT_PCR_SAVE

0x00000000

a SET bit in the TPMS_PCR_SELECT indicates that the PCR is
saved and restored by TPM_SU_STATE

TPM_PT_PCR_EXTEND_L0

0x00000001

a SET bit in the TPMS_PCR_SELECT indicates that the PCR
may be extended from locality 0
This property is only present if a locality other than 0 is
implemented.

TPM_PT_PCR_RESET_L0

0x00000002

a SET bit in the TPMS_PCR_SELECT indicates that the PCR
may be reset by TPM2_PCR_Reset() from locality 0

TPM_PT_PCR_EXTEND_L1

0x00000003

a SET bit in the TPMS_PCR_SELECT indicates that the PCR
may be extended from locality 1
This property is only present if locality 1 is implemented.

TPM_PT_PCR_RESET_L1

0x00000004

a SET bit in the TPMS_PCR_SELECT indicates that the PCR
may be reset by TPM2_PCR_Reset() from locality 1
This property is only present if locality 1 is implemented.

TPM_PT_PCR_EXTEND_L2

0x00000005

a SET bit in the TPMS_PCR_SELECT indicates that the PCR
may be extended from locality 2
This property is only present if localities 1 and 2 are
implemented.

TPM_PT_PCR_RESET_L2

0x00000006

a SET bit in the TPMS_PCR_SELECT indicates that the PCR
may be reset by TPM2_PCR_Reset() from locality 2
This property is only present if localities 1 and 2 are
implemented.

TPM_PT_PCR_EXTEND_L3

0x00000007

a SET bit in the TPMS_PCR_SELECT indicates that the PCR
may be extended from locality 3
This property is only present if localities 1, 2, and 3 are
implemented.

TPM_PT_PCR_RESET_L3

0x00000008

a SET bit in the TPMS_PCR_SELECT indicates that the PCR
may be reset by TPM2_PCR_Reset() from locality 3
This property is only present if localities 1, 2, and 3 are
implemented.

TPM_PT_PCR_EXTEND_L4

0x00000009

a SET bit in the TPMS_PCR_SELECT indicates that the PCR
may be extended from locality 4
This property is only present if localities 1, 2, 3, and 4 are
implemented.

TPM_PT_PCR_RESET_L4

0x0000000A

a SET bit in the TPMS_PCR_SELECT indicates that the PCR
may be reset by TPM2_PCR_Reset() from locality 4
This property is only present if localities 1, 2, 3, and 4 are
implemented.

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 47
October 31, 2013

Part 2: Structures

Capability Name
reserved

Trusted Platform Module Library

Value

Comments

0x0000000B – the values in this range are reserved
0x00000010 They correspond to values that may be used to describe
attributes associated with the extended localities (32255).synthesize additional software localities. The meaning of
these properties need not be the same as the meaning for the
Extend and Reset properties above.

TPM_PT_PCR_NO_INCREMENT

0x00000011

a SET bit in the TPMS_PCR_SELECT indicates that
modifications to this PCR (reset or Extend) will not increment
the pcrUpdateCounter

TPM_PT_PCR_DRTM_RESET

0x00000012

a SET bit in the TPMS_PCR_SELECT indicates that the PCR is
reset by a DRTM event
These PCR are reset to -1 on TPM2_Startup() and reset to 0 on
a _TPM_Hash_End event following a _TPM_Hash_Start event.

TPM_PT_PCR_POLICY

0x00000013

a SET bit in the TPMS_PCR_SELECT indicates that the PCR is
controlled by policy
This property is only present if the TPM supports policy control
of a PCR.

TPM_PT_PCR_AUTH

0x00000014

a SET bit in the TPMS_PCR_SELECT indicates that the PCR is
controlled by an authorization value
This property is only present if the TPM supports authorization
control of a PCR.

reserved

0x00000015

reserved for the next (2 ) TPM_PT_PCR_POLICY set

reserved

0x00000016

reserved for the next (2 ) TPM_PT_PCR_AUTH set

reserved

nd
nd

nd

th

0x00000017 – reserved for the 2 through 255 TPM_PT_PCR_POLICY and
0x00000210 TPM_PT_PCR_AUTH values
th

and

highest

allowed,

th

and

highest

allowed,

reserved

0x00000211

reserved
to
the
256 ,
TPM_PT_PCR_POLICY set

reserved

0x00000212

reserved
to
the
256 ,
TPM_PT_PCR_AUTH set

reserved

0x00000213

new PCR property values may be assigned starting with this
value

TPM_PT_PCR_LAST

0x00000014

top of the range of TPM_PT_PCR properties of the
implementation
If the TPM receives a request for a PCR property with a value
larger than this, the TPM will return a zero length list and set the
moreData parameter to NO.
NOTE

Page 48
October 31, 2013

This is an implementation-specific value. The value shown
reflects the reference code implementation.

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

6.15 TPM_PS (Platform Specific)
The platform values in Table 24 are used for the TPM_PT_PS_FAMILY_INDICATOR.
NOTE

Values below six (6) have the same values as the purview assignments in TPM 1.2.

Table 24 — Definition of (UINT32) TPM_PS Constants <OUT>
Capability Name

Value

Comments

TPM_PS_MAIN

0x00000000

not platform specific

TPM_PS_PC

0x00000001

PC Client

TPM_PS_PDA

0x00000002

PDA (includes all mobile devices that are not specifically cell
phones)

TPM_PS_CELL_PHONE

0x00000003

Cell Phone

TPM_PS_SERVER

0x00000004

Server WG

TPM_PS_PERIPHERAL

0x00000005

Peripheral WG

TPM_PS_TSS

0x00000006

TSS WG

TPM_PS_STORAGE

0x00000007

Storage WG

TPM_PS_AUTHENTICATION

0x00000008

Authentication WG

TPM_PS_EMBEDDED

0x00000009

Embedded WG

TPM_PS_HARDCOPY

0x0000000A

Hardcopy WG

TPM_PS_INFRASTRUCTURE

0x0000000B

Infrastructure WG

TPM_PS_VIRTUALIZATION

0x0000000C Virtualization WG

TPM_PS_TNC

0x0000000D Trusted Network Connect WG

TPM_PS_MULTI_TENANT

0x0000000E

Multi-tenant WG

TPM_PS_TC

0x0000000F

Technical Committee

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 49
October 31, 2013

Part 2: Structures

7

Trusted Platform Module Library

Handles

7.1

Introduction

Handles are 32-bit values used to reference shielded locations of various types within the TPM.
Table 25 — Definition of Types for Handles
Type

Name

Description

UINT32

TPM_HANDLE

Handles may refer to objects (keys or data blobs), authorization sessions (HMAC and policy), NV
Indexes, permanent TPM locations, and PCR.
7.2

TPM_HT (Handle Types)

The 32-bit handle space is divided into 256 regions of equal size with 2
ranges represents a handle type.

24

values in each. Each of these

The type of the entity is indicated by the MSO of its handle. The values for the MSO and the entity
referenced are shown in Table 26.
Table 26 — Definition of (UINT8) TPM_HT Constants <S>
Name

Value

Comments

TPM_HT_PCR

0x00

PCR – consecutive numbers, starting at 0, that reference the PCR
registers
A platform-specific specification will set the minimum number of PCR
and an implementation may have more.

TPM_HT_NV_INDEX

0x01

NV Index – assigned by the caller

TPM_HT_HMAC_SESSION

0x02

HMAC Authorization Session – assigned by the TPM when the
session is created

TPM_HT_LOADED_SESSION

0x02

Loaded Authorization Session – used only in the context of
TPM2_GetCapability
This type references both loaded HMAC and loaded policy
authorization sessions.

TPM_HT_POLICY_SESSION

0x03

Policy Authorization Session – assigned by the TPM when the
session is created

TPM_HT_ACTIVE_SESSION

0x03

Active Authorization Session – used only in the context of
TPM2_GetCapability
This type references saved authorization session contexts for which
the TPM is maintaining tracking information.

TPM_HT_PERMANENT

0x40

Permanent Values – assigned by this specification in Table 27

TPM_HT_TRANSIENT

0x80

Transient Objects – assigned by the TPM when an object is loaded
into transient-object memory or when a persistent object is converted
to a transient object

TPM_HT_PERSISTENT

0x81

Persistent Objects – assigned by the TPM when a loaded transient
object is made persistent

Page 50
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

When a transient object is loaded, the TPM shall assign a handle with an MSO of TPM_HT_TRANSIENT.
The object may be assigned a different handle each time it is loaded. The TPM shall ensure that handles
assigned to transient objects are unique and assigned to only one transient object at a time.
EXAMPLE

If a TPM is only able to hold 4 transient objects in internal memory, it might choose to assign handles to
those objects with the values 80 00 00 0016 – 80 00 00 0316.

When a transient object is converted to a persistent object (TPM2_EvictControl()), the TPM shall validate
that the handle provided by the caller has an MSO of TPM_HT_PERSISTENT and that the handle is not
already assigned to a persistent object.
A handle is assigned to a session when the session is started. The handle shall have an MSO equal to
TPM_HT_SESSION and remain associated with that session until the session is closed or flushed. The
TPM shall ensure that a session handle is only associated with one session at a time. When the session
is loaded into the TPM using TPM2_LoadContext(), it will have the same handle each time it is loaded.
EXAMPLE

7.3

If a TPM is only able to track 64 active sessions at a time, it could number those sessions using the
values xx 00 01 0016 – xx 00 01 3F 16 where xx is either 02 16 or 03 16 depending on the session type.

Persistent Handle Sub-ranges

Persistent handles are assigned by the caller of TPM2_EvictControl(). ownerAuth or platformAuth is
required to authorize allocation of space for a persistent object. These entities are given separate ranges
of persistent handles so that they do not have to allocate from a common range of handles.
NOTE

While this “namespace” allocation of the handle ranges could have been handled by convention, TPM
enforcement is used to prevent errors by the OS or malicious software from affecting the platform’s use of
the NV memory.

The Owner is allocated persistent handles in the range of 81 00 00 0016 to 81 7F FF FF16 inclusive and
the TPM will return an error if ownerAuth is used to attempt to assign a persistent handle outside of this
range.

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 51
October 31, 2013

Part 2: Structures
7.4

Trusted Platform Module Library

TPM_RH (Permanent Handles)

Table 27 lists the architecturally defined handles that cannot be changed. The handles include
authorization handles, and special handles.
Table 27 — Definition of (UINT32) TPM_RH Constants <IN, S>
Name

Value

Type

TPM_RH_FIRST

0x40000000

R

TPM_RH_SRK

0x40000000

R

TPM_RH_OWNER

0x40000001

K, A, P

TPM_RH_REVOKE

0x40000002

R

not used

1

TPM_RH_TRANSPORT

0x40000003

R

not used

1

TPM_RH_OPERATOR

0x40000004

R

not used

1

TPM_RH_ADMIN

0x40000005

R

not used

1

TPM_RH_EK

0x40000006

R

not used

1

TPM_RH_NULL

0x40000007

K, A, P

a handle associated with the null hierarchy, an EmptyAuth
authValue, and an Empty Policy authPolicy.

TPM_RH_UNASSIGNED

0x40000008

R

value reserved to the TPM to indicate a handle location that
has not been initialized or assigned

TPM_RS_PW

0x40000009

S

authorization value
authorization session

TPM_RH_LOCKOUT

0x4000000A

A

references the authorization associated with the dictionary
attack lockout reset

TPM_RH_ENDORSEMENT

0x4000000B

K, A, P

references the Endorsement Primary
endorsementAuth, and endorsementPolicy

TPM_RH_PLATFORM

0x4000000C

K, A, P

references the Platform Primary Seed (PPS), platformAuth,
and platformPolicy

TPM_RH_PLATFORM_NV

0x4000000D

C

for phEnableNV

R

the top of the reserved handle area
This is set to allow TPM2_GetCapability() to know where to
stop. It may vary as implementations add to the permanent
handle area.

TPM_RH_LAST

0x4000000D

Comments

not used

1

handle references the Storage Primary Seed (SPS), the
ownerAuth, and the ownerPolicy

used

to

indicate

a

password

Seed

(EPS),

Type definitions:
R – a reserved value
K – a Primary Seed
A – an authorization value
P – a policy value
S – a session handle
C - a controlNote 1 The handle is only used in a TPM that is compatible with a previous version of this specification. It is not used
in any command defined in this version of the specification.

Page 52
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library
7.5

Part 2: Structures

TPM_HC (Handle Value Constants)

The definitions in Table 28 are used to define many of the interface data types. However, the values of
these constants, other than PCR_FIRST, are informative and may be changed by an implementation as
long as the values stay within the prescribed ranges for the handle type.
NOTE

PCR0 is architecturally defined to have a handle value of 0.

For the reference implementation, the handle range for sessions starts at the lowest allowed value for a
session handle. The highest value for a session handle is determined by how many active sessions are
allowed by the implementation. The MSO of the session handle will be set according to the session type.
A similar approach is used for transient objects with the first assigned handle at the bottom of the range
defined by TPM_HT_TRANSIENT and the top of the range determined by the implementation-dependent
value of MAX_LOADED_OBJECTS.
The first assigned handle for evict objects is also at the bottom of the allowed range defined by
TPM_HT_PERSISTENT and the top of the range determined by the implementation-dependent value of
MAX_EVICT_OBJECTS.
NOTE

The values in Table 28 are intended to facilitate the process of making the handle larger than 32 bits in
the future. It is intended that HR_MASK and HR_SHIFT are the only values that need change to resize
the handle space.

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 53
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

Table 28 — Definition of (TPM_HANDLE) TPM_HC Constants <IN, S>
Name

Value

Comments

HR_HANDLE_MASK

0x00FFFFFF

to mask off the HR

HR_RANGE_MASK

0xFF000000

to mask off the variable
part

HR_SHIFT

24

HR_PCR

(TPM_HT_PCR << HR_SHIFT)

HR_HMAC_SESSION

(TPM_HT_HMAC_SESSION << HR_SHIFT)

HR_POLICY_SESSION

(TPM_HT_POLICY_SESSION << HR_SHIFT)

HR_TRANSIENT

(TPM_HT_TRANSIENT << HR_SHIFT)

HR_PERSISTENT

(TPM_HT_PERSISTENT << HR_SHIFT)

HR_NV_INDEX

(TPM_HT_NV_INDEX << HR_SHIFT)

HR_PERMANENT

(TPM_HT_PERMANENT << HR_SHIFT)

PCR_FIRST

(HR_PCR + 0)

first PCR

PCR_LAST

(PCR_FIRST + IMPLEMENTATION_PCR-1)

last PCR

HMAC_SESSION_FIRST

(HR_HMAC_SESSION + 0)

first HMAC session

HMAC_SESSION_LAST

(HMAC_SESSION_FIRST+MAX_ACTIVE_SESSIONS-1)

last HMAC session

LOADED_SESSION_FIRST HMAC_SESSION_FIRST

used in GetCapability

LOADED_SESSION_LAST

HMAC_SESSION_LAST

used in GetCapability

POLICY_SESSION_FIRST

(HR_POLICY_SESSION + 0)

first policy session

POLICY_SESSION_LAST

(POLICY_SESSION_FIRST + MAX_ACTIVE_SESSIONS-1) last policy session

TRANSIENT_FIRST

(HR_TRANSIENT + 0)

first transient object

ACTIVE_SESSION_FIRST

POLICY_SESSION_FIRST

used in GetCapability

ACTIVE_SESSION_LAST

POLICY_SESSION_LAST

used in GetCapability

TRANSIENT_LAST

(TRANSIENT_FIRST+MAX_LOADED_OBJECTS-1)

last transient object

PERSISTENT_FIRST

(HR_PERSISTENT + 0)

first persistent object

PERSISTENT_LAST

(PERSISTENT_FIRST + 0x00FFFFFF)

last persistent object

PLATFORM_PERSISTENT

(PERSISTENT_FIRST + 0x00800000)

first platform persistent
object

NV_INDEX_FIRST

(HR_NV_INDEX + 0)

first allowed NV Index

NV_INDEX_LAST

(NV_INDEX_FIRST + 0x00FFFFFF)

last allowed NV Index

PERMANENT_FIRST

TPM_RH_FIRST

PERMANENT_LAST

TPM_RH_LAST

Page 54
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

Attribute Structures

8
8.1

Description

Attributes are expressed as bit fields of varying size. An attribute field structure may be 1, 2, or 4 octets in
length.
The bit numbers for an attribute structure are assigned with the number 0 assigned to the least-significant
bit of the structure and the highest number assigned to the most-significant bit of the structure.
The least significant bit is determined by treating the attribute structure as an integer. The least-significant
bit would be the bit that is set when the value of the integer is 1.
When any reserved bit in an attribute is SET, the TPM shall return TPM_RC_RESERVED_BITS. This
response code is not shown in the tables for attributes.
8.2

TPMA_ALGORITHM

This structure defines the attributes of an algorithm.
Each algorithm has a fundamental attribute: asymmetric, symmetric, or hash. In some cases (e.g.,
TPM_ALG_RSA or TPM_ALG_AES), this is the only attribute.
A mode, method, or scheme may have an associated asymmetric, symmetric, or hash algorithm.
Table 29 — Definition of (UINT32) TPMA_ALGORITHM Bits
Bit

Name

Definition

0

asymmetric

SET (1): an asymmetric algorithm with public and private portions
CLEAR (0): not an asymmetric algorithm

1

symmetric

SET (1): a symmetric block cipher
CLEAR (0): not a symmetric block cipher

2

hash

SET (1): a hash algorithm
CLEAR (0): not a hash algorithm

3

object

SET (1): an algorithm that may be used as an object type
CLEAR (0): an algorithm that is not used as an object type

7:4

Reserved

8

signing

SET (1): a signing algorithm. The setting of asymmetric, symmetric, and hash
will indicate the type of signing algorithm.
CLEAR (0): not a signing algorithm

9

encrypting

SET (1): an encryption/decryption algorithm. The setting of asymmetric,
symmetric, and hash will indicate the type of encryption/decryption algorithm.
CLEAR (0): not an encryption/decryption algorithm

10

method

SET (1): a method such as a key derivative function (KDF)
CLEAR (0): not a method

31:11 Reserved

8.3
8.3.1

TPMA_OBJECT (Object Attributes)
Introduction

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 55
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

This attribute structure indicates an object’s use, its authorization types, and it relationship to other
objects.
The state of the attributes is determined when the object is created and they are never changed by the
TPM. Additionally, the setting of these structures is reflected in the integrity value of the private area of an
object in order to allow the TPM to detect modifications of the Protected Object when stored off the TPM.
8.3.2

Structure Definition
Table 30 — Definition of (UINT32) TPMA_OBJECT Bits

Bit

Name

Definition

0

Reserved

shall be zero

1

fixedTPM

SET (1): The hierarchy of the object, as indicated by its Qualified Name, may
not change.
CLEAR (0): The hierarchy of the object may change as a result of this object or
an ancestor key being duplicated for use in another hierarchy.

2

stClear

SET (1): Previously saved contexts of this object may not be loaded after
Startup(CLEAR).
CLEAR (0): Saved contexts of this object may be used after a
Shutdown(STATE) and subsequent Startup().

3

Reserved

shall be zero

4

fixedParent

SET (1): The parent of the object may not change.
CLEAR (0): The parent of the object may change as the result of a
TPM2_Duplicate() of the object.

5

sensitiveDataOrigin

SET (1): Indicates that, when the object was created with TPM2_Create() or
TPM2_CreatePrimary(), the TPM generated all of the sensitive data other than
the authValue.
CLEAR (0): A portion of the sensitive data, other than the authValue, was
provided by the caller.

6

userWithAuth

SET (1): Approval of USER role actions with this object may be with an HMAC
session or with a password using the authValue of the object or a policy
session.
CLEAR (0): Approval of USER role actions with this object may only be done
with a policy session.

7

adminWithPolicy

SET (1): Approval of ADMIN role actions with this object may only be done with
a policy session.
CLEAR (0): Approval of ADMIN role actions with this object may be with an
HMAC session or with a password using the authValue of the object or a policy
session.

9:8

Reserved

shall be zero

10

noDA

SET (1): The object is not subject to dictionary attack protections.
CLEAR (0): The object is subject to dictionary attack protections.

11

encryptedDuplication

SET (1): If the object is duplicated, then symmetricAlg shall not be
TPM_ALG_NULL and newParentHandle shall not be TPM_RH_NULL.
CLEAR (0): The object may be duplicated without an inner wrapper on the
private portion of the object and the new parent may be TPM_RH_NULL.

15:12 Reserved
16

restricted

Page 56
October 31, 2013

shall be zero
SET (1): Key usage is restricted to manipulate structures of known format; the
parent of this key shall have restricted SET.
CLEAR (0): Key usage is not restricted to use on special formats.

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

Bit

Name

Definition

17

decrypt

SET (1): The private portion of the key may be used to decrypt.
CLEAR (0): The private portion of the key may not be used to decrypt.

18

sign

SET (1): The private portion of the key may be used to sign.
CLEAR (0): The private portion of the key may not be used to sign.

31:19 Reserved

8.3.3
8.3.3.1

shall be zero

Attribute Descriptions
Introduction

The following remaining paragraphs in this clause describe the use and settings for each of the
TPMA_OBJECT attributes. The description includes checks that are performed on the objectAttributes
when an object is created, when it is loaded, and when it is imported. In these descriptions:
Creation –

indicates
settings
for
TPM2_CreatePrimary()

the

template

parameter

in

TPM2_Create()

or

Load

–

indicates settings for the inPublic parameter in TPM2_Load()

Import

–

indicates settings for the objectPublic parameter in TPM2_Import()

External

–

indicates settings that apply to the inPublic parameter in TPM2_LoadExternal() if both the
public and sensitive portions of the object are loaded

NOTE

For TPM2_LoadExternal() when only the public portion of the object is loaded, the only attribute checks
are the checks in the validation code following Table 30 and the reserved attributes check.

For any consistency error of attributes in TPMA_OBJECT, the TPM shall return TPM_RC_ATTRIBUTES.
8.3.3.2

Bit[1] – fixedTPM

When SET, the object cannot be duplicated for use on a different TPM, either directly or indirectly and the
Qualified Name of the object cannot change. When CLEAR, the object’s Qualified Name may change if
the object or an ancestor is duplicated.
NOTE

This attribute is the logical inverse of the migratable attribute in 1.2. That is, when this attribute is C LEAR,
it is the equivalent to a 1.2 object with migratable SET.

Creation –

If fixedTPM is SET in the object's parent, then fixedTPM and fixedParent shall both be
set to the same value in template. If fixedTPM is CLEAR in the parent, this attribute shall
also be CLEAR in template.
NOTE

For a Primary Object, the parent is considered to have fixedTPM SET.

Load

–

If fixedTPM is SET in the object's parent, then fixedTPM and fixedParent shall both be
set to the same value. If fixedTPM is CLEAR in the parent, this attribute shall also be
CLEAR.

Import

–

shall be CLEAR

External

–

shall be CLEAR if both the public and sensitive portions are loaded or if fixedParent is
CLEAR, otherwise may be SET or CLEAR

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 57
October 31, 2013

Part 2: Structures
8.3.3.3

Trusted Platform Module Library

Bit[2] – stClear

If this attribute is SET, then saved contexts of this object will be invalidated on
TPM2_Startup(TPM_SU_CLEAR). If the attribute is CLEAR, then the TPM shall not invalidate the saved
context if the TPM received TPM2_Shutdown(TPM_SU_STATE). If the saved state is valid when checked
at the next TPM2_Startup(), then the TPM shall continue to be able to use the saved contexts.
Creation –

may be SET or CLEAR in template

Load

–

may be SET or CLEAR

Import

–

may be SET or CLEAR

External

–

may be SET or CLEAR

8.3.3.4

Bit[4] – fixedParent

If this attribute is SET, the object’s parent may not be changed. That is, this object may not be the object
of a TPM2_Duplicate(). If this attribute is CLEAR, then this object may be the object of a
TPM2_Duplicate().
Creation –

may be SET or CLEAR in template

Load

–

may be SET or CLEAR

Import

–

shall be CLEAR

External

–

shall be CLEAR if both the public and sensitive portions are loaded; otherwise it may be
SET or CLEAR

8.3.3.5

Bit[5] – sensitiveDataOrigin

This attribute is SET for any key that was generated by TPM in TPM2_Create() or
TPM2_CreatePrimary(). If CLEAR, it indicates that the sensitive part of the object (other than the
obfuscation value) was provided by the caller.
NOTE 1

If the fixedTPM attribute is SET, then this attribute is authoritative and accurately reflects the source of
the sensitive area data. If the fixedTPM attribute is CLEAR, then validation of this attribute requires
evaluation of the properties of the ancestor keys.

Creation –

If inSensitive.sensitive.data.size is zero, then this attribute shall be SET in the template;
otherwise, it shall be CLEAR in the template.

NOTE 2

The inSensitive.sensitive.data.size parameter is required to be zero for an asymmetric key so
sensitiveDataOrigin is required to be SET.

NOTE 3

The inSensitive.sensitive.data.size parameter may not be zero for a data object so sensitiveDataOrigin is
required to be CLEAR. A data object has type = TPM_ALG_KEYEDHASH and its sign and decrypt
attributes are CLEAR.

Load

–

may be SET or CLEAR

Import

–

may be SET or CLEAR

External

–

may be SET or CLEAR

Page 58
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library
8.3.3.6

Part 2: Structures

Bit[6] – userWithAuth

If SET, authorization for operations that require USER role authorization may be given if the caller
provides proof of knowledge of the authValue of the object with an HMAC authorization session or a
password.
If this attribute is CLEAR, then then HMAC or password authorizations may not be used for USER role
authorizations.
NOTE 1

Regardless of the setting of this attribute, authorizations for operations th at require USER role
authorizations may be provided with a policy session that satisfies the object's authPolicy.

NOTE 2

Regardless of the setting of this attribute, the authValue may be referenced in a policy session or used to
provide the bind value in TPM2_StartAuthSession(). However, if userWithAuth is CLEAR, then the object
may be used as the bind object in TPM2_StartAuthSession() but the session cannot be used to authorize
actions on the object. If this were allowed, then the userWithAuth control could be circumvented simply by
using the object as the bind object.

Creation –

may be SET or CLEAR in template

Load

–

may be SET or CLEAR

Import

–

may be SET or CLEAR

External

–

may be SET or CLEAR

8.3.3.7

Bit[7] – adminWithPolicy

If CLEAR, authorization for operations that require ADMIN role may be given if the caller provides proof of
knowledge of the authValue of the object with an HMAC authorization session or a password.
If this attribute is SET, then then HMAC or password authorizations may not be used for ADMIN role
authorizations.
NOTE 1

Regardless of the setting of this attribute, operations that require ADMIN role authorization may be
provided by a policy session that satisfies the object's authPolicy.

NOTE 2

This attribute is similar to userWithAuth but the logic is a bit different. When userWithAuth is CLEAR, the
authValue may not be used for USER mode authorizations. When adminWithPolicy is CLEAR, it means
that the authValue may be used for ADMIN role. Policy may always be used regardless of t he setting of
userWithAuth or adminWithPolicy.

Actions that always require policy (TPM2_Duplicate()) are not affected by the setting of this attribute.
Creation –

may be SET or CLEAR in template

Load

–

may be SET or CLEAR

Import

–

may be SET or CLEAR

External

–

may be SET or CLEAR

8.3.3.8

Bit[10] – noDA

If SET, then authorization failures for the object do not affect the dictionary attack protection logic and
authorization of the object is not blocked if the TPM is in lockout.
Creation –

may be SET or CLEAR in template

Load

–

may be SET or CLEAR

Import

–

may be SET or CLEAR

External

–

may be SET or CLEAR

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 59
October 31, 2013

Part 2: Structures
8.3.3.9

Trusted Platform Module Library

Bit[11] – encryptedDuplication

If SET, then when the object is duplicated, the sensitive portion of the object is required to be encrypted
with an inner wrapper and the new parent shall be an asymmetric key and not TPM_RH_NULL
NOTE 1

Enforcement of these requirements in TPM2_Duplicate() is by not allowing symmetricAlg to be
TPM_ALG_NULL and newParentHandle may not be TPM_RH_NULL.

This attribute shall not be SET in any object that has fixedTPM SET.
NOTE 2

This requirement means that encryptedDuplication may not be SET if the object cannot be directly or
indirectly duplicated.

If an object's parent has fixedTPM SET, and the object is duplicable (fixedParent == CLEAR), then
encryptedDuplication may be SET or CLEAR in the object.
NOTE 3

This allows the object at the boundary between duplicable and non -duplicable objects to have either
setting.

If an object's parent has fixedTPM CLEAR, then the object is required to have the same setting of
encryptedDuplication as its parent.
NOTE 4

This requirement forces all
encryptedDuplication setting.

duplicable

objects

in

a

duplication

group

to

have

the

same

Creation –

shall be CLEAR if fixedTPM is SET. If fixedTPM is CLEAR, then this attribute shall have
the same value as its parent unless fixedTPM is SET in the object's parent, in which
case, it may be SET or CLEAR.

Load

–

shall be CLEAR if fixedTPM is SET. If fixedTPM is CLEAR, then this attribute shall have
the same value as its parent, unless fixedTPM is SET the parent, in which case, it may
be SET or CLEAR.

Import

–

if fixedTPM is SET in the object's new parent, then this attribute may be SET or CLEAR,
otherwise, it shall have the same setting as the new parent.

External

–

may be SET or CLEAR.

8.3.3.10

Bit[16] – restricted

This this attribute modifies the decrypt and sign attributes of an object.
NOTE

A key with this object CLEAR may not be a parent for another object.

Creation –

shall be CLEAR in template if neither sign nor decrypt is SET in template.

Load

–

shall be CLEAR if neither sign nor decrypt is SET in the object

Import

–

may be SET or CLEAR

External

–

shall be CLEAR

Page 60
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library
8.3.3.11

Part 2: Structures

Bit[17] – decrypt

When SET, the private portion of this key can be used to decrypt an external blob. If restricted is SET,
then the TPM will return an error if the external decrypted blob is not formatted as appropriate for the
command.
NOTE 1

Since TPM-generated keys and sealed data will contain a hash and a structure tag, the TPM can ensure
that it is not being used to improperly decrypt and return sensitive data that should not be returned. The
only type of data that may be returned after decryption is a Sealed Data Object (a keyedHash object with
decrypt and sign CLEAR).

When restricted is CLEAR, there are no restrictions on the use of the private portion of the key for
decryption and the key may be used to decrypt and return any structure encrypted by the public portion of
the key.
NOTE 2

A key with this attribute SET may be a parent for another object if restricted is SET and sign is CLEAR.

If decrypt is SET on an object with type set to TPM_ALG_KEYEDHASH, it indicates that the object is an
XOR encryption key.
Creation –

may be SET or CLEAR in template

Load

–

may be SET or CLEAR

Import

–

may be SET or CLEAR

External

–

may be SET or CLEAR

8.3.3.12

Bit[18] – sign

When this attribute is SET, the private portion of this key may be used to sign a digest. If restricted is
SET, then the key may only be used to sign a digest that was computed by the TPM. A restricted signing
key may be used to sign a TPM-generated digest. If a structure is generated by the TPM, it will begin with
TPM_GENERATED_VALUE and the TPM may sign the digest of that structure. If the data is externally
supplied and has TPM_GENERATED_VALUE as its first octets, then the TPM will not sign a digest of
that data with a restricted signing key.
If restricted is CLEAR, then the key may be used to sign any digest, whether generated by the TPM or
externally provided.
NOTE 1

Some asymmetric algorithms may not support both sign and decrypt being SET in the same key.

If sign is SET on an object with type set to TPM_ALG_KEYEDHASH, it indicates that the object is an
HMAC key.
NOTE 2

A key with this attribute SET may not be a parent for another object.

Creation –

shall not be SET if decrypt and restricted are both SET

Load

–

shall not be SET if decrypt and restricted are both SET

Import

–

shall not be SET if decrypt and restricted are both SET

External

–

shall not be SET if decrypt and restricted are both SET

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 61
October 31, 2013

Part 2: Structures
8.4

Trusted Platform Module Library

TPMA_SESSION (Session Attributes)

This octet in each session is used to identify the session type, indicate its relationship to any handles in
the command, and indicate its use in parameter encryption.
Table 31 — Definition of (UINT8) TPMA_SESSION Bits <IN/OUT>
Bit

Name

Meaning

0

continueSession

SET (1): In a command, this setting indicates that the session is to remain active
after successful completion of the command. In a response, it indicates that the
session is still active. If SET in the command, this attribute shall be SET in the
response.
CLEAR (0): In a command, this setting indicates that the TPM should close the
session and flush any related context when the command completes successfully. In
a response, it indicates that the session is closed and the context is no longer active.
This attribute has no meaning for a password authorization and the TPM will allow
any setting of the attribute in the command and SET the attribute in the response.
This attribute will only be CLEAR in one response for a logical session. If the attribute
is CLEAR, the context associated with the session is no longer in use and the space
is available. A session created after another session is ended may have the same
handle but logically is not the same session.
This attribute has no effect if the command does not complete successfully.

1

auditExclusive

SET (1): In a command, this setting indicates that the command should only be
executed if the session is exclusive at the start of the command. In a response, it
indicates that the session is exclusive. This setting is only allowed if the audit
attribute is SET.
CLEAR (0): If audit is CLEAR, then this field is reserved but the error is
TPM_RC_ATTRIBUTES rather than TPM_RC_RESERVED_BITS.
See "Exclusive Audit Session" clause in Part 1.

2

auditReset

SET (1): In a command, this setting indicates that the audit digest of the session
should be initialized and the exclusive status of the session SET.
CLEAR (0): If audit is CLEAR, then this field is reserved but the error is
TPM_RC_ATTRIBUTES rather than TPM_RC_RESERVED_BITS. This setting is
always used for a response.

4:3

Reserved

shall be CLEAR

decrypt

SET (1): In a command, this setting indicates that the first parameter in the command
is symmetrically encrypted using the parameter encryption scheme described in Part
1. The TPM will decrypt the parameter after performing any HMAC computations and
before unmarshaling the parameter. In a response, the attribute is copied from the
request but has no effect on the response.
CLEAR (0): Session not used for encryption.

5

For a password authorization, this attribute will be CLEAR in both the command and
response.
This attribute may only be SET in one session per command.
This attribute may be SET in a session that is not associated with a command
handle. Such a session is provided for purposes of encrypting a parameter and not
for authorization.
This attribute may be SET in combination with any other session attributes.
This attribute may only be SET if the first parameter of the command is a sized buffer
(TPM2B_).

Page 62
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

Bit

Name

Meaning

6

encrypt

SET (1): In a command, this setting indicates that the TPM should use this session to
encrypt the first parameter in the response. In a response, it indicates that the
attribute was set in the command and that the TPM used the session to encrypt the
first parameter in the response using the parameter encryption scheme described in
Part 1 of this specification.
CLEAR (0): Session not used for encryption.
For a password authorization, this attribute will be CLEAR in both the command and
response.
This attribute may only be SET in one session per command.
This attribute may be SET in a session that is not associated with a command
handle. Such a session is provided for purposes of encrypting a parameter and not
for authorization.
This attribute may only be SET if the first parameter of a response is a sized buffer
(TPM2B_).

7

SET (1): In a command or response, this setting indicates that the session is for audit
and that auditExclusive and auditReset have meaning. This session may also be
used for authorization, encryption, or decryption. The encrypted and encrypt fields
may be SET or CLEAR.
CLEAR (0): Session is not used for audit.

audit

This attribute may only be SET in one session per command or response. If SET in
the command, then this attribute will be SET in the response.

8.5

TPMA_LOCALITY (Locality Attribute)

In a TPMS_CREATION_DATA structure, this structure is used to indicate the locality of the command that
created the object. No more than one of the locality attributes shall be set in the creation data.
When used in TPM2_PolicyLocality(), this structure indicates which localities are approved by the policy.
When a policy is started, all localities are allowed. If TPM2_PolicyLocality() is executed, it indicates that
the command may only be executed at specific localities. More than one locality may be selected.
EXAMPLE 1

TPM_LOC_TWO would indicate that only locality 2 is authorized.

EXAMPLE 2

TPM_LOC_ONE + TPM_LOC_TWO would indicate that locality 1 or 2 is authorized.

EXAMPLE 3

TPM_LOC_FOUR + TPM_LOC_THREE would indicate that localities 3 or 4 are authorized.

EXAMPLE 4

A value of 21 16 would represent a locality of 33.

NOTE

Locality values of 5 through 31 are not selectable.

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 63
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

If Extended is non-zero, then an extended locality is indicated and the TPMA_LOCALITY contains an
integer value.
Table 32 — Definition of (UINT8) TPMA_LOCALITY Bits <IN/OUT>
Bit

Name

Definition

0

TPM_LOC_ZERO

1

TPM_LOC_ONE

2

TPM_LOC_TWO

3

TPM_LOC_THREE

4

TPM_LOC_FOUR

7:5

8.6

Extended

If any of these bits is set, an extended locality is indicated

TPMA_PERMANENT

The attributes in this structure are persistent and are not changed as a result of _TPM_Init or any
TPM2_Startup(). Some of the attributes in this structure may change as the result of specific Protected
Capabilities.
This
structure
may
be
read
using
TPM2_GetCapability(capability
=
TPM_CAP_TPM_PROPERTIES, property = TPM_PT_PERMANENT).
Table 33 — Definition of (UINT32) TPMA_PERMANENT Bits <OUT>
Bit

Parameter

Description

0

ownerAuthSet

SET (1): TPM2_HierarchyChangeAuth() with ownerAuth has been executed since
the last TPM2_Clear().
CLEAR (0): ownerAuth has not been changed since TPM2_Clear().

1

endorsementAuthSet

SET (1): TPM2_HierarchyChangeAuth() with endorsementAuth has been executed
since the last TPM2_Clear().
CLEAR (0): endorsementAuth has not been changed since TPM2_Clear().

2

lockoutAuthSet

SET (1): TPM2_HierarchyChangeAuth() with lockoutAuth has been executed since
the last TPM2_Clear().
CLEAR (0): lockoutAuth has not been changed since TPM2_Clear().

7:3
8

Reserved
disableClear

SET (1): TPM2_Clear() is disabled.
CLEAR (0): TPM2_Clear() is enabled.
NOTE

See “TPM2_ClearControl” in Part 3 of this specification for details on changing
this attribute.

9

inLockout

SET (1): The TPM is in lockout and commands that require authorization with other
than platformAuth will not succeed.

10

tpmGeneratedEPS

SET (1): The EPS was created by the TPM.
CLEAR (0): The EPS was created outside of the TPM using a manufacturerspecific process.

31:11 Reserved

Page 64
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library
8.7

Part 2: Structures

TPMA_STARTUP_CLEAR

These attributes are set to their default state on reset on each TPM Reset or TPM Restart. The attributes
are preserved on TPM Resume.
On each TPM2_Startup(TPM_SU_CLEAR), the TPM will set these attributes to their indicated defaults.
This structure may be read using TPM2_GetCapability(capability = TPM_CAP_TPM_PROPERTIES,
property = TPM_PT_STARTUP_CLEAR).
Some of attributes may be changed as the result of specific Protected Capabilities.
Table 34 — Definition of (UINT32) TPMA_STARTUP_CLEAR Bits <OUT>
Bit
0

Parameter

Description

phEnable

SET (1): (default) The platform hierarchy is enabled and platformAuth or
platformPolicy may be used for authorization.
CLEAR (0): platformAuth and platformPolicy may not be used for authorizations,
and objects in the platform hierarchy, including NV Indexes and persistent objects,
cannot be used.
NOTE

1

shEnable

SET (1): (default) The Storage hierarchy is enabled and ownerAuth or ownerPolicy
may be used for authorization.
CLEAR (0): ownerAuth and ownerPolicy may not be used for authorizations, and
objects in the Storage hierarchy, including NV Indexes and persistent objects,
cannot be used.
NOTE

2

ehEnable

phEnableNV

See “TPM2_HierarchyControl” in Part 3 of this specification for details on
changing this attribute.

SET (1): (default) The EPS hierarchy is enabled and endorsementAuth may be
used to authorize commands.
CLEAR (0): endorsementAuth and endorsementPolicy may not be used for
authorizations, and objects in the endorsement hierarchy, including persistent
objects, cannot be used.
NOTE

3

See “TPM2_HierarchyControl” in Part 3 of this specification for details on
changing this attribute.

See “TPM2_HierarchyControl” in Part 3 of this specification for details on
changing this attribute.

SET (1): (default) NV indices that have TPMA_PLATFORM_CREATE SET may be
read or written. The platform can create define and undefine indices.
CLEAR (0): NV indices that have TPMA_PLATFORM_CREATE SET may not be
read or written (TPM_RC_HANDLE). The platform cannot
define
(TPM_RC_HIERARCHY) or undefined (TPM_RC_HANDLE) indices.
NOTE
See “TPM2_HierarchyControl” in Part 3 of this specification for details on changing
this attribute.
NOTE
read refers to these commands: TPM2_NV_Read, TPM2_NV_ReadPublic, TPM_NV_Certify,
TPM2_PolicyNV
write refers to thse commands: TPM2_NV_Write, TPM2_NV_Increment, TPM2_NV_Extend,
TPM2_NV_SetBits
NOTE The TPM must query the index TPMA_PLATFORM_CREATE attribute to determine
whether phEnableNV is applicable. Since the TPM will return TPM_RC_HANDLE if the index
does not exist, it also returns this error code if the index is disabled. Otherwise, the TPM
would leak the existence of an index even when disabled.

30:4 Reserved

Family “2.0”
Level 00 Revision 00.99

shall be zero

Published
Copyright © TCG 2006-2013

Page 65
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

Bit

Parameter

Description

31

orderly

SET (1): The TPM received a TPM2_Shutdown() and a matching TPM2_Startup().
CLEAR (0): TPM2_Startup(TPM_SU_CLEAR) was not preceded by a
TPM2_Shutdown() of any type.
NOTE

8.8

A shutdown is orderly if the TPM receives a TPM2_Shutdown() of any type
followed by a TPM2_Startup() of any type. However, the TPM will return an error if
TPM2_Startup(TPM_SU_STATE)
was
not
preceded
by
TPM2_State_Save(TPM_SU_STATE).

TPMA_MEMORY

This structure of this attribute is used to report the memory management method used by the TPM for
transient
objects
and
authorization
sessions.
This
structure
may be
read
using
TPM2_GetCapability(capability = TPM_CAP_TPM_PROPERTIES, property = TPM_PT_MEMORY).
If the RAM memory is shared, then context save of a session may make it possible to load an additional
transient object.
Table 35 — Definition of (UINT32) TPMA_MEMORY Bits <Out>
Bit

Name

Definition

0

sharedRAM

SET (1): indicates that the RAM memory used for authorization session
contexts is shared with the memory used for transient objects
CLEAR (0): indicates that the memory used for authorization sessions is not
shared with memory used for transient objects

1

sharedNV

SET (1): indicates that the NV memory used for persistent objects is shared
with the NV memory used for NV Index values
CLEAR (0): indicates that the persistent objects and NV Index values are
allocated from separate sections of NV

2

objectCopiedToRam

SET (1): indicates that the TPM copies persistent objects to a transient-object
slot in RAM when the persistent object is referenced in a command. The TRM
is required to make sure that an object slot is available.
CLEAR (0): indicates that the TPM does not use transient-object slots when
persistent objects are referenced

31:3

Reserved

shall be zero

Page 66
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library
8.9

Part 2: Structures

TPMA_CC (Command Code Attributes)

8.9.1

Introduction

This structure defines the attributes of a command from a context management perspective. The fields of
the structure indicate to the TPM Resource Manager (TRM) the number of resources required by a
command and how the command affects the TPM’s resources.
This structure is only used in a list returned by the TPM in response to TPM2_GetCapability(capability =
TPM_CAP_COMMANDS).
For a command to the TPM, only the commandIndex field and V attribute are allowed to be non-zero.
8.9.2

Structure Definition
Table 36 — Definition of (TPM_CC) TPMA_CC Bits <OUT>

Bit
15:0

Name

Definition

commandIndex

indicates the command being selected

21:16 Reserved

shall be zero

22

nv

SET (1): indicates that the command may write to NV
CLEAR (0): indicates that the command does not write to NV

23

extensive

SET (1): This command could flush any number of loaded contexts.
CLEAR (0): no additional changes other than indicated by the flushed attribute

24

flushed

SET (1): The context associated with any transient handle in the command will
be flushed when this command completes.
CLEAR (0): No context is flushed as a side effect of this command.

27:25 cHandles

indicates the number of the handles in the handle area for this command

28

rHandle

SET (1): indicates the presence of the handle area in the input

29

V

SET (1): indicates that the command is vendor-specific
CLEAR (0): indicates that the command is defined in a version of this
specification

31:30 Res

8.9.3
8.9.3.1

allocated for software; shall be zero

Field Descriptions
Bits[15:0] – commandIndex

This is the command index of the command in the set of commands. The two sets are defined by the V
attribute. If V is zero, then the commandIndex shall be in the set of commands defined in a version of this
specification. If V is one, then the meaning of commandIndex is as determined by the TPM vendor.
8.9.3.2

Bit[22] – nv

If this attribute is SET, then the TPM may perform an NV write as part of the command actions. This write
is independent of any write that may occur as a result of dictionary attack protection. If this attribute is
CLEAR, then the TPM shall not perform an NV write as part of the command actions.
8.9.3.3

Bit[23] – extensive

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 67
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

If this attribute is SET, then the TPM may flush many transient objects as a side effect of this command.
In Part 3, a command that has this attribute is indicated by using a “{E}” decoration in the “Description”
column of the commandCode parameter.
EXAMPLE

See “TPM2_Clear” in Part 3.

NOTE

The “{E}” decoration may be combined with other decorations such as “{NV}” in which case the decoration
would be “{NV E}.”

8.9.3.4

Bit[24] – flushed

If this attribute is SET, then the TPM will flush transient objects as a side effect of this command. Any
transient objects listed in the handle area of the command will be flushed from TPM memory. Handles
associated with persistent objects, sessions, PCR, or other fixed TPM resources are not flushed.
NOTE

The TRM is expected to use this value to determine how many objects are loaded into transient TPM
memory.

NOTE

The “{F}” decoration may be combined with other decorations such as “{NV}” in which case the decoration
would be “{NV F}.”

If this attribute is SET for a command, and the handle of the command is associated with a hierarchy
(TPM_RH_PLATFORM, TPM_RH_OWNER, or TPM_RH_ENDORSEMENT), all loaded objects in the
indicated hierarchy are flushed.
The TRM is expected to know the behaviour of TPM2_ContextSave(), and sessions are flushed when
context saved, but objects are not. The flushed attribute for that command shall be CLEAR.
In Part 3, a command that has this attribute is indicated by using a “{F}” decoration in the “Description”
column of the commandCode parameter.
EXAMPLE

8.9.3.5

See “TPM2_SequenceComplete” in Part 3.”

Bits[27:25] – cHandles

This field indicates the number of handles in the handle area of the command. This number allows the
TRM to enumerate the handles in the handle area and find the position of the authorizations (if any).
8.9.3.6

Bit[28] – rHandle

If this attribute is SET, then the response to this command has a handle area. This area will contain no
more than one handle. This field is necessary to allow the TRM to locate the parameterSize field in the
response, which is then used to locate the authorizations.
NOTE

The TRM is expected to “virtualize” the handle value for any returned handle.

Page 68
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

A TPM command is only allowed to have one handle in the session area.
8.9.3.7

Bit[29] – V

When this attribute is SET, it indicates that the command operation is defined by the TPM vendor. When
CLEAR, it indicates that the command is defined by a version of this specification.
8.9.3.8

Bits[31:30] – Res

This field is reserved for system software. This field is required to be zero for a command to the TPM.

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 69
October 31, 2013

Part 2: Structures

9

Trusted Platform Module Library

Interface Types

9.1

Introduction

This clause contains definitions for interface types. An interface type is type checked when it is
unmarshaled. These types are based on an underlying type that is indicated in the table title by the value
in parentheses. When an interface type is used, the base type is unmarshaled and then checked to see if
it has one of the allowed values.
9.2

TPMI_YES_NO

This interface type is used in place of a Boolean type in order to eliminate ambiguity in the handling of a
octet that conveys a single bit of information. This type only has two allowed values, YES (1) and NO (0).
NOTE

This list is not used as input to the TPM.

Table 37 — Definition of (BYTE) TPMI_YES_NO Type
Value

Description

NO

a value of 0

YES

a value of 1

#TPM_RC_VALUE

9.3

TPMI_DH_OBJECT

The TPMI_DH_OBJECT interface type is a handle that references a loaded object. The handles in this
set are used to refer to either transient or persistent object. The range of these values would change
according to the TPM implementation.
NOTE

These interface types should not be used by system software to qualify the keys produced by the TPM.
The value returned by the TPM shall be used to reference the object.

Table 38 — Definition of (TPM_HANDLE) TPMI_DH_OBJECT Type
Values

Comments

{TRANSIENT_FIRST:TRANSIENT_LAST}

allowed range for transient objects

{PERSISTENT_FIRST:PERSISTENT_LAST}

allowed range for persistent objects

+TPM_RH_NULL

the conditional value

#TPM_RC_VALUE

Page 70
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library
9.4

Part 2: Structures

TPMI_DH_PERSISTENT

The TPMI_DH_PERSISTENT interface type is a handle that references a location for a transient object.
This type is used in TPM2_EvictControl() to indicate the handle to be assigned to the persistent object.
Table 39 — Definition of (TPM_HANDLE) TPMI_DH_PERSISTENT Type
Values

Comments

{PERSISTENT_FIRST:PERSISTENT_LAST}

allowed range for persistent objects

#TPM_RC_VALUE

9.5

TPMI_DH_ENTITY

The TPMI_DH_ENTITY interface type is TPM-defined values that are used to indicate that the handle
refers to an authValue. The range of these values would change according to the TPM implementation.
Table 40 — Definition of (TPM_HANDLE) TPMI_DH_ENTITY Type <IN>
Values

Comments

TPM_RH_OWNER
TPM_RH_ENDORSEMENT
TPM_RH_PLATFORM
TPM_RH_LOCKOUT
{TRANSIENT_FIRST : TRANSIENT_LAST}

range of object handles

{PERSISTENT_FIRST : PERSISTENT_LAST}
{NV_INDEX_FIRST : NV_INDEX_LAST}
{PCR_FIRST : PCR_LAST}
+TPM_RH_NULL

conditional value

#TPM_RC_VALUE

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 71
October 31, 2013

Part 2: Structures
9.6

Trusted Platform Module Library

TPMI_DH_PCR

This interface type consists of the handles that may be used as PCR references. The upper end of this
range of values would change according to the TPM implementation.
NOTE 1

Typically, the 0 th PCR will have a handle value of zero.

NOTE 2

The handle range for PCR is defined to be the same as the handle range for PCR in previous versions of
TPM specifications.

Table 41 — Definition of (TPM_HANDLE) TPMI_DH_PCR Type <IN>
Values

Comments

{PCR_FIRST:PCR_LAST}
+TPM_RH_NULL

conditional value

#TPM_RC_VALUE

9.7

TPMI_SH_AUTH_SESSION

The TPMI_SH_AUTH_SESSION interface type is TPM-defined values that are used to indicate that the
handle refers to an authorization session.
Table 42 — Definition of (TPM_HANDLE) TPMI_SH_AUTH_SESSION Type <IN/OUT>
Values

Comments

{HMAC_SESSION_FIRST : HMAC_SESSION_LAST}

range of HMAC authorization session handles

{POLICY_SESSION_FIRST: POLICY_SESSION_LAST}

range of policy authorization session handles

+TPM_RS_PW

a password authorization

#TPM_RC_VALUE

error returned if the handle is out of range

9.8

TPMI_SH_HMAC

This interface type is used for an authorization handle when the authorization session uses an HMAC.
Table 43 — Definition of (TPM_HANDLE) TPMI_SH_HMAC Type <IN/OUT>
Values

Comments

{HMAC_SESSION_FIRST: HMAC_SESSION_LAST}

range of HMAC authorization session handles

#TPM_RC_VALUE

error returned if the handle is out of range

9.9

TPMI_SH_POLICY

This interface type is used for a policy handle when it appears in a policy command.
Table 44 — Definition of (TPM_HANDLE) TPMI_SH_POLICY Type <IN/OUT>
Values

Comments

{POLICY_SESSION_FIRST: POLICY_SESSION_LAST}

range of policy authorization session handles

#TPM_RC_VALUE

error returned if the handle is out of range

Page 72
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

9.10 TPMI_DH_CONTEXT
This type defines the handle values that may be used in TPM2_ContextSave() or TPM2_Flush().
Table 45 — Definition of (TPM_HANDLE) TPMI_DH_CONTEXT Type
Values

Comments

{HMAC_SESSION_FIRST : HMAC_SESSION_LAST}
{POLICY_SESSION_FIRST:POLICY_SESSION_LAST}
{TRANSIENT_FIRST:TRANSIENT_LAST}
#TPM_RC_VALUE

9.11 TPMI_RH_HIERARCHY
The TPMI_RH_HIERARCHY interface type is used as the type of a handle in a command when the
handle is required to be one of the hierarchy selectors.
Table 46 — Definition of (TPM_HANDLE) TPMI_RH_HIERARCHY Type
Values

Comments

TPM_RH_OWNER

Storage hierarchy

TPM_RH_PLATFORM

Platform hierarchy

TPM_RH_ENDORSEMENT

Endorsement hierarchy

+TPM_RH_NULL

no hierarchy

#TPM_RC_VALUE

response code returned when the unmarshaling of this type fails

9.12 TPMI_RH_ENABLES
The TPMI_RH_ENABLES interface type is used as the type of a handle in a command when the handle
is required to be one of the hierarchy or NV enables.
Table 47 — Definition of (TPM_HANDLE) TPMI_RH_ENABLES Type
Values

Comments

TPM_RH_OWNER

Storage hierarchy

TPM_RH_PLATFORM

Platform hierarchy

TPM_RH_ENDORSEMENT

Endorsement hierarchy

TPM_RH_PLATFORM_NV

Platform NV

+TPM_RH_NULL

no hierarchy

#TPM_RC_VALUE

response code returned when the unmarshaling of this type fails

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 73
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

9.13 TPMI_RH_HIERARCHY_AUTH
This interface type is used as the type of a handle in a command when the handle is required to be one of
the hierarchy selectors or the Lockout Authorization.
Table 48 — Definition of (TPM_HANDLE) TPMI_RH_HIERARCHY_AUTH Type <IN>
Values

Comments

TPM_RH_OWNER

Storage hierarchy

TPM_RH_PLATFORM

Platform hierarchy

TPM_RH_ENDORSEMENT

Endorsement hierarchy

TPM_RH_LOCKOUT

Lockout Authorization

#TPM_RC_VALUE

response code returned when the unmarshaling of this type fails

9.14 TPMI_RH_PLATFORM
The TPMI_RH_PLATFORM interface type is used as the type of a handle in a command when the only
allowed handle is TPM_RH_PLATFORM indicating that platformAuth is required.
Table 49 — Definition of (TPM_HANDLE) TPMI_RH_PLATFORM Type <IN>
Values

Comments

TPM_RH_PLATFORM

Platform hierarchy

#TPM_RC_VALUE

response code returned when the unmarshaling of this type fails

9.15 TPMI_RH_OWNER
This interface type is used as the type of a handle in a command when the only allowed handle is
TPM_RH_OWNER indicating that ownerAuth is required.
Table 50 — Definition of (TPM_HANDLE) TPMI_RH_OWNER Type <IN>
Values

Comments

TPM_RH_OWNER

Owner hierarchy

+TPM_RH_NULL

may allow the null handle

#TPM_RC_VALUE

response code returned when the unmarshaling of this type fails

Page 74
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

9.16 TPMI_RH_ENDORSEMENT
This interface type is used as the type of a handle in a command when the only allowed handle is
TPM_RH_ENDORSEMENT indicating that endorsementAuth is required.
Table 51 — Definition of (TPM_HANDLE) TPMI_RH_ENDORSEMENT Type <IN>
Values

Comments

TPM_RH_ENDORSEMENT

Endorsement hierarchy

+TPM_RH_NULL

may allow the null handle

#TPM_RC_VALUE

response code returned when the unmarshaling of this type fails

9.17 TPMI_RH_PROVISION
The TPMI_RH_PROVISION interface type is used as the type of the handle in a command when the only
allowed handles are either TPM_RH_OWNER or TPM_RH_PLATFORM indicating that either
platformAuth or ownerAuth are allowed.
In most cases, either platformAuth or ownerAuth may be used to authorize the commands used for
management of the resources of the TPM and this interface type will be used.
Table 52 — Definition of (TPM_HANDLE) TPMI_RH_PROVISION Type <IN>
Value

Comments

TPM_RH_OWNER

handle for ownerAuth

TPM_RH_PLATFORM

handle for platformAuth

#TPM_RC_VALUE

response code returned when the unmarshaling of this type fails

9.18 TPMI_RH_CLEAR
The TPMI_RH_CLEAR interface type is used as the type of the handle in a command when the only
allowed handles are either TPM_RH_LOCKOUT or TPM_RH_PLATFORM indicating that either
platformAuth or lockoutAuth are allowed.
This interface type is normally used for performing or controlling TPM2_Clear().
Table 53 — Definition of (TPM_HANDLE) TPMI_RH_CLEAR Type <IN>
Value

Comments

TPM_RH_LOCKOUT

handle for lockoutAuth

TPM_RH_PLATFORM

handle for platformAuth

#TPM_RC_VALUE

response code returned when the unmarshaling of this type fails

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 75
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

9.19 TPMI_RH_NV_AUTH
This interface type is used to identify the source of the authorization for access to an NV location. The
handle value of a TPMI_RH_NV_AUTH shall indicate that the authorization value is either platformAuth,
ownerAuth, or the authValue. This type is used in the commands that access an NV Index (commands of
the form TPM2_NV_xxx) other than TPM2_NV_DefineSpace() and TPM2_NV_UndefineSpace().
Table 54 — Definition of (TPM_HANDLE) TPMI_RH_NV_AUTH Type <IN>
Value

Comments

TPM_RH_PLATFORM

platformAuth is allowed

TPM_RH_OWNER

ownerAuth is allowed

{NV_INDEX_FIRST:NV_INDEX_LAST}

range for NV locations

#TPM_RC_VALUE

response code returned when unmarshaling of this type fails

9.20 TPMI_RH_LOCKOUT
The TPMI_RH_LOCKOUT interface type is used as the type of a handle in a command when the only
allowed handle is TPM_RH_LOCKOUT indicating that lockoutAuth is required.
Table 55 — Definition of (TPM_HANDLE) TPMI_RH_LOCKOUT Type <IN>
Value

Comments

TPM_RH_LOCKOUT
#TPM_RC_VALUE

response code returned when the unmarshaling of this type fails

9.21 TPMI_RH_NV_INDEX
This interface type is used to identify an NV location. This type is used in the NV commands.
Table 56 — Definition of (TPM_HANDLE) TPMI_RH_NV_INDEX Type <IN/OUT>
Value

Comments

{NV_INDEX_FIRST:NV_INDEX_LAST}

Range of NV Indexes

#TPM_RC_VALUE

error returned if the handle is out of range

Page 76
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

9.22 TPMI_ALG_HASH
A TPMI_ALG_HASH is an interface type of all the hash algorithms implemented on a specific TPM. Table
57 is a list of the hash algorithms that have an algorithm ID assigned by the TCG and does not indicate
the algorithms that will be accepted by a TPM.
NOTE

An implementation would modify this table according to the implemented algorithms, changing the values
that are accepted as hash algorithms.

Table 57 — Definition of (TPM_ALG_ID) TPMI_ALG_HASH Type
Values

Comments

TPM_ALG_SHA1

example

TPM_ALG_SHA256

example

TPM_ALG_SM3_256

example

TPM_ALG_SHA384

example

TPM_ALG_SHA512

example

+TPM_ALG_NULL
#TPM_RC_HASH

9.23 TPMI_ALG_ASYM (Asymmetric Algorithms)
A TPMI_ALG_ASYM is an interface type of all the asymmetric algorithms implemented on a specific TPM.
Table 58 lists each of the asymmetric algorithms that have an algorithm ID assigned by the TCG.
Table 58 — Definition of (TPM_ALG_ID) TPMI_ALG_ASYM Type
Values

Comments

TPM_ALG_RSA
TPM_ALG_ECC
+TPM_ALG_NULL
#TPM_RC_ASYMMETRIC

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 77
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

9.24 TPMI_ALG_SYM (Symmetric Algorithms)
A TPMI_ALG_SYM is an interface type of all the symmetric algorithms that have an algorithm ID assigned
by the TCG and are implemented on the TPM.
The list in the table below is illustrative and will change according to the implementation. The validation
code will only accept the subset of algorithms implemented on a TPM.
NOTE

The validation code produced by an example script will produce a CASE statement with a case for each of
the values in the “Values” column. The case for a value is delimited by a #ifdef/#endif pair so that if the
algorithm is not implemented on the TPM, then the case for the algorithm is not generated, and use of the
algorithm will cause a TPM error (TPM_RC_SYMMETRIC).

Table 59 — Definition of (TPM_ALG_ID) TPMI_ALG_SYM Type
Values

Comments

TPM_ALG_AES

example

TPM_ALG_SM4

example

TPM_ALG_XOR

example

+TPM_ALG_NULL

required to be present in all versions of this table

#TPM_RC_SYMMETRIC

9.25 TPMI_ALG_SYM_OBJECT
A TPMI_ALG_SYM_OBJECT is an interface type of all the TCG-defined symmetric algorithms that may
be used as companion symmetric encryption algorithm for an asymmetric object. All algorithms in this list
shall be block ciphers usable in Cipher Feedback (CFB).
Table 60 is illustrative. It would be modified to indicate the algorithms of the TPM.
NOTE

TPM_ALG_XOR is not allowed in this list.

Table 60 — Definition of (TPM_ALG_ID) TPMI_ALG_SYM_OBJECT Type
Values

Comments

TPM_ALG_AES

example

TPM_ALG_SM4

example

+TPM_ALG_NULL

required to be present in all versions of this table

#TPM_RC_SYMMETRIC

Page 78
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

9.26 TPMI_ALG_SYM_MODE
A TPMI_ALG_SYM_MODE is an interface type of all the TCG-defined block-cipher modes of operation.
This version of the table is not expected to be the table checked by the validation code. Rather, the table
would be replaced by one containing the algorithms implemented on the TPM and that the values in that
table would be checked by the input validation code.
Table 61 — Definition of (TPM_ALG_ID) TPMI_ALG_SYM_MODE Type
Values

Comments

TPM_ALG_CTR

IV will be determined by use.
If the outside provides the nonce and initial counter, then the caller can
know what IV to provide for chaining.

TPM_ALG_OFB

XOR last cipher text block with last plaintext to create IV for next block

TPM_ALG_CBC

IV will be determined by use.
indefinite chaining using previous output block as IV for next block

TPM_ALG_CFB

shall be implemented in all TPM compliant with this specification
IV will be determined by use.
indefinite chaining using previous cipher text as IV

TPM_ALG_ECB

no IV or chaining value required

+TPM_ALG_NULL
#TPM_RC_MODE

9.27 TPMI_ALG_KDF (Key and Mask Generation Functions)
A TPMI_ALG_KDF is an interface type of all the key derivation functions implemented on a specific TPM.
Table 62 is exemplary and would change based on the algorithms implemented in a TPM.
Table 62 — Definition of (TPM_ALG_ID) TPMI_ALG_KDF Type
Values

Comments

TPM_ALG_MGF1
TPM_ALG_KDF1_SP800_108
TPM_ALG_KDF1_SP800_56a
TPM_ALG_KDF2
+TPM_ALG_NULL
#TPM_RC_KDF

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 79
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

9.28 TPMI_ALG_SIG_SCHEME
This is the definition of the interface type for a signature scheme. This table would change according to
the algorithms implemented on the TPM.
Table 63 — Definition of (TPM_ALG_ID) TPMI_ALG_SIG_SCHEME Type
Values

Comments

TPM_ALG_RSASSA

requires that RSA be implemented

TPM_ALG_RSAPSS

requires that RSA be implemented

TPM_ALG_ECDSA

requires that ECC be implemented

TPM_ALG_ECDAA

requires that ECC and ECDAA be implemented

TPM_ALG_ECSCHNORR
TPM_ALG_SM2

requires that ECC be implemented

TPM_ALG_HMAC

present on all TPM

+TPM_ALG_NULL
#TPM_RC_SCHEME

response code when a signature scheme is not correct

9.29 TPMI_ECC_KEY_EXCHANGE
This is the definition of the interface type for an ECC key exchange scheme. This table would change
according to the algorithms implemented on the TPM.
Table 64 — Definition of (TPM_ALG_ID) TPMI_ECC_KEY_EXCHANGE Type
Values

Comments

TPM_ALG_ECDH

used for single and two phase key exchange

TPM_ALG_ECMQV
TPM_ALG_SM2

requires that ECC be implemented

+TPM_ALG_NULL
#TPM_RC_SCHEME

response code when a key exchange scheme is not correct

9.30 TPMI_ST_COMMAND_TAG
This interface type is used for the command tags.
The response code for a bad command tag has the same value as the TPM 1.2 response code
(TPM_BAD_TAG). This value is used in case the software is not compatible with this specification and an
unexpected response code might have unexpected side effects.
Table 65 — Definition of (TPM_ST) TPMI_ST_COMMAND_TAG Type
Values

Comments

TPM_ST_NO_SESSIONS
TPM_ST_SESSIONS
#TPM_RC_BAD_TAG

Page 80
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

10 Structure Definitions
10.1 TPMS_ALGORITHM_DESCRIPTION
This structure is a return value for a TPM2_GetCapability() that reads the installed algorithms.
Table 66 — Definition of TPMS_ALGORITHM_DESCRIPTION Structure <OUT>
Parameter

Type

Description

alg

TPM_ALG_ID

an algorithm

attributes

TPMA_ALGORITHM

the attributes of the algorithm

10.2 Hash/Digest Structures
10.2.1 TPMU_HA (Hash)
A TPMU_HA is a union of all the hash algorithms implemented on a TPM. Table 67 is exemplary and
would change based on the algorithms implemented in a TPM.
NOTE

If processed by an automated tool, each entry of the table should be qualified (with #ifdef/#endif) so that if
the hash algorithm is not implemented on the TPM, the parameter associated with that hash is not
present. This will keep the union from being larger than the largest digest of a hash implemented on that
TPM.

Table 67 — Definition of TPMU_HA Union <IN/OUT, S>
Parameter

Type

Selector

sha1 [SHA1_DIGEST_SIZE]

BYTE

TPM_ALG_SHA1

sha256 [SHA256_DIGEST_SIZE]

BYTE

TPM_ALG_SHA256

sm3_256 [SM3_256_DIGEST_SIZE]

BYTE

TPM_ALG_SM3_256

sha384 [SHA384_DIGEST_SIZE]

BYTE

TPM_ALG_SHA384

sha512 [SHA512_DIGEST_SIZE]

BYTE

TPM_ALG_SHA512

null

Family “2.0”
Level 00 Revision 00.99

Description

TPM_ALG_NULL

Published
Copyright © TCG 2006-2013

Page 81
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

10.2.2 TPMT_HA
Table 68 shows the basic hash-agile structure used in this specification. To handle hash agility, this
structure uses the hashAlg parameter to indicate the algorithm used to compute the digest and, by
implication, the size of the digest.
When transmitted, only the number of octets indicated by hashAlg is sent.
NOTE

In the exemplary code, when a TPMT_HA is allocated, the digest field is large enough to support the
largest hash algorithm in the TPMU_HA union.

Table 68 — Definition of TPMT_HA Structure <IN/OUT>
Parameter

Type

Description

hashAlg

+TPMI_ALG_HASH

selector of the hash contained in the digest that implies the
size of the digest
NOTE

[hashAlg] digest

TPMU_HA

The leading “+” on the type indicates that this structure
should pass an indication to the unmarshaling function for
TPMI_ALG_HASH so that TPM_ALG_NULL will be
allowed if a use of a TPMT_HA allows TPM_ALG_NULL.

the digest data

10.3 Sized Buffers
10.3.1 Introduction
The “TPM2B_” prefix is used for a structure that has a size field followed by a data buffer with the
indicated number of octets. The size field is 16 bits.
When the type of the second parameter in a TPM2B_ structure is BYTE, the TPM shall unmarshal the
indicated number of octets, which may be zero.
When the type of the second parameter in the TPM2B_ structure is not BYTE, the value of the size field
shall either be zero indicating that no structure is to be unmarshaled; or it shall be identical to the number
of octets unmarshaled for the second parameter.
NOTE 1

If the TPM2B_ defines a structure and not an array of octets, then the structure is self-describing and the
TPM will be able to determine how many octets are in the structure when it is unmarshaled. If that number
of octets is not equal to the size parameter, then it is an error.

NOTE 2

The reason that a structure may be put into a TPM2B_ is that the parts of the structure may be handled
as separate opaque blocks by the application/system software. Rather than require that all of the
structures in a command or response be marshaled or unmarshaled sequentially, the size field allows the
structure to be manipulated as an opaque block. Placing a structure in a TPM2B_ also makes it possible
to use parameter encryption on the structure.

If a TPM2B_ is encrypted, the TPM will encrypt/decrypt the data field of the TPM2B_ but not the size
parameter. The TPM will encrypt/decrypt the number of octets indicated by the size field.
NOTE 3

In the reference implementation, a TPM2B type is defined that is a 16-bit size field followed by a single
byte of data. The TPM2B_ is then defined as a union that contains a TPM2B (union member ‘b’) and the
structure in the definition table (union member ‘t’). This union is used for internally generated structures
so that there is a way to define a structure of the correct size (forced by the ‘t’ member) while giving a way
to pass the structure generically as a ‘b’. Most function calls use the 't' member so that the compiler will
generate a warning if there is a type error (a TPM2B_ of the wrong type). Having the type checked helps
avoid many issues with buffer overflow caused by a too small buffer being passed to a function.

Page 82
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

10.3.2 TPM2B_DIGEST
This structure is used for a sized buffer that cannot be larger than the largest digest produced by any
hash algorithm implemented on the TPM.
As with all sized buffers, the size is checked to see if it is within the prescribed range. If not, the response
code is TPM_RC_SIZE.
NOTE

For any structure, like the one below, that contains an implied size check, it is implied that TPM_RC_SIZE
is a possible response code and the response code will not be listed in the table.

Table 69 — Definition of TPM2B_DIGEST Structure
Parameter

Type

Description

size

UINT16

size in octets of the buffer field; may be 0

buffer[size]{:sizeof(TPMU_HA)}

BYTE

the buffer area that can be no larger than a digest

10.3.3 TPM2B_DATA
This structure is used for a data buffer that is required to be no larger than the size of the Name of an
object. This size limit includes the algorithm ID of the hash and the hash data.
Table 70 — Definition of TPM2B_DATA Structure
Parameter

Type

Description

size

UINT16

size in octets of the buffer field; may be 0

buffer[size]{:sizeof(TPMT_HA)}

BYTE

the buffer area that contains the algorithm ID and the
digest

10.3.4 TPM2B_NONCE
Table 71 — Definition of Types for TPM2B_NONCE
Type

Name

Description

TPM2B_DIGEST

TPM2B_NONCE

size limited to the same as the digest structure

10.3.5 TPM2B_AUTH
This structure is used for an authorization value and limits an authValue to being no larger than the
largest digest produced by a TPM. In order to ensure consistency within an object, the authValue may be
no larger than the size of the digest produced by the object’s nameAlg. This ensures that any TPM that
can load the object will be able to handle the authValue of the object.
Table 72 — Definition of Types for TPM2B_AUTH
Type

Name

Description

TPM2B_DIGEST

TPM2B_AUTH

size limited to the same as the digest structure

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 83
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

10.3.6 TPM2B_OPERAND
This type is a sized buffer that can hold an operand for a comparison with an NV Index location. The
maximum size of the operand is implementation dependent but a TPM is required to support an operand
size that is at least as big as the digest produced by any of the hash algorithms implemented on the TPM.
Table 73 — Definition of Types for TPM2B_OPERAND
Type

Name

Description

TPM2B_DIGEST

TPM2B_OPERAND

size limited to the same as the digest structure

10.3.7 TPM2B_EVENT
This type is a sized buffer that can hold event data.
Table 74 — Definition of TPM2B_EVENT Structure
Parameter

Type

Description

size

UINT16

size of the operand buffer

buffer [size] {:1024}

BYTE

the operand

10.3.8 TPM2B_MAX_BUFFER
This type is a sized buffer that can hold a maximally sized buffer for commands that use a large data
buffer
such
as
TPM2_PCR_Event(),
TPM2_Hash(),
TPM2_SequenceUpdate(),
or
TPM2_FieldUpgradeData().
NOTE

The above list is not comprehensive and other commands may use this buffer type.

Table 75 — Definition of TPM2B_MAX_BUFFER Structure
Parameter

Type

Description

size

UINT16

size of the buffer

buffer [size] {:MAX_DIGEST_BUFFER}

BYTE

the operand
NOTE
MAX_DIGEST_BUFFER
is
TPMdependent but is required to be at least 1,024.

10.3.9 TPM2B_MAX_NV_BUFFER
This type is a sized buffer that can hold a maximally sized buffer for NV data commands such as
TPM2_NV_Read(), TPM2_NV_Write(), and TPM2_NV_Certify().
Table 76 — Definition of TPM2B_MAX_NV_BUFFER Structure
Parameter

Type

Description

size

UINT16

size of the buffer

buffer [size] {:MAX_NV_BUFFER_SIZE}

BYTE

the operand
NOTE
MAX_NV_BUFFER_SIZE
dependent

Page 84
October 31, 2013

Published
Copyright © TCG 2006-2013

is

TPM-

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

10.3.10 TPM2B_TIMEOUT
This TPM-dependent structure is used to provide the timeout value for an authorization.
Table 77 — Definition of TPM2B_TIMEOUT Structure <IN/OUT>
Parameter

Type

Description

size

UINT16

size of the timeout value
This value is fixed for a TPM implementation.

buffer [size] {:sizeof(UINT64)}

BYTE

the timeout value

10.3.11 TPM2B_IV
This structure is used for passing an initial value for a symmetric block cipher to or from the TPM. The
size is set to be the largest block size of any implemented symmetric cipher implemented on the TPM.
Table 78 — Definition of TPM2B_IV Structure <IN/OUT>
Parameter

Type

Description

size

UINT16

size of the timeout value
This value is fixed for a TPM implementation.

buffer [size] {:MAX_SYM_BLOCK_SIZE}

BYTE

the timeout value

10.4 Names
10.4.1 Introduction
The Name of an entity is used in place of the handle in authorization computations. The substitution
occurs in cpHash and policyHash computations.
For an entity that is defined by a public area (objects and NV Indexes), the Name is the hash of the public
structure that defines the entity. The hash is done using the nameAlg of the entity.
NOTE

For an object, a TPMT_PUBLIC defines the entity. For an NV Index, a TPMS_NV_PUBLIC defines the
entity.

For entities not defined by a public area, the Name is the handle that is used to refer to the entity.
10.4.2 TPMU_NAME
Table 79 — Definition of TPMU_NAME Union <>
Parameter

Type

digest

TPMT_HA

when the Name is a digest

handle

TPM_HANDLE

when the Name is a handle

Family “2.0”
Level 00 Revision 00.99

Selector

Description

Published
Copyright © TCG 2006-2013

Page 85
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

10.4.3 TPM2B_NAME
This buffer holds a Name for any entity type.
The type of Name in the structure is determined by context and the size parameter. If size is four, then
the Name is a handle. If size is zero, then no Name is present. Otherwise, the size shall be the size of a
TPM_ALG_ID plus the size of the digest produced by the indicated hash algorithm.
Table 80 — Definition of TPM2B_NAME Structure
Parameter

Type

Description

size

UINT16

size of the Name structure

name[size]{:sizeof(TPMU_NAME)}

BYTE

the Name structure

10.5 PCR Structures
10.5.1 TPMS_PCR_SELECT
This structure provides a standard method of specifying a list of PCR.
PCR numbering starts at zero.
PcrSelect is an array of octets. The octet containing the bit corresponding to a specific PCR is found by
dividing the PCR number by 8.
EXAMPLE 1

The bit in pcrSelect corresponding to PCR 19 is in pcrSelect [2] (19/8 = 2).

The least significant bit in a octet is bit number 0. The bit in the octet associated with a PCR is the
remainder after division by 8.
EXAMPLE 2

The bit in pcrSelect [2] corresponding to PCR 19 is bit 3 (19 mod 8). If sizeofSelect is 3, then the
pcrSelect array that would specify PCR 19 and no other PCR is 00 00 08 16.

Each bit in pcrSelect indicates whether the corresponding PCR is selected (1) or not (0). If the pcrSelect
is all zero bits, then no PCR is selected.
SizeofSelect indicates the number of octets in pcrSelect. The allowable values for sizeofSelect is
determined by the number of PCR required by the applicable platform-specific specification and the
number of PCR implemented in the TPM. The minimum value for sizeofSelect is:
PCR_SELECT_MIN ≔ (PLATFORM_PCR + 7) / 8

(1)

where
PLATFORM_PCR

the number of PCR required by the platform-specific specification

The maximum value for sizeofSelect is:
PCR_SELECT_MAX ≔ (IMPLEMENTATION_PCR + 7) / 8

(2)

where
IMPLEMENTATION_PCR

Page 86
October 31, 2013

the number of PCR implemented on the TPM

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

If the TPM implements more PCR than there are bits in pcrSelect, the additional PCR are not selected.
EXAMPLE 3

If the applicable platform-specific specification requires that the TPM have a minimum of 24 PCR but the
TPM implements 32, then a PCR select of 3 octets would imply that PCR 24-31 are not selected.

Table 81 — Definition of TPMS_PCR_SELECT Structure
Parameter

Type

Description

sizeofSelect {PCR_SELECT_MIN:}

UINT8

the size in octets of the pcrSelect array

pcrSelect [sizeofSelect] {:PCR_SELECT_MAX}

BYTE

the bit map of selected PCR

#TPM_RC_VALUE

10.5.2 TPMS_PCR_SELECTION
Table 82 — Definition of TPMS_PCR_SELECTION Structure
Parameter

Type

Description

hash

TPMI_ALG_HASH

the hash algorithm associated with the
selection

sizeofSelect {PCR_SELECT_MIN:}

UINT8

the size in octets of the pcrSelect array

pcrSelect [sizeofSelect] {:PCR_SELECT_MAX}

BYTE

the bit map of selected PCR

#TPM_RC_VALUE

10.6 Tickets
10.6.1 Introduction
Tickets are evidence that the TPM has previously processed some information. A ticket is an HMAC over
the data using a secret key known only to the TPM. A ticket is a way to expand the state memory of the
TPM. A ticket is only usable by the TPM that produced it.
The formulations for tickets shown in this clause are to be used by a TPM that is compliant with this
specification.
The method of creating the ticket data is:

HMACcontexAlg(proof, (ticketType || param { || param {…}))

(3)

where

HMACcontexAlg()

an HMAC using the hash used for context integrity

proof

a TPM secret value (depends on hierarchy)

ticketType

a value to differentiate the tickets

param

one or more values that were checked by the TPM

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 87
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

The proof value used for each hierarchy is shown in Table 83.
Table 83 — Values for proof Used in Tickets
Hierarchy

proof

Description

None

Empty Buffer

Platform

phProof

a value that changes with each change of the PPS

Owner

shProof

a value that changes with each change of the SPS

Endorsement

ehProof

a value that changes with each change of either the EPS or SPS

The format for a ticket is shown in Table 84. This is a template for the tickets shown in the remainder of
this clause.
Table 84 — General Format of a Ticket
Parameter

Type

Description

tag

TPM_ST

structure tag indicating the type of the ticket

hierarchy

TPMI_RH_HIERARCHY+

the hierarchy of the proof value

digest

TPM2B_DIGEST

the HMAC over the ticket-specific data

10.6.2 A NULL Ticket
When a command requires a ticket and no ticket is available, the caller is required to provide a structure
with a ticket tag that is correct for the context. The hierarchy shall be set to TPM_RH_NULL, and digest
shall be the Empty Buffer (a buffer with a size field of zero). This construct is the NULL Ticket. When a
response indicates that a ticket is returned, the TPM may return a NULL Ticket.
NOTE

Because each use of a ticket requires that the structure tag for the ticket be appropriate for the use, t here
is no single representation of a NULL Ticket that will work in all circumstances. Minimally, a NULL ticket
will have a structure type that is appropriate for the context.

Page 88
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

10.6.3 TPMT_TK_CREATION
This ticket is produced by TPM2_Create() or TPM2_CreatePrimary(). It is used to bind the creation data
to the object to which it applies. The ticket is computed by

HMACcontextAlg(proof, (TPM_ST_CREATION || name || HnameAlg(TPMS_CREATION_DATA)))

(4)

where

HMACcontextAlg()

an HMAC using the context integrity hash algorithm

proof

a TPM secret value associated with the hierarchy associated with name

TPM_ST_CREATION

a value used to ensure that the ticket is properly used

name

the Name of the object to which the creation data is to be associated

HnameAlg()

hash using the nameAlg of the created object

TPMS_CREATION_DATA the creation data structure associated with name
Table 85 — Definition of TPMT_TK_CREATION Structure
Parameter

Type

Description

tag {TPM_ST_CREATION}

TPM_ST

ticket structure tag
error returned when tag is not TPM_ST_CREATION

#TPM_RC_TAG
hierarchy

TPMI_RH_HIERARCHY+

the hierarchy containing name

digest

TPM2B_DIGEST

This shall be the HMAC produced using a proof value
of hierarchy.

EXAMPLE

A NULL Creation Ticket is the tuple <TPM_ST_CREATION, TPM_RH_NULL, 0x0000>.

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 89
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

10.6.4 TPMT_TK_VERIFIED
This ticket is produced by TPM2_VerifySignature(). This formulation is used for multiple ticket uses. The
ticket provides evidence that the TPM has validated that a digest was signed by a key with the Name of
keyName. The ticket is computed by

HMACcontextAlg(proof, (TPM_ST_VERIFIED || digest || keyName))

(5)

where

HMACcontextAlg()

an HMAC using the context integrity hash

proof

a TPM secret value associated with the hierarchy associated with

TPM_ST_VERIFIED

a value used to ensure that the ticket is properly used

digest

the signed digest

keyName

Name of the key that signed digest

keyName

Table 86 — Definition of TPMT_TK_VERIFIED Structure
Parameter

Type

Description

tag {TPM_ST_VERIFIED}

TPM_ST

ticket structure tag
error returned when tag is not TPM_ST_VERIFIED

#TPM_RC_TAG
hierarchy

TPMI_RH_HIERARCHY+

the hierarchy containing keyName

digest

TPM2B_DIGEST

This shall be the HMAC produced using a proof value
of hierarchy.

EXAMPLE

A NULL Verified Ticket is the tuple <TPM_ST_VERIFIED, TPM_RH_NULL, 0x0000>.

Page 90
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

10.6.5 TPMT_TK_AUTH
This ticket is produced by TPM2_PolicySigned() and TPM2_PolicySecret() when the authorization has an
expiration time. The ticket is computed by

HMACcontextAlg(proof, (TPM_ST_AUTH_xxx || timeout || cpHash || policyRef || keyName))

(6)

where

HMACcontextAlg()

an HMAC using the context integrity hash

proof

a TPM secret value associated with the hierarchy of the key associated
with keyName

TPM_ST_AUTH_xxx

either TPM_ST_AUTH_SIGNED or TPM_ST_AUTH_SECRET; used to
ensure that the ticket is properly used

timeout

implementation-specific value indicating when the authorization expires

cpHash

optional hash of the authorized command

policyRef

optional reference to a policy value

keyName

Name of the key that signed the authorization
Table 87 — Definition of TPMT_TK_AUTH Structure

Parameter

Type

Description

tag {TPM_ST_AUTH_SIGNED, TPM_ST_AUTH_SECRET} TPM_ST

ticket structure tag

#TPM_RC_TAG

error returned when tag is
not TPM_ST_AUTH

hierarchy

TPMI_RH_HIERARCHY+

the hierarchy of the object
used to produce the ticket

digest

TPM2B_DIGEST

This shall be the HMAC
produced using a proof
value of hierarchy.

EXAMPLE

A NULL Auth Ticket is the tuple <TPM_ST_AUTH_SIGNED, TPM_RH_NULL, 0x0000> or the tuple
<TPM_ST_AUTH_SIGNED, TPM_RH_NULL, 0x0000>

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 91
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

10.6.6 TPMT_TK_HASHCHECK
This ticket is produced by TPM2_SequenceComplete() when the message that was digested did not start
with TPM_GENERATED_VALUE. The ticket is computed by

HMACcontexAlg(proof, (TPM_ST_HASHCHECK || digest))

(7)

where

HMACcontexAlg ()

an HMAC using the context integrity hash

proof

a TPM secret value associated with the hierarchy indicated by the
command

TPM_ST_HASHCHECK

a value used to ensure that the ticket is properly used

digest

the digest of the data
Table 88 — Definition of TPMT_TK_HASHCHECK Structure

Parameter

Type

Description

tag {TPM_ST_HASHCHECK}

TPM_ST

ticket structure tag

#TPM_RC_TAG

error returned when is not TPM_ST_HASHCHECK

hierarchy

TPMI_RH_HIERARCHY+

the hierarchy

digest

TPM2B_DIGEST

This shall be the HMAC produced using a proof value
of hierarchy.

10.7 Property Structures
10.7.1 TPMS_ALG_PROPERTY
This structure is used to report the properties of an algorithm identifier. It is returned in response to a
TPM2_GetCapability() with capability = TPM_CAP_ALG.
Table 89 — Definition of TPMS_ALG_PROPERTY Structure <OUT>
Parameter

Type

Description

alg

TPM_ALG_ID

an algorithm identifier

algProperties

TPMA_ALGORITHM

the attributes of the algorithm

10.7.2 TPMS_TAGGED_PROPERTY
This structure is used to report the properties that are UINT32 values. It is returned in response to a
TPM2_GetCapability().
Table 90 — Definition of TPMS_TAGGED_PROPERTY Structure <OUT>
Parameter

Type

Description

property

TPM_PT

a property identifier

value

UINT32

the value of the property

Page 92
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

10.7.3 TPMS_TAGGED_PCR_SELECT
This structure is used in TPM2_GetCapability() to return the attributes of the PCR.
Table 91 — Definition of TPMS_TAGGED_PCR_SELECT Structure <OUT>
Parameter

Type

Description

tag

TPM_PT

the property identifier

sizeofSelect {PCR_SELECT_MIN:}

UINT8

the size in octets of the pcrSelect array

pcrSelect [sizeofSelect] {:PCR_SELECT_MAX}

BYTE

the bit map of PCR with the identified property

10.8 Lists
10.8.1 TPML_CC
A list of command codes may be input to the TPM or returned by the TPM depending on the command.
Table 92 — Definition of TPML_CC Structure
Parameter

Type

Description

count

UINT32

number of commands in the commandCode list;
may be 0

commandCodes[count]{:MAX_CAP_CC}

TPM_CC

a list of command codes
The maximum only applies to a command code
list in a command. The response size is limited
only by the size of the parameter buffer.

#TPM_RC_SIZE

Family “2.0”
Level 00 Revision 00.99

response code when count is greater than the
maximum allowed list size

Published
Copyright © TCG 2006-2013

Page 93
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

10.8.2 TPML_CCA
This list is only used in TPM2_GetCapability(capability = TPM_CAP_COMMANDS).
The values in the list are returned in commandIndex order with vendor-specific commands returned after
other commands. Because of the other attributes, the commands may not be returned in strict numerical
order. They will be in commandIndex order.
Table 93 — Definition of TPML_CCA Structure <OUT>
Parameter

Type

Description

count

UINT32

number of values in the commandAttributes list;
may be 0

commandAttributes[count]{:MAX_CAP_CC}

TPMA_CC

a list of command codes attributes

10.8.3 TPML_ALG
This list is returned by TPM2_IncrementalSelfTest().
Table 94 — Definition of TPML_ALG Structure
Parameter

Type

Description

count

UINT32

number of algorithms in the algorithms list; may be 0

algorithms[count]{:MAX_ALG_LIST_SIZE}

TPM_ALG_ID a list of algorithm IDs
The maximum only applies to an algorithm list in a
command. The response size is limited only by the
size of the parameter buffer.
response code when count is greater than the
maximum allowed list size

#TPM_RC_SIZE

10.8.4 TPML_HANDLE
This structure is used when the TPM returns a list of loaded handles when the capability in
TPM2_GetCapability() is TPM_CAP_HANDLE.
NOTE

This list is not used as input to the TPM.

Table 95 — Definition of TPML_HANDLE Structure <OUT>
Name

Type

Description

count

UINT32

the number of handles in the list
may have a value of 0

handle[count]{: MAX_CAP_HANDLES}

TPM_HANDLE

an array of handles

#TPM_RC_SIZE

Page 94
October 31, 2013

response code when count is greater than the
maximum allowed list size

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

10.8.5 TPML_DIGEST
This list is used to convey a list of digest values. This type is used in TPM2_PolicyOR() and in
TPM2_PCR_Read().
Table 96 — Definition of TPML_DIGEST Structure
Parameter

Type

Description

count {2:}

UINT32

number of digests in the list, minimum is two for
TPM2_PolicyOR().

digests[count]{:8}

TPM2B_DIGEST a list of digests
For TPM2_PolicyOR(), all digests will have been
computed using the digest of the policy session. For
TPM2_PCR_Read(), each digest will be the size of the
digest for the bank containing the PCR.

#TPM_RC_SIZE

response code when count is not at least two or is
greater than eight

10.8.6 TPML_DIGEST_VALUES
This list is used to convey a list of digest values. This type is returned by TPM2_Event() and
TPM2_SequenceComplete() and is an input for TPM2_PCR_Extend().
NOTE 1

This construct limits the number of hashes in the list to the number of digests implemented in the TPM
rather than the number of PCR banks. This allows extra values to appear in a call t o
TPM2_PCR_Extend().

NOTE 2

The digest for an unimplemented hash algorithm may not be in a list because the TPM may not recognize
the algorithm as being a hash and it may not know the digest size.

Table 97 — Definition of TPML_DIGEST_VALUES Structure
Parameter

Type

Description

count

UINT32

number of digests in the list

digests[count]{:HASH_COUNT}

TPMT_HA

a list of tagged digests
response code when count is greater than the possible
number of banks

#TPM_RC_SIZE

10.8.7 TPM2B_DIGEST_VALUES
Digest list in a sized buffer. This list is returned by TPM2_PCR_SequenceComplete().
Table 98 — Definition of TPM2B_DIGEST_VALUES Structure
Parameter

Type

Description

size

UINT16

size of the operand buffer

buffer [size] {:sizeof(TPML_DIGEST_VALUES)}

BYTE

the operand

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 95
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

10.8.8 TPML_PCR_SELECTION
This list is used to indicate the PCR that are included in a selection when more than one PCR value may
be selected.
This structure is an input parameter to TPM2_PolicyPCR() to indicate the PCR that will be included in the
digest of PCR for the authorization. The structure is used in TPM2_PCR_Read() command to indicate the
PCR values to be returned and in the response to indicate which PCR are included in the list of returned
digests. The structure is an output parameter from TPM2_Create() and indicates the PCR used in the
digest of the PCR state when the object was created. The structure is also contained in the attestation
structure of TPM2_Quote().
When this structure is used to select PCR to be included in a digest, the selected PCR are concatenated
to create a “message” containing all of the PCR, and then the message is hashed using the contextspecific hash algorithm.
Table 99 — Definition of TPML_PCR_SELECTION Structure
Parameter

Type

Description

count

UINT32

number of selection structures
A value of zero is allowed.

pcrSelections[count]{:HASH_COUNT}

TPMS_PCR_SELECTION

list of selections
response code when count is greater
than the possible number of banks

#TPM_RC_SIZE

10.8.9 TPML_ALG_PROPERTY
This list is used to report on a list of algorithm attributes. It is returned in a TPM2_GetCapability().
Table 100 — Definition of TPML_ALG_PROPERTY Structure <OUT>
Parameter

Type

Description

count

UINT32

number of algorithm properties structures
A value of zero is allowed.

algProperties[count]{:MAX_CAP_ALGS}

TPMS_ALG_PROPERTY

list of properties

10.8.10 TPML_TAGGED_TPM_PROPERTY
This list is used to report on a list of properties that are TPMS_TAGGED_PROPERTY values. It is
returned by a TPM2_GetCapability().
Table 101 — Definition of TPML_TAGGED_TPM_PROPERTY Structure <OUT>
Parameter

Type

Description

count

UINT32

number of properties
A value of zero is allowed.

tpmProperty[count]{:MAX_TPM_PROPERTIES} TPMS_TAGGED_PROPERTY

Page 96
October 31, 2013

Published
Copyright © TCG 2006-2013

an array of tagged properties

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

10.8.11 TPML_TAGGED_PCR_PROPERTY
This list is used to report on a list of properties that are TPMS_PCR_SELECT values. It is returned by a
TPM2_GetCapability().
Table 102 — Definition of TPML_TAGGED_PCR_PROPERTY Structure <OUT>
Parameter

Type

Description

count

UINT32

number of properties
A value of zero is allowed.

pcrProperty[count]{:MAX_PCR_PROPERTIES}

TPMS_TAGGED_PCR_SELECT a tagged PCR selection

10.8.12 TPML_ECC_CURVE
This list is used to report the ECC curve ID values supported by the TPM. It is returned by a
TPM2_GetCapability().
Table 103 — Definition of {ECC} TPML_ECC_CURVE Structure <OUT>
Parameter

Type

Description

count

UINT32

number of curves
A value of zero is allowed.

eccCurves[count]{:MAX_ECC_CURVES}

TPM_ECC_CURVE

array of ECC curve identifiers

10.9 Capabilities Structures
10.9.1 TPMU_CAPABILITIES
Table 104 — Definition of TPMU_CAPABILITIES Union <OUT>
Parameter

Type

Selector

algorithms

TPML_ALG_PROPERTY

TPM_CAP_ALGS

handles

TPML_HANDLE

TPM_CAP_HANDLES

command

TPML_CCA

TPM_CAP_COMMANDS

ppCommands

TPML_CC

TPM_CAP_PP_COMMANDS

auditCommands

TPML_CC

TPM_CAP_AUDIT_COMMANDS

assignedPCR

TPML_PCR_SELECTION

TPM_CAP_PCRS

tpmProperties

TPML_TAGGED_TPM_PROPERTY

TPM_CAP_TPM_PROPERTIES

pcrProperties

TPML_TAGGED_PCR_PROPERTY

TPM_CAP_PCR_PROPERTIES

eccCurves

TPML_ECC_CURVE

TPM_CAP_ECC_CURVES

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Description

TPM_ALG_ECC

Page 97
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

10.9.2 TPMS_CAPABILITY_DATA
This data area is returned in response to a TPM2_GetCapability().
Table 105 — Definition of TPMS_CAPABILITY_DATA Structure <OUT>
Parameter

Type

Description

capability

TPM_CAP

the capability

[capability]data

TPMU_CAPABILITIES

the capability data

10.10 Clock/Counter Structures
10.10.1 TPMS_CLOCK_INFO
This structure is used in each of the attestation commands.
Table 106 — Definition of TPMS_CLOCK_INFO Structure
Parameter

Type

Description

clock

UINT64

time in milliseconds during which the TPM has been powered
This structure element is used to report on the TPM's Clock value.
The value of Clock shall be recorded in non-volatile memory no
22
less often than once per 2 milliseconds (~69.9 minutes) of TPM
operation. The reference for the millisecond timer is the TPM
oscillator.
This value is reset to zero when the Storage Primary Seed is
changed (TPM2_Clear()).
This value may be advanced by TPM2_AdvanceClock().

resetCount

UINT32

number of occurrences of TPM Reset since the last TPM2_Clear()

restartCount

UINT32

number of times that TPM2_Shutdown() or _TPM_Hash_Start have
occurred since the last TPM Reset or TPM2_Clear().

safe

TPMI_YES_NO

no value of Clock greater than the current value of Clock has been
previously reported by the TPM. Set to YES on TPM2_Clear().

10.10.2 Clock
Clock is a monotonically increasing counter that advances whenever power is applied to the TPM. The
value of Clock may be set forward with TPM2_ClockSet() if ownerAuth or platformAuth is provided. The
value of Clock is incremented each millisecond.
TPM2_Clear() will set Clock to zero.
Clock will be non-volatile but may have a volatile component that is updated every millisecond with the
non-volatile component updated at a lower rate. If the implementation uses a volatile component, the non22
volatile component shall be updated no less frequently than every 2 milliseconds (~69.9 minutes). The
update rate of the non-volatile portion of Clock shall be reported by a TPM2_GetCapability() with
capability = TPM_CAP_TPM_PROPERTIES and property = TPM_PT_CLOCK_UPDATE.
10.10.3 ResetCount
This counter shall increment on each TPM Reset. This counter shall be reset to zero by TPM2_Clear().

Page 98
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

10.10.4 RestartCount
This counter shall increment by one for each TPM Restart or TPM Resume. The restartCount shall be
reset to zero on a TPM Reset or TPM2_Clear().
10.10.5 Safe
This parameter is set to YES when the value reported in Clock is guaranteed to be unique for the current
Owner. It is set to NO when the value of Clock may have been reported in a previous attestation or
access.
This parameter will be YES if a TPM2_Startup() was preceded by TPM2_Shutdown() with no intervening
commands. It will also be YES after an update of the non-volatile bits of Clock have been updated at the
end of an update interval.
If a TPM implementation does not implement
TPMS_CLOCK_INFO.clock shall always be zero.

Clock,

Safe

shall

always

be

NO

and

This parameter will be set to YES by TPM2_Clear().
10.10.6 TPMS_TIME_INFO
This structure is used in the TPM2_TICK attestation.
The Time value reported in this structure is reset whenever the TPM is reset. An implementation may
reset the value of Time any time after _TPM_Init and before the TPM returns after TPM2_Start(). The
value of Time shall increment continuously while power is applied to the TPM.
Table 107 — Definition of TPMS_TIME_INFO Structure
Parameter

Type

Description

time

UINT64

time in milliseconds since the last _TPM_Init() or TPM2_Startup()
This structure element is used to report on the TPM's Time value.

clockInfo

TPMS_CLOCK_INFO

a structure containing the clock information

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 99
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

10.11 TPM Attestation Structures
10.11.1 Introduction
This clause describes the structures that are used when a TPM creates a structure to be signed. The
signing structures follow a standard format TPM2B_ATTEST with case-specific information embedded.
10.11.2 TPMS_TIME_ATTEST_INFO
This structure is used when the TPM performs TPM2_GetClock.
Table 108 — Definition of TPMS_TIME_ATTEST_INFO Structure <OUT>
Parameter

Type

Description

time

TPMS_TIME_INFO

the Time, clock, resetCount, restartCount, and Safe indicator

firmwareVersion

UINT64

a vendor-specific value indicating the version number of the
firmware

10.11.3 TPMS_CERTIFY_INFO
This is the attested data for TPM2_Certify().
Table 109 — Definition of TPMS_CERTIFY_INFO Structure <OUT>
Parameter

Type

Description

name

TPM2B_NAME

Name of the certified object

qualifiedName

TPM2B_NAME

Qualified Name of the certified object

10.11.1 TPMS_QUOTE_INFO
This is the attested data for TPM2_Quote().
Table 110 — Definition of TPMS_QUOTE_INFO Structure <OUT>
Parameter

Type

Description

pcrSelect

TPML_PCR_SELECTION

information on algID, PCR selected and digest

pcrDigest

TPM2B_DIGEST

digest of the selected PCR using the hash of the signing key

Page 100
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

10.11.2 TPMS_COMMAND_AUDIT_INFO
This is the attested data for TPM2_GetCommandAuditDigest().
Table 111 — Definition of TPMS_COMMAND_AUDIT_INFO Structure <OUT>
Parameter

Type

Description

auditCounter

UINT64

the monotonic audit counter

digestAlg

TPM_ALG_ID

hash algorithm used for the command audit

auditDigest

TPM2B_DIGEST

the current value of the audit digest

commandDigest

TPM2B_DIGEST

digest of the command codes being audited using digestAlg

10.11.3 TPMS_SESSION_AUDIT_INFO
This is the attested data for TPM2_GetSessionAuditDigest().
Table 112 — Definition of TPMS_SESSION_AUDIT_INFO Structure <OUT>
Parameter

Type

Description

exclusiveSession

TPMI_YES_NO

current exclusive status of the session
TRUE if all of the commands recorded in the sessionDigest were
executed without any intervening TPM command that did not use
this transport session

sessionDigest

TPM2B_DIGEST

the current value of the session audit digest

10.11.4 TPMS_CREATION_INFO
This is the attested data for TPM2_CertifyCreation().
Table 113 — Definition of TPMS_CREATION_INFO Structure <OUT>
Parameter

Type

Description

objectName

TPM2B_NAME

Name of the object

creationHash

TPM2B_DIGEST

creationHash

10.11.5 TPMS_NV_CERTIFY_INFO
This structure contains the Name and contents of the selected NV Index that is certified by
TPM2_NV_Certify().
Table 114 — Definition of TPMS_NV_CERTIFY_INFO Structure <OUT>
Parameter

Type

Description

indexName

TPM2B_NAME

Name of the NV Index

offset

UINT16

the offset parameter of TPM2_NV_Certify()

nvContents

TPM2B_MAX_NV_BUFFER

contents of the NV Index

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 101
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

10.11.6 TPMI_ST_ATTEST
Table 115 — Definition of (TPM_ST) TPMI_ST_ATTEST Type <OUT>
Value

Description

TPM_ST_ATTEST_CERTIFY

generated by TPM2_Certify()

TPM_ST_ATTEST_QUOTE

generated by TPM2_Quote()

TPM_ST_ATTEST_SESSION_AUDIT

generated by TPM2_GetSessionAuditDigest()

TPM_ST_ATTEST_COMMAND_AUDIT

generated by TPM2_GetCommandAuditDigest()

TPM_ST_ATTEST_TIME

generated by TPM2_GetTime()

TPM_ST_ATTEST_CREATION

generated by TPM2_CertifyCreation()

TPM_ST_ATTEST_NV

generated by TPM2_NV_Certify()

10.11.7 TPMU_ATTEST
Table 116 — Definition of TPMU_ATTEST Union <OUT>
Parameter

Type

Selector

certify

TPMS_CERTIFY_INFO

TPM_ST_ATTEST_CERTIFY

creation

TPMS_CREATION_INFO

TPM_ST_ATTEST_CREATION

quote

TPMS_QUOTE_INFO

TPM_ST_ATTEST_QUOTE

commandAudit

TPMS_COMMAND_AUDIT_INFO TPM_ST_ATTEST_COMMAND_AUDIT

sessionAudit

TPMS_SESSION_AUDIT_INFO

TPM_ST_ATTEST_SESSION_AUDIT

time

TPMS_TIME_ATTEST_INFO

TPM_ST_ATTEST_TIME

nv

TPMS_NV_CERTIFY_INFO

TPM_ST_ATTEST_NV

Page 102
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

10.11.8 TPMS_ATTEST
This structure is used on each TPM-generated signed structure. The signature is over this structure.
When the structure is signed by a key in the Storage hierarchy, the values of clockInfo.resetCount,
clockInfo.restartCount, and firmwareVersion are obfuscated with a per-key obfuscation value.
Table 117 — Definition of TPMS_ATTEST Structure <OUT>
Parameter

Type

Description

magic

TPM_GENERATED

the indication that this structure was created by a TPM (always
TPM_GENERATED_VALUE)

type

TPMI_ST_ATTEST

type of the attestation structure

qualifiedSigner

TPM2B_NAME

Qualified Name of the signing key

extraData

TPM2B_DATA

external information supplied by caller
NOTE

A TPM2B_DATA structure provides room for a digest and a
method indicator to indicate the components of the digest.
The definition of this method indicator is outside the scope
of this specification.

clockInfo

TPMS_CLOCK_INFO

Clock, resetCount, restartCount, and Safe

firmwareVersion

UINT64

TPM-vendor-specific field identifying the firmware on the TPM

[type]attested

TPMU_ATTEST

the type-specific attestation information

10.11.9 TPM2B_ATTEST
This sized buffer to contain the signed structure. The attestationData is the signed portion of the structure.
The size parameter is not signed.
Table 118 — Definition of TPM2B_ATTEST Structure <OUT>
Parameter

Type

Description

size

UINT16

size of the attestationData structure

attestationData[size]{:sizeof(TPMS_ATTEST)}

BYTE

the signed structure

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 103
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

10.12 Authorization Structures
The structures in this clause are used for all authorizations. One or more of these structures will be
present in a command or response that has a tag of TPM_ST_SESSIONS.
10.12.1 TPMS_AUTH_COMMAND
This is the format used for each of the authorizations in the session area of a command.
Table 119 — Definition of TPMS_AUTH_COMMAND Structure <IN>
Parameter

Type

Description

sessionHandle

TPMI_SH_AUTH_SESSION+

the session handle

nonce

TPM2B_NONCE

the session nonce, may be the Empty Buffer

sessionAttributes

TPMA_SESSION

the session attributes

hmac

TPM2B_AUTH

either an HMAC, a password, or an EmptyAuth

10.12.2 TPMS_AUTH_RESPONSE
This is the format for each of the authorizations in the session area of the response. If the TPM returns
TPM_RC_SUCCESS, then the session area of the response contains the same number of authorizations
as the command and the authorizations are in the same order.
Table 120 — Definition of TPMS_AUTH_RESPONSE Structure <OUT>
Parameter

Type

Description

nonce

TPM2B_NONCE

the session nonce, may be the Empty Buffer

sessionAttributes

TPMA_SESSION

the session attributes

hmac

TPM2B_AUTH

either an HMAC, a password, or an EmptyAuth

Page 104
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

11 Algorithm Parameters and Structures
11.1 Symmetric
11.1.1 Introduction
This clause defines the parameters and structures for describing symmetric algorithms.
11.1.2 TPMI_AES_KEY_BITS
This interface type defines the supported sizes for an AES key. This type is used to allow the
unmarshaling routine to generate the proper validation code for the supported key sizes. An
implementation that supports different key sizes would have a different set of selections.
When used in TPM2_StartAuthSession(), the mode parameter shall be TPM_ALG_CFB.
NOTE 1

Key size is expressed in bits.

NOTE 2

The definition for AES_KEY_SIZES_BITS used in the reference implementation is found in Annex B

Table 121 — Definition of {AES} (TPM_KEY_BITS) TPMI_AES_KEY_BITS Type
Parameter

Description

$AES_KEY_SIZES_BITS

number of bits in the key

#TPM_RC_VALUE

error when key size is not supported

11.1.3 TPMI_SM4_KEY_BITS
This interface type defines the supported sizes for an SM4 key. This type is used to allow the
unmarshaling routine to generate the proper validation code for the supported key sizes. An
implementation that supports different key sizes would have a different set of selections.
NOTE

SM4 only supports a key size of 128 bits.

Table 122 — Definition of {SM4} (TPM_KEY_BITS) TPMI_SM4_KEY_BITS Type
Parameter

Description

$SM4_KEY_SIZES_BITS

number of bits in the key

#TPM_RC_VALUE

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 105
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

11.1.4 TPMU_SYM_KEY_BITS
This union is used to collect the symmetric encryption key sizes.
The xor entry is a hash algorithms selector and not a key size in bits. This overload is used in order to
avoid an additional level of indirection with another union and another set of selectors.
The xor entry is only selected in a TPMT_SYM_DEF, which is used to select the parameter encryption
value.
Table 123 — Definition of TPMU_SYM_KEY_BITS Union
Parameter

Type

Selector

aes

TPMI_AES_KEY_BITS

TPM_ALG_AES

SM4

TPMI_SM4_KEY_BITS

TPM_ALG_SM4

sym

TPM_KEY_BITS

xor

TPMI_ALG_HASH

Description

when selector may be any of the
symmetric block ciphers
TPM_ALG_XOR

overload for using xor
NOTE

null

TPM_ALG_NULL
allowed

is

not

TPM_ALG_NULL

11.1.5 TPMU_SYM_MODE
This union allows the mode value in a TPMT_SYM_DEF or TPMT_SYM_DEF_OBJECT to be empty.
Table 124 — Definition of TPMU_SYM_MODE Union
Parameter

Type

Selector

Description

aes

TPMI_ALG_SYM_MODE

TPM_ALG_AES

NOTE

TPM_ALG_NULL
allowed

is

not

SM4

TPMI_ALG_SYM_MODE

TPM_ALG_SM4

NOTE

TPM_ALG_NULL
allowed

is

not

sym

TPMI_ALG_SYM_MODE

when selector may be any of the
symmetric block ciphers

xor

TPM_ALG_XOR

no mode selector

null

TPM_ALG_NULL

no mode selector

Page 106
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

11.1.6 TPMU_SYM_DETAILS
This union allows additional parameters to be added for a symmetric cipher. Currently, no additional
parameters are required for any of the symmetric algorithms.
NOTE

The “x” character in the table title will suppress generation of this type as the parser is not, at this time,
able to generate the proper values (a union of all empty data types). When an algorithm is added that
requires additional parameterization, the Type column will contain a value and the “x” may be removed.

Table 125 — xDefinition of TPMU_SYM_DETAILS Union
Parameter

Type

Selector

aes

TPM_ALG_AES

SM4

Description

TPM_ALG_SM4

sym

when selector may be any of the
symmetric block ciphers

xor

TPM_ALG_XOR

null

TPM_ALG_NULL

11.1.7 TPMT_SYM_DEF
The TPMT_SYM_DEF structure is used to select an algorithm to be used for parameter encryption in
those cases when different symmetric algorithms may be selected.
Table 126 — Definition of TPMT_SYM_DEF Structure
Parameter

Type

Description

algorithm

+TPMI_ALG_SYM

indicates a symmetric algorithm

[algorithm]keyBits

TPMU_SYM_KEY_BITS

a supported key size

[algorithm]mode

TPMU_SYM_MODE

the mode for the key

//[algorithm]details

TPMU_SYM_DETAILS

contains additional algorithm details
NOTE

This is commented out at this time as the parser
may not produce the proper code for a union if
none of the selectors produces any data.

11.1.8 TPMT_SYM_DEF_OBJECT
This structure is used when different symmetric block cipher (not XOR) algorithms may be selected.
Table 127 — Definition of TPMT_SYM_DEF_OBJECT Structure
Parameter

Type

Description

algorithm

+TPMI_ALG_SYM_OBJECT

selects a symmetric block cipher

[algorithm]keyBits

TPMU_SYM_KEY_BITS

the key size

[algorithm]mode

TPMU_SYM_MODE

default mode

//[algorithm]details

TPMU_SYM_DETAILS

contains the additional algorithm details, if any
NOTE

Family “2.0”
Level 00 Revision 00.99

This is commented out at this time as the parser
may not produce the proper code for a union if
none of the selectors produces any data.

Published
Copyright © TCG 2006-2013

Page 107
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

11.1.9 TPM2B_SYM_KEY
This structure is used to hold a symmetric key in the sensitive area of an asymmetric object.
The number of bits in the key is in keyBits in the public area. When keyBits is not an even multiple of 8
bits, the unused bits of buffer will be the most significant bits of buffer[0] and size will be rounded up to
the number of octets required to hold all bits of the key.
Table 128 — Definition of TPM2B_SYM_KEY Structure
Parameter

Type

Description

size

UINT16

size, in octets, of the buffer containing the key; may be
zero

buffer [size] {:MAX_SYM_KEY_BYTES}

BYTE

the key

11.1.10 TPMS_SYMCIPHER_PARMS
This structure contains the parameters for a symmetric block cipher object.
Table 129 — Definition of TPMS_SYMCIPHER_PARMS Structure
Parameter

Type

Description

sym

TPMT_SYM_DEF_OBJECT

a symmetric block cipher

11.1.11 TPM2B_SENSITIVE_DATA
This buffer holds the secret data of a data object. It can hold as much as 128 octets of data.
MAX_SYM_DATA shall be 128.
NOTE

A named value rather than a numeric is used to make coding clearer. A numeric value does not indicate
the reason that it has the specific value that is has.

Table 130 — Definition of TPM2B_SENSITIVE_DATA Structure
Parameter

Type

size

UINT16

buffer[size]{: MAX_SYM_DATA}

BYTE

Page 108
October 31, 2013

Description

the keyed hash private data structure

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

11.1.12 TPMS_SENSITIVE_CREATE
This structure defines the values to be placed in the sensitive area of a created object. This structure is
only used within a TPM2B_SENSITIVE_CREATE structure.
NOTE

When sent to the TPM or unsealed, data is usually encrypted using parameter encryption.

If data.size is not zero, and the object is not a keyedHash, data.size must match the size indicated in the
keySize of public.parameters. If the object is a keyedHash, data.size may be any value up to the
maximum allowed in a TPM2B_SENSITIVE_DATA.
For an asymmetric object, data shall be an Empty Buffer and sensitiveDataOrigin shall be SET.
Table 131 — Definition of TPMS_SENSITIVE_CREATE Structure <IN>
Parameter

Type

Description

userAuth

TPM2B_AUTH

the USER auth secret value

data

TPM2B_SENSITIVE_DATA

data to be sealed

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 109
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

11.1.13 TPM2B_SENSITIVE_CREATE
This structure contains the sensitive creation data in a sized buffer. This structure is defined so that both
the userAuth and data values of the TPMS_SENSITIVE_CREATE may be passed as a single parameter
for parameter encryption purposes.
Table 132 — Definition of TPM2B_SENSITIVE_CREATE Structure <IN, S>
Parameter

Type

Description

size=

UINT16

size of sensitive in octets (may not be zero)
NOTE

sensitive

TPMS_SENSITIVE_CREATE

The userAuth and data parameters in this buffer
may both be zero length but the minimum size of
this parameter will be the sum of the size fields of
the
two
parameters
of
the
TPMS_SENSITIVE_CREATE.

data to be sealed or a symmetric key value.

11.1.14 TPMS_SCHEME_SIGHASH
This structure is the scheme data for schemes that only require a hash to complete the scheme definition.
Table 133 — Definition of TPMS_SCHEME_SIGHASH Structure
Parameter

Type

Description

hashAlg

TPMI_ALG_HASH

the hash algorithm used to digest the message

11.1.15 TPMI_ALG_HASH_SCHEME
This is the list of values that may appear in a keyedHash as the scheme parameter.
Table 134 — Definition of (TPM_ALG_ID) TPMI_ALG_KEYEDHASH_SCHEME Type
Values

Comments

TPM_ALG_HMAC

the "signing" scheme

TPM_ALG_XOR

the "obfuscation" scheme

+TPM_ALG_NULL
#TPM_RC_VALUE

11.1.16 HMAC_SIG_SCHEME
Table 135 — Definition of Types for HMAC_SIG_SCHEME
Type

Name

TPMS_SCHEME_SIGHASH

TPMS_SCHEME_HMAC

Page 110
October 31, 2013

Description

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

11.1.17 TPMS_SCHEME_XOR
This structure is for the XOR encryption scheme.
Table 136 — Definition of TPMS_SCHEME_XOR Structure
Parameter

Type

Description

hashAlg

+TPMI_ALG_HASH

the hash algorithm used to digest the message

kdf

TPMI_ALG_KDF

the key derivation function

11.1.18 TPMU_SCHEME_HMAC
Table 137 — Definition of TPMU_SCHEME_KEYEDHASH Union <IN/OUT, S>
Parameter

Type

Selector

Description

hmac

TPMS_SCHEME_HMAC

TPM_ALG_HMAC

the "signing" scheme

xor

TPMS_SCHEME_XOR

TPM_ALG_XOR

the "obfuscation" scheme

null

TPM_ALG_NULL

11.1.19 TPMT_KEYEDHASH_SCHEME
This structure is used for a hash signing object.
Table 138 — Definition of TPMT_KEYEDHASH_SCHEME Structure
Parameter

Type

Description

scheme

+TPMI_ALG_KEYEDHASH_SCHEME

selects the scheme

[scheme]details

TPMU_SCHEME_KEYEDHASH

the scheme parameters

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 111
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

11.2 Asymmetric
11.2.1 Signing Schemes
11.2.1.1

Introduction

These structures are used to define the method in which the signature is to be created. These schemes
would appear in an object’s public area and in commands where the signing scheme is variable.
Every scheme is required to indicate a hash that is used in digesting the message.
11.2.1.2

RSA_SIG_SCHEMES

These are the RSA schemes that only need a hash algorithm as a scheme parameter.
For the TPM_ALG_RSAPSS signing scheme, the same hash algorithm is used for digesting TPMgenerated data (an attestation structure) and in the KDF used for the masking operation. The salt size is
always the largest salt value that will fit into the available space.
Table 139 — Definition of {RSA} Types for RSA_SIG_SCHEMES
Type

Name

Description

TPMS_SCHEME_SIGHASH TPMS_SCHEME_RSASSA
TPMS_SCHEME_SIGHASH TPMS_SCHEME_RSAPSS

11.2.1.3

ECC_SIG_SCHEMES

These are the ECC schemes that only need a hash algorithm as a controlling parameter.
Table 140 — Definition of {ECC} Types for ECC_SIG_SCHEMES
Type

Name

Description

TPMS_SCHEME_SIGHASH TPMS_SCHEME_ECDSA
TPMS_SCHEME_SIGHASH TPMS_SCHEME_SM2
TPMS_SCHEME_SIGHASH TPMS_SCHEME_ECSCHNORR

11.2.1.4 TPMS_SCHEME_ECDAA
Table 141 — Definition of {ECC} TPMS_SCHEME_ECDAA Structure
Parameter

Type

Description

hashAlg

TPMI_ALG_HASH

the hash algorithm used to digest the message

count

UINT16

the counter value that is used between TPM2_Commit() and the sign
operation

Page 112
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library
11.2.1.5

Part 2: Structures

TPMU_SIG_SCHEME
Table 142 — Definition of TPMU_SIG_SCHEME Union <IN/OUT, S>

Parameter

Type

Selector

Description

rsassa

TPMS_SCHEME_RSASSA

TPM_ALG_RSASSA

the PKCS#1v1.5 scheme

rsapss

TPMS_SCHEME_RSAPSS

TPM_ALG_RSAPSS

the PKCS#1v2.1 PSS scheme

ecdsa

TPMS_SCHEME_ECDSA

TPM_ALG_ECDSA

the ECDSA scheme

sm2

TPMS_SCHEME_SM2

TPM_ALG_SM2

ECDSA from SM2

ecdaa

TPMS_SCHEME_ECDAA

TPM_ALG_ECDAA

the ECDAA scheme

ecSchnorr

TPMS_SCHEME_ECSCHNORR

TPM_ALG_ECSCHNORR

the EC Schnorr

hmac

TPMS_SCHEME_HMAC

TPM_ALG_HMAC

the HMAC scheme

any

TPMS_SCHEME_SIGHASH

null

11.2.1.6

selector that allows access to
digest for any signing scheme
TPM_ALG_NULL

no scheme or default

TPMT_SIG_SCHEME
Table 143 — Definition of TPMT_SIG_SCHEME Structure

Parameter

Type

Description

scheme

+TPMI_ALG_SIG_SCHEME

scheme selector

[scheme]details

TPMU_SIG_SCHEME

scheme parameters

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 113
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

11.2.2 Encryption Schemes
11.2.2.1

Introduction

These structures are used to indicate the hash algorithm used for the encrypting process. These
schemes would appear in an object’s public area.
11.2.2.2

TPMS_SCHEME_OAEP
Table 144 — Definition of {RSA} TPMS_SCHEME_OAEP Structure

Parameter

Type

Description

hashAlg

+TPMI_ALG_HASH

the hash algorithm used to digest the message

11.2.2.3

TPMS_SCHEME_ECDH

For ECDH, KDFe is used for the key derivation function that only a hash algorithm is needed to complete
the definition.
Table 145 — Definition of {ECC} TPMS_SCHEME_ECDH Structure
Parameter

Type

Description

hashAlg

+TPMI_ALG_HASH

the hash algorithm used in the KDF

11.2.3 Key Derivation Schemes
11.2.3.1

Introduction

These structures are used to define the key derivation for symmetric secret sharing using asymmetric
methods. A secret shareing scheme is required in any asymmetric key with the decrypt attribute SET.
These schemes would appear in an object’s public area and in commands where the secret sharing
scheme is variable.
Each scheme includes a symmetric algorithm and a KDF selection.
11.2.3.2

TPMS_SCHEME_MGF1
Table 146 — Definition of TPMS_SCHEME_MGF1 Structure

Parameter

Type

Description

hashAlg

TPMI_ALG_HASH

the hash algorithm used in the KDF

11.2.3.3

TPMS_SCHEME_KDF1_SP800_56a
Table 147 — Definition of {ECC} TPMS_SCHEME_KDF1_SP800_56a Structure

Parameter

Type

Description

hashAlg

TPMI_ALG_HASH

the hash algorithm used in the KDF

Page 114
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library
11.2.3.4

Part 2: Structures

TPMS_SCHEME_KDF2
Table 148 — Definition of TPMS_SCHEME_KDF2 Structure

Parameter

Type

Description

hashAlg

TPMI_ALG_HASH

the hash algorithm used in the KDF

11.2.3.5

TPMS_SCHEME_KDF1_SP800_108
Table 149 — Definition of TPMS_SCHEME_KDF1_SP800_108 Structure

Parameter

Type

Description

hashAlg

TPMI_ALG_HASH

the hash algorithm used in the KDF

11.2.3.6

TPMU_KDF_SCHEME
Table 150 — Definition of TPMU_KDF_SCHEME Union <IN/OUT, S>

Parameter

Type

Selector

mgf1

TPMS_SCHEME_MGF1

TPM_ALG_MGF1

kdf1_SP800_56a TPMS_SCHEME_KDF1_SP800_56a

TPM_ALG_KDF1_SP800_56a

kdf2

TPMS_SCHEME_KDF2

TPM_ALG_KDF2

kdf1_sp800_108

TPMS_SCHEME_KDF1_SP800_108

Description

TPM_ALG_KDF1_SP800_108

null

11.2.3.7

TPM_ALG_NULL

TPMT_KDF_SCHEME
Table 151 — Definition of TPMT_KDF_SCHEME Structure

Parameter

Type

Description

scheme

+TPMI_ALG_KDF

scheme selector

[scheme]details

TPMU_KDF_SCHEME

scheme parameters

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 115
October 31, 2013

Part 2: Structures
11.2.3.8

Trusted Platform Module Library

TPMI_ALG_ASYM_SCHEME

List of all of the scheme types for any asymmetric algorithm. This is used to define the
TPMT_ASYM_SCHEME.
Table 152 — Definition of (TPM_ALG_ID) TPMI_ALG_ASYM_SCHEME Type <>
Values

Comments

TPM_ALG_RSASSA

list of the allowed values

TPM_ALG_RSAPSS
TPM_ALG_RSAES
TPM_ALG_OAEP
TPM_ALG_ECDSA
TPM_ALG_SM2
TPM_ALG_ECDAA
TPM_ALG_ECDH
+TPM_ALG_NULL
#TPM_RC_VALUE

11.2.3.9

TPMU_ASYM_SCHEME

This union of all asymmetric schemes is used in each of the asymmetric scheme structures. The actual
scheme structure is defined by the interface type used for the selector.
EXAMPLE

The TPMT_RSA_SCHEME structure uses the TPMU_ASYM_SCHEME union but the selector type is
TPMI_ALG_RSA_SCHEME. This means that the only elements of the union that can be selected for th e
TPMT_RSA_SCHEME are those that are in TPMI_RSA_SCHEME.

Table 153 — Definition of TPMU_ASYM_SCHEME Union
Parameter

Type

Selector

Description

rsassa

TPMS_SCHEME_RSASSA

TPM_ALG_RSASSA

the PKCS#1v1.5 scheme

rsapss

TPMS_SCHEME_RSAPSS

TPM_ALG_RSAPSS

the PKCS#1v2.1 PSS scheme

TPM_ALG_RSAES

the PKCS#1v2.1 RSAES scheme

rsaes
oaep

TPMS_SCHEME_OAEP

TPM_ALG_OAEP

the PKSC#1v2.1 OAEP scheme

ecdsa

TPMS_SCHEME_ECDSA

TPM_ALG_ECDSA

an ECDSA scheme

sm2

TPMS_SCHEME_SM2

TPM_ALG_SM2

sign or key exchange from SM2

ecdaa

TPMS_SCHEME_ECDAA

TPM_ALG_ECDAA

an ECDAA scheme

ecSchnorr

TPMS_SCHEME_ECSCHNORR

TPM_ALG_ECSCHNORR elliptic curve Schnorr signature

ecdh
anySig

TPM_ALG_ECDH
TPMS_SCHEME_SIGHASH

null

Page 116
October 31, 2013

TPM_ALG_NULL

Published
Copyright © TCG 2006-2013

no scheme or default
This selects the NULL Signature.

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

11.2.3.10 TPMT_ASYM_SCHEME
This structure is defined to allow overlay of all of the schemes for any asymmetric object. This structure is
not sent on the interface.
Table 154 — Definition of TPMT_ASYM_SCHEME Structure <>
Parameter

Type

Description

scheme

+TPMI_ALG_ASYM_SCHEME

scheme selector

[scheme]details

TPMU_ASYM_SCHEME

scheme parameters

11.2.4 RSA
11.2.4.1

TPMI_ALG_RSA_SCHEME

The list of values that may appear in the scheme parameter of a TPMS_RSA_PARMS structure.
Table 155 — Definition of (TPM_ALG_ID) {RSA} TPMI_ALG_RSA_SCHEME Type
Values

Comments

TPM_ALG_RSASSA

list of the allowed values

TPM_ALG_RSAPSS
TPM_ALG_RSAES
TPM_ALG_OAEP
+TPM_ALG_NULL
#TPM_RC_VALUE

11.2.4.2

TPMT_RSA_SCHEME
Table 156 — Definition of {RSA} TPMT_RSA_SCHEME Structure

Parameter

Type

Description

scheme

+TPMI_ALG_RSA_SCHEME

scheme selector

[scheme]details

TPMU_ASYM_SCHEME

scheme parameters

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 117
October 31, 2013

Part 2: Structures
11.2.4.3

Trusted Platform Module Library

TPMI_ALG_RSA_DECRYPT

The list of values that are allowed in a decryption scheme selection as used in TPM2_RSA_Encrypt() and
TPM2_RSA_Decrypt().
Table 157 — Definition of (TPM_ALG_ID) {RSA} TPMI_ALG_RSA_DECRYPT Type
Values

Comments

TPM_ALG_RSAES
TPM_ALG_OAEP
+TPM_ALG_NULL
#TPM_RC_VALUE

11.2.4.4

TPMT_RSA_DECRYPT
Table 158 — Definition of {RSA} TPMT_RSA_DECRYPT Structure

Parameter

Type

Description

scheme

+TPMI_ALG_RSA_DECRYPT

scheme selector

[scheme]details

TPMU_ASYM_SCHEME

scheme parameters

11.2.4.5

TPM2B_PUBLIC_KEY_RSA

This sized buffer holds the largest RSA public key supported by the TPM.
NOTE

The reference implementation only supports key sizes of 1,024 and 2,048 bits.

Table 159 — Definition of {RSA} TPM2B_PUBLIC_KEY_RSA Structure
Parameter

Type

Description

size

UINT16

size of the buffer
The value of zero is only valid for create.

buffer[size] {: MAX_RSA_KEY_BYTES}

BYTE

Value

11.2.4.6

TPMI_RSA_KEY_BITS

This holds the value that is the maximum size allowed for an RSA key.
NOTE 1

An implementation is allowed to provide limited support for smaller RSA key sizes. That is, a TPM may be
able to accept a smaller RSA key size in TPM2_LoadExternal() when only the public area is loaded but
not accept that smaller key size in any command that loads both the public and private portions of an RSA
key. This would allow the TPM to validate signatures using the smaller key but would prevent the TPM
from using the smaller key size for any other purpose.

NOTE 2

The definition for RSA_KEY_SIZES_BITS used in the reference implementation is found in Annex B

Page 118
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

Table 160 — Definition of {RSA} (TPM_KEY_BITS) TPMI_RSA_KEY_BITS Type
Parameter

Description

$RSA_KEY_SIZES_BITS

the number of bits in the supported key

#TPM_RC_VALUE

error when key size is not supported

11.2.4.7

TPM2B_PRIVATE_KEY_RSA

This sized buffer holds the largest RSA prime number supported by the TPM.
NOTE

All primes are required to have exactly half the number of significant bits as the public modulus , and the
square of each prime is required to have the same number of significant bits as the public modulus.

Table 161 — Definition of {RSA} TPM2B_PRIVATE_KEY_RSA Structure
Parameter

Type

size

UINT16

buffer[size]{:MAX_RSA_KEY_BYTES/2}

BYTE

Family “2.0”
Level 00 Revision 00.99

Description

Published
Copyright © TCG 2006-2013

Page 119
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

11.2.5 ECC
11.2.5.1

TPM2B_ECC_PARAMETER

This sized buffer holds the largest ECC parameter (coordinate) supported by the TPM.
Table 162 — Definition of {ECC} TPM2B_ECC_PARAMETER Structure
Parameter

Type

Description

size

UINT16

size of buffer

buffer[size] {:MAX_ECC_KEY_BYTES}

BYTE

the parameter data

11.2.5.2

TPMS_ECC_POINT

This structure holds two ECC coordinates that, together, make up an ECC point.
Table 163 — Definition of {ECC} TPMS_ECC_POINT Structure
Parameter

Type

Description

x

TPM2B_ECC_PARAMETER

X coordinate

y

TPM2B_ECC_PARAMETER

Y coordinate

11.2.5.3

TPM2B_ECC_POINT

This structure is defined to allow a point to be a single sized parameter so that it may be encrypted.
NOTE

If the point is to be omitted, the X and Y coordinates need to be individual ly set to Empty Buffers. The
minimum value for size will be four. It is checked indirectly by unmarshaling of the TPMS_ECC_POINT. If
the type of point were BYTE, then size could have been zero. However, this would complicate the process
of marshaling the structure.

Table 164 — Definition of {ECC} TPM2B_ECC_POINT Structure
Parameter

Type

Description

size=

UINT16

size of the remainder of this structure

point

TPMS_ECC_POINT

coordinates
error returned if the unmarshaled size of point is
not exactly equal to size

#TPM_RC_SIZE

Page 120
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library
11.2.5.4

Part 2: Structures

TPMI_ALG_ECC_SCHEME
Table 165 — Definition of (TPM_ALG_ID) {ECC} TPMI_ALG_ECC_SCHEME Type

Values

Comments

TPM_ALG_ECDSA

these are the selections allowed for an ECC key

TPM_ALG_SM2
TPM_ALG_ECDAA
TPM_ALG_ECSCHNORR
TPM_ALG_ECDH
+TPM_ALG_NULL
#TPM_RC_SCHEME

11.2.5.5

TPMI_ECC_CURVE

The ECC curves implemented by the TPM.
NOTE

The definition of ECC_CURVES used in the reference implementation is found in Annex B

Table 166 — Definition of {ECC} (TPM_ECC_CURVE) TPMI_ECC_CURVE Type
Parameter

Description

$ECC_CURVES

the list of implemented curves

#TPM_RC_CURVE

error when curve is not supported

11.2.5.6

TPMT_ECC_SCHEME

Table 167 — Definition of (TPMT_SIG_SCHEME) {ECC} TPMT_ECC_SCHEME Structure
Parameter

Type

Description

scheme

+TPMI_ALG_ECC_SCHEME

scheme selector

[scheme]details

TPMU_SIG_SCHEME

scheme parameters

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 121
October 31, 2013

Part 2: Structures
11.2.5.7

Trusted Platform Module Library

TPMS_ALGORITHM_DETAIL_ECC

This structure is used to report on the curve parameters of an ECC curve. It is returned by
TPM2_ECC_Parameters().
Table 168 — Definition of {ECC} TPMS_ALGORITHM_DETAIL_ECC Structure <OUT>
Parameter

Type

Description

curveID

TPM_ECC_CURVE

identifier for the curve

keySize

UINT16

Size in bits of the key

kdf

TPMT_KDF_SCHEME

the default KDF and hash algorithm used in secret sharing
operations

sign

TPMT_ECC_SCHEME+

If not TPM_ALG_NULL, this is the mandatory signature
scheme that is required to be used with this curve.

p

TPM2B_ECC_PARAMETER

Fp (the modulus)

a

TPM2B_ECC_PARAMETER

coefficient of the linear term in the curve equation

b

TPM2B_ECC_PARAMETER

constant term for curve equation

gX

TPM2B_ECC_PARAMETER

x coordinate of base point G

gY

TPM2B_ECC_PARAMETER

y coordinate of base point G

n

TPM2B_ECC_PARAMETER

order of G

h

TPM2B_ECC_PARAMETER

cofactor (a size of zero indicates a cofactor of 1)

11.3 Signatures
11.3.1 TPMS_SIGNATURE_RSASSA
Table 169 — Definition of {RSA} TPMS_SIGNATURE_RSASSA Structure
Parameter

Type

Description

hash

TPMI_ALG_HASH

the hash algorithm used to digest the message
TPM_ALG_NULL is not allowed.

sig

TPM2B_PUBLIC_KEY_RSA

The signature is the size of a public key.

11.3.2 TPMS_SIGNATURE_RSAPSS
When the TPM generates a PSS signature, the salt size is the largest size allowed by the key and hash
combination.
EXAMPLE

For a 2,048-bit public modulus key and SHA1 hash, the salt size is 256 – 20 – 2 = 234 octets.

NOTE

While this is significantly larger than required from a securit y perspective, it avoids issues of whether a
particular size of salt value is sufficient.

Page 122
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

Table 170 — Definition of {RSA} TPMS_SIGNATURE_RSAPSS Structure
Parameter

Type

Description

hash

TPMI_ALG_HASH

the hash algorithm used in the signature process
TPM_ALG_NULL is not allowed.

sig

TPM2B_PUBLIC_KEY_RSA

The signature is the size of a public key.

11.3.3 TPMS_SIGNATURE_ECDSA
Table 171 — Definition of {ECC} TPMS_SIGNATURE_ECDSA Structure
Parameter

Type

Description

hash

TPMI_ALG_HASH

the hash algorithm used in the signature process
TPM_ALG_NULL is not allowed.

signatureR

TPM2B_ECC_PARAMETER

signatureS

TPM2B_ECC_PARAMETER

11.3.4 TPMU_SIGNATURE
A TPMU_SIGNATURE_COMPOSITE is a union of the various signatures that is supported by a particular
TPM implementation. The union allows substitution of any signature algorithm wherever a signature is
required in a structure. Table 172 is an illustration of a TPMU_SIGNATURE for a TPM that implements
both RSA and ECC signing.
NOTE 1

All TPM are required to support a hash algorithm and the HMAC algorithm.

When a symmetric algorithm is used for signing, the signing algorithm is assumed to be an HMAC based
on the indicated hash algorithm. The HMAC key will either be referenced as part of the usage or will be
implied by context.
NOTE 2

The table below is illustrative. It would be modified to reflect the signatures produced by the TPM.

Table 172 — Definition of TPMU_SIGNATURE Union <IN/OUT, S>
Parameter

Type

Selector

Description

rsassa

TPMS_SIGNATURE_RSASSA

TPM_ALG_RSASSA

a PKCS#1v1.5 signature

rsapss

TPMS_SIGNATURE_RSAPSS

TPM_ALG_RSAPSS

a PKCS#1v2.1PSS signature

ecdsa

TPMS_SIGNATURE_ECDSA

TPM_ALG_ECDSA

an ECDSA signature

sm2

TPMS_SIGNATURE_ECDSA

TPM_ALG_SM2

same format as ECDSA

ecdaa

TPMS_SIGNATURE_ECDSA

TPM_ALG_ECDAA

same format as ECDSA

ecschnorr

TPMS_SIGNATURE_ECDSA

TPM_ALG_ECSCHNORR

same format as ECDSA

hmac

TPMT_HA

TPM_ALG_HMAC

HMAC signature (required to
be supported)

any

TPMS_SCHEME_SIGHASH

null

Family “2.0”
Level 00 Revision 00.99

used to access the hash
TPM_ALG_NULL

Published
Copyright © TCG 2006-2013

the NULL signature

Page 123
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

11.3.5 TPMT_SIGNATURE
Table 173 shows the basic algorithm-agile structure when a symmetric or asymmetric signature is
indicated. The sigAlg parameter indicates the algorithm used for the signature. This structure is output
from the attestation commands and is an input to TPM2_VerifySignature(), TPM2_PolicySigned(), and
TPM2_FieldUpgradeStart().
Table 173 — Definition of TPMT_SIGNATURE Structure
Parameter

Type

Description

sigAlg

+TPMI_ALG_SIG_SCHEME

selector of the algorithm used to construct the signature

[sigAlg]signature

TPMU_SIGNATURE

This shall be the actual signature information.

11.4 Key/Secret Exchange
11.4.1 Introduction
The structures in this clause are used when a key or secret is being exchanged. The exchange may be in


TPM2_StartAuthSession() where the secret is injected for salting the session,



TPM2_Duplicate(), TPM2_Import, or TPM2_Rewrap() where the secret is the symmetric encryption
key for the outer wrapper of a duplication blob, or



TPM2_ActivateIdentity() or TPM2_CreateIdentity() where the secret is the symmetric encryption key
for the credential blob.

Particulars are described in Part 1.
11.4.2 TPMU_ENCRYPTED_SECRET
This structure is used to hold either an ephemeral public point for ECDH, an OAEP-encrypted block for
RSA, or a symmetrically encrypted value. This structure is defined for the limited purpose of determining
the size of a TPM2B_ENCRYPTED_SECRET.
The symmetrically encrypted value may use either CFB or XOR encryption.
NOTE

Table 174 is illustrative. It would be modified depending on the algorithms supported in the TPM.

Table 174 — Definition of TPMU_ENCRYPTED_SECRET Union <S>
Parameter

Type

Selector

ecc[sizeof(TPMS_ECC_POINT)]

BYTE

TPM_ALG_ECC

rsa[MAX_RSA_KEY_BYTES]

BYTE

TPM_ALG_RSA

symmetric[sizeof(TPM2B_DIGEST)]

BYTE

TPM_ALG_SYMCIPHER

keyedHash[sizeof(TPM2B_DIGEST)]

BYTE

TPM_ALG_KEYEDHASH

Page 124
October 31, 2013

Published
Copyright © TCG 2006-2013

Description

Any symmetrically encrypted
secret value will be limited to
be no larger than a digest.

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

11.4.3 TPM2B_ENCRYPTED_SECRET
Table 175 — Definition of TPM2B_ENCRYPTED_SECRET Structure
Parameter

Type

Description

size

UINT16

size of the secret value

secret[size] {:sizeof(TPMU_ENCRYPTED_SECRET)}

BYTE

secret

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 125
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

12 Key/Object Complex
12.1 Introduction
An object description requires a TPM2B_PUBLIC structure and may require a TPMT_SENSITIVE
structure. When the structure is stored off the TPM, the TPMT_SENSITIVE structure is encrypted within a
TPM2B_PRIVATE structure.
When the object requires two components for its description, those components are loaded as separate
parameters in the TPM2_Load() command. When the TPM creates an object that requires both
components, the TPM will return them as separate parameters from the TPM2_Create() operation.
The TPM may produce multiple different TPM2B_PRIVATE structures for a single TPM2B_PUBLIC
structure. Creation of a modified TPM2B_PRIVATE structure requires that the full structure be loaded with
the TPM2_Load() command, modification of the TPMT_SENSITIVE data, and output of a new
TPM2B_PRIVATE structure.
12.2 Public Area Structures
12.2.1 Description
This clause defines the TPM2B_PUBLIC structure and the higher-level substructure that may be
contained in a TPM2B_PUBLIC. The higher-level structures that are currently defined for inclusion in a
TPM2B_PUBLIC are the


structures for asymmetric keys,



structures for symmetric keys, and



structures for sealed data.

12.2.2 TPMI_ALG_PUBLIC
Table 176 — Definition of (TPM_ALG_ID) TPMI_ALG_PUBLIC Type
Values

Comments

TPM_ALG_KEYEDHASH

required of all TPM

TPM_ALG_SYMCIPHER

required of all TPM

TPM_ALG_RSA

At least one asymmetric algorithm shall be implemented.

TPM_ALG_ECC

At least one asymmetric algorithm shall be implemented.

#TPM_RC_TYPE

response code when a public type is not supported

12.2.3 Type-Specific Parameters
12.2.3.1

Description

The public area contains two fields (parameters and unique) that vary by object type. The parameters
field varies according to the type of the object but the contents may be the same across multiple
instances of a particular type. The unique field format also varies according to the type of the object and
will also be unique for each instance.

Page 126
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

For a symmetric key (type == TPM_ALG_SYMCIPHER), HMAC key (type == TPM_ALG_KEYEDHASH)
or data object (also, type == TPM_ALG_KEYEDHASH), the contents of unique shall be computed from
components of the sensitive area of the object as follows:

unique ≔ HnameAlg(seedValue || sensitive)

(8)

where

HnameAlg()

the hash algorithm used to compute the Name of the object

seedValue

the digest-sized obfuscation value in the sensitive area of a symmetric
key
or
symmetric
data
object
found
in
a
TPMT_SENSITIVE.seedValue.buffer

sensitive

the
secret
key/data
of
TPMT_SENSITIVE.sensitive.any.buffer

12.2.3.2

the

object

in

the

TPMU_PUBLIC_ID
Table 177 — Definition of TPMU_PUBLIC_ID Union <IN/OUT, S>

Parameter

Type

Selector

keyedHash

TPM2B_DIGEST

TPM_ALG_KEYEDHASH

sym

TPM2B_DIGEST

TPM_ALG_SYMCIPHER

rsa

TPM2B_PUBLIC_KEY_RSA

TPM_ALG_RSA

ecc

TPMS_ECC_POINT

TPM_ALG_ECC

12.2.3.3

Description

TPMS_KEYEDHASH_PARMS

This structure describes the parameters that would appear in the public area of a KEYEDHASH object.
Note

Although the names are the same, the types of the structures are not the same as for asymmetric
parameter lists.

Table 178 — Definition of TPMS_KEYEDHASH_PARMS Structure
Parameter

Type

Description

scheme

TPMT_KEYEDHASH_SCHEME+

Indicates the signing method used for a keyedHash signing
object. This field also determines the size of the data field for a
data object created with TPM2_Create(). This field shall not be set
to TPM_ALG_NULL in a template if either sign or encrypt is SET.

12.2.3.4

TPMS_ASYM_PARMS

This structure contains the common public area parameters for an asymmetric key. The first two
parameters of the parameter definition structures of an asymmetric key shall have the same two first
components.
NOTE

The sign parameter may have a different type in order to allow different schemes to be selected for each
asymmetric type but the first parameter of each scheme definition shall be a TPM_ALG_ID for a valid
signing scheme.

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 127
October 31, 2013

Part 2: Structures

Trusted Platform Module Library
Table 179 — Definition of TPMS_ASYM_PARMS Structure <>

Parameter

Type

Description

symmetric

TPMT_SYM_DEF_OBJECT+

the companion symmetric algorithm for a restricted
decryption key and shall be set to a supported symmetric
algorithm
This field is optional for keys that are not decryption keys
and shall be set to TPM_ALG_NULL if not used.

scheme

TPMT_ASYM_SCHEME+

for a key with the sign attribute SET, a valid signing
scheme for the key type
for a key with the decrypt attribute SET, a valid key
exchange protocol
for a key with sign and decrypt attributes, shall be
TPM_ALG_NULL

12.2.3.5

TPMS_RSA_PARMS

A TPM compatible with this specification and supporting RSA shall support numPrimes of two and an
exponent of zero. Support for other values is optional. Use of other exponents in duplicated keys is not
recommended because the resulting keys would not be interoperable with other TPMs.
NOTE 1

Implementations are not required to check that exponent is the default exponent. They may fail to load the
key if exponent is not zero. The reference implementation allows the values listed in the table.

Table 180 — Definition of {RSA} TPMS_RSA_PARMS Structure
Parameter

Type

Description

symmetric

TPMT_SYM_DEF_OBJECT+ for a restricted decryption key, shall be set to a
supported symmetric algorithm, key size, and mode.
if the key is not a restricted decryption key, this field
shall be set to TPM_ALG_NULL.

scheme

TPMT_RSA_SCHEME+

for a signing key, shall be either TPM_ALG_RSAPSS
TPM_ALG_RSASSA or TPM_ALG_NULL
for an unrestricted decryption key, shall be
TPM_ALG_RSAES,
TPM_ALG_OAEP,
or
TPM_ALG_NULL unless the object also has the sign
attribute
for a restricted decryption key, this field shall be
TPM_ALG_NULL
NOTE

keyBits

When both sign and decrypt are SET, restricted
shall be CLEAR and scheme shall be
TPM_ALG_NULL.

TPMI_RSA_KEY_BITS

number of bits in the public modulus

UINT32

the public exponent
A prime number greater than 2.
When zero, indicates that the exponent is the default
16
of 2 + 1

#TPM_RC_KEY_SIZE
exponent

#TPM_RC_VALUE

Page 128
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library
12.2.3.6

Part 2: Structures

TPMS_ECC_PARMS

This structure contains the parameters for prime modulus ECC.
Table 181 — Definition of {ECC} TPMS_ECC_PARMS Structure
Parameter

Type

Description

symmetric

TPMT_SYM_DEF_OBJECT+

for a restricted decryption key, shall be set to a supported
symmetric algorithm, key size. and mode.
if the key is not a restricted decryption key, this field shall be
set to TPM_ALG_NULL.

scheme

TPMT_ECC_SCHEME+

If the sign attribute of the key is SET, then this shall be a valid
signing scheme.
NOTE

If the sign parameter in curveID indicates a mandatory
scheme, then this field shall have the same value.

If the decrypt attribute of the key is SET, then this shall be a
valid key exchange scheme or TPM_ALG_NULL.
If the key is a Storage Key, then this field shall be
TPM_ALG_NULL.
curveID

TPMI_ECC_CURVE

ECC curve ID

kdf

TPMT_KDF_SCHEME+

an optional key derivation scheme for generating a symmetric
key from a Z value
If the kdf
parameter associated with curveID is not
TPM_ALG_NULL then this is required to be NULL.
NOTE

12.2.3.7

There are currently no commands where this parameter
has effect and, in the reference code, this field needs to
be set to TPM_ALG_NULL.

TPMU_PUBLIC_PARMS

Table 182 defines the possible parameter definition structures that may be contained in the public portion
of a key.
Table 182 — Definition of TPMU_PUBLIC_PARMS Union <IN/OUT, S>
Parameter

Type

(1)

Selector

Description

keyedHashDetail TPMS_KEYEDHASH_PARMS

TPM_ALG_KEYEDHASH

sign | encrypt | neither

symDetail

TPMS_SYMCIPHER_PARMS

TPM_ALG_SYMCIPHER

a symmetric block cipher

rsaDetail

TPMS_RSA_PARMS

TPM_ALG_RSA

decrypt + sign

(2)

eccDetail

TPMS_ECC_PARMS

TPM_ALG_ECC

decrypt + sign

(2)

asymDetail

TPMS_ASYM_PARMS

common scheme structure
for RSA and ECC keys

NOTES
1)

Description column indicates which of TPMA_OBJECT.decrypt or TPMA_OBJECT.sign may be set.

2)

“+” indicates that both may be set but one shall be set. “|” indicates the optional settings.

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 129
October 31, 2013

Part 2: Structures
12.2.3.8

Trusted Platform Module Library

TPMT_PUBLIC_PARMS

This structure is used in TPM2_TestParms() to validate that a set of algorithm parameters is supported by
the TPM.
Table 183 — Definition of TPMT_PUBLIC_PARMS Structure
Parameter

Type

Description

type

TPMI_ALG_PUBLIC

the algorithm to be tested

[type]parameters

TPMU_PUBLIC_PARMS the algorithm details

12.2.4 TPMT_PUBLIC
Table 184 defines the public area structure. The Name of the object is nameAlg concatenated with the
digest of this structure using nameAlg.
Table 184 — Definition of TPMT_PUBLIC Structure
Parameter

Type

Description

type

TPMI_ALG_PUBLIC

“algorithm” associated with this object

nameAlg

+TPMI_ALG_HASH

algorithm used for computing the Name of the object
NOTE

The "+" indicates that the instance of a TPMT_PUBLIC may have
a "+" to indicate that the nameAlg may be TPM_ALG_NULL.

objectAttributes

TPMA_OBJECT

attributes that, along with type, determine the manipulations of this
object

authPolicy

TPM2B_DIGEST

optional policy for using this key
The policy is computed using the nameAlg of the object.
NOTE

Shall be the Empty Buffer if no authorization policy is present.

[type]parameters

TPMU_PUBLIC_PARMS the algorithm or structure details

[type]unique

TPMU_PUBLIC_ID

Page 130
October 31, 2013

the unique identifier of the structure
For an asymmetric key, this would be the public key.

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

12.2.5 TPM2B_PUBLIC
This sized buffer is used to embed a TPMT_PUBLIC in a command.
Table 185 — Definition of TPM2B_PUBLIC Structure
Parameter

Type

Description

size=

UINT16

size of publicArea
NOTE

publicArea

+TPMT_PUBLIC

The “=” will force the TPM to try to unmarshal a
TPMT_PUBLIC and check that the unmarshaled size
matches the value of size. If all the required fields of
a TPMT_PUBLIC are not present, the TPM will return
an error (generally TPM_RC_SIZE) when attempting
to unmarshal the TPMT_PUBLIC.

the public area
NOTE

The “+” indicates that the caller may specify that use
of TPM_ALG_NULL is allowed for nameAlg.

12.3 Private Area Structures
12.3.1 Introduction
The structures in 12.3 define the contents and construction of the private portion of a TPM object. A
TPM2B_PRIVATE along with a TPM2B_PUBLIC are needed to describe a TPM object.
A TPM2B_PRIVATE area may be encrypted by different symmetric algorithms or, in some cases, not
encrypted at all.
12.3.2 Sensitive Data Structures
12.3.2.1

Introduction

The structures in 12.3.2 define the presumptive internal representations of the sensitive areas of the
various entities. A TPM may store the sensitive information in any desired format but when constructing a
TPM_PRIVATE, the formats in this clause shall be used.
12.3.2.2

TPM2B_PRIVATE_VENDOR_SPECIFIC

This structure is defined for coding purposes. For IO to the TPM, the sensitive portion of the key will be in
a canonical form. For an RSA key, this will be one of the prime factors of the public modulus. After
loading, it is typical that other values will be computed so that computations using the private key will not
need to start with just one prime factor. This structure allows the vendor-specific structure to use the
space of the
The value for RSA_VENDOR_SPECIFIC is determined by the vendor.
Table 186 — Definition of {RSA} TPM2B_PRIVATE_VENDOR_SPECIFIC Structure<>
Parameter

Type

size

UINT16

buffer[size]{:PRIVATE_VENDOR_SPECIFIC_BYTES}

BYTE

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Description

Page 131
October 31, 2013

Part 2: Structures
12.3.2.3

Trusted Platform Module Library

TPMU_SENSITIVE_COMPOSITE
Table 187 — Definition of TPMU_SENSITIVE_COMPOSITE Union <IN/OUT, S>

Parameter

Type

Selector

Description

rsa

TPM2B_PRIVATE_KEY_RSA

TPM_ALG_RSA

a prime factor of the public
key

ecc

TPM2B_ECC_PARAMETER

TPM_ALG_ECC

the integer private key

bits

TPM2B_SENSITIVE_DATA

TPM_ALG_KEYEDHASH

the private data

sym

TPM2B_SYM_KEY

TPM_ALG_SYMCIPHER

the symmetric key

any

TPM2B_PRIVATE_VENDOR_SPECIFIC

12.3.2.4

vendor-specific size for key
storage

TPMT_SENSITIVE
Table 188 — Definition of TPMT_SENSITIVE Structure

Parameter

Type

Description

sensitiveType

TPMI_ALG_PUBLIC

identifier for the sensitive area
This shall be the same as the type parameter of the
associated public area.

authValue

TPM2B_AUTH

user authorization data
The authValue may be a zero-length string.
This value shall not be larger than the size of the
digest produced by the nameAlg of the object.

seedValue

TPM2B_DIGEST

for asymmetric key object, the optional protection
seed; for other objects, the obfuscation value
This value shall not be larger than the size of the
digest produced by nameAlg of the object.

[sensitiveType]sensitive

TPMU_SENSITIVE_COMPOSITE

the type-specific private data

12.3.3 TPM2B_SENSITIVE
The TPM2B_SENSITIVE structure is used as a parameter in TPM2_LoadExternal(). It is an unencrypted
sensitive area but it may be encrypted using parameter encryption.
NOTE

When this structure is unmarshaled, the size of the sensitiveType determines what type of value is
unmarshaled. Each value of sensitiveType is associated with a TPM2B. It is the maximum size for each of
the TPM2B values will determine if the unmarshal operation is successful . Since there is no selector for
the any or vendor options for the union, the maximum input and output sizes for a TMP2B_SENSITIVE
are not affected by the sizes of those parameters.

Table 189 — Definition of TPM2B_SENSITIVE Structure <IN/OUT>
Parameter

Type

Description

size

UINT16

size of the private structure

sensitiveArea

TPMT_SENSITIVE

an unencrypted sensitive area

Page 132
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

12.3.4 Encryption
A TPMS_SENSITIVE is the input to the encryption process. All TPMS_ENCRYPT structures are CFBencrypted using a key and Initialization Vector (IV) that are derived from a seed value.
The method of generating the key and IV is described in “Protected Storage” subclause “Symmetric
Encryption.” in Part 1.
12.3.5 Integrity
The integrity computation is used to ensure that a protected object is modified when stored in memory
outside of the TPM.
The method of protecting the integrity of the sensitive area is described in “Protected Storage” subclause
“Integrity” in Part 1.
12.3.6 _PRIVATE
This structure is defined to size the contents of a TPM2B_PRIVATE. This structure is not directly
marshaled or unmarshaled.
For TPM2_Duplicate() and TPM2_Import(), the TPM2B_PRIVATE may contain multiply encrypted data
and two integrity values. In some cases, the sensitive data is not encrypted and the integrity value is not
present.
For TPM2_Load() and TPM2_Create(), integrityInner is always present.
If integrityInner is present, it and sensitive are encrypted as a single block.
When an integrity value is not needed, it is not present and it is not represented by an Empty Buffer.
Table 190 — Definition of _PRIVATE Structure <>
Parameter

Type

Description

integrityOuter

TPM2B_DIGEST

integrityInner

TPM2B_DIGEST

could also be a TPM2B_IV

sensitive

TPMT_SENSITIVE

the sensitive area

12.3.7 TPM2B_PRIVATE
The TPM2B_PRIVATE structure is used as a parameter in multiple commands that create, load, and
modify the sensitive area of an object.
Table 191 — Definition of TPM2B_PRIVATE Structure <IN/OUT, S>
Parameter

Type

Description

size

UINT16

size of the private structure

buffer[size] {:sizeof(_PRIVATE)}

BYTE

an encrypted private area

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 133
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

12.4 Identity Object
12.4.1 Description
An identity object is used to convey credential protection value (CV) to a TPM that can load the object
associated with the object. The CV is encrypted to a storage key on the target TPM, and if the credential
integrity checks and the proper object is loaded in the TPM, then the TPM will return the CV.
12.4.2 _ID_OBJECT
This structure is used for sizing the TPM2_ID_OBJECT.
Table 192 — Definition of _ID_OBJECT Structure <>
Parameter

Type

Description

integrityHMAC

TPM2B_DIGEST

HMAC using the nameAlg of the storage key on the target
TPM

encIdentity

TPM2B_DIGEST

credential protector information returned if name matches the
referenced object
All of the encIdentity is encrypted, including the size field.
NOTE

The TPM is not required to check that the size is not larger
than the digest of the nameAlg. However, if the size is
larger, the ID object may not be usable on a TPM that has
no digest larger than produced by nameAlg.

12.4.3 TPM2B_ID_OBJECT
This structure is an output from TPM2_MakeCredential() and is an input to TPM2_ActivateCredential().
Table 193 — Definition of TPM2B_ID_OBJECT Structure <IN/OUT>
Parameter

Type

Description

size

UINT16

size of the credential structure

credential[size]{:sizeof(_ID_OBJECT)}

BYTE

an encrypted credential area

Page 134
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

13 NV Storage Structures
13.1 TPM_NV_INDEX
A TPM_NV_INDEX is used to reference a defined location in NV memory. The format of the Index is
changed from TPM 1.2 in order to include the Index in the reserved handle space. Handles in this range
use the digest of the public area of the Index as the Name of the entity in authorization computations
The 32-bit TPM 1.2 NV Index format is shown in Figure 4. In order to allow the Index to fit into the 24 bits
available in the reserved handle space, the Index value format is changed as shown in Figure 5.
3 3 2 2 2 2 2 2 2
1 0 9 8 7 6 5 4 3

1 1
6 5

T P U D reserved

0
0

Purview

Index

Figure 4 — TPM 1.2 TPM_NV_INDEX
3
1

2 2
4 3

0
0

TPM_HT_NV_INDEX

Index

Figure 5 — TPM 2.0 TPM_NV_INDEX
NOTE

This TPM_NV_INDEX format does not retain the Purview field and the D bit is not a part of an Index
handle as in TPM 1.2. The TPMA_NV_PLATFORMCREATE attribute is a property of an Index that
provides functionality similar to the D bit.

A valid Index handle will have an MSO of TPM_HT_NV_INDEX.
NOTE

This structure is not used. It is defined here to indicate how the fields of the handle are assigned. The
exemplary unmarshaling code unmarshals a TPM_HANDLE and validates that it is in the range for a
TPM_NV_INDEX.

Table 194 — Definition of (UINT32) TPM_NV_INDEX Bits <>
Bit

Name

Definition

23:0

index

The index of the NV location

31:24

RH_NV

constant value of TPM_HT_NV_INDEX indicating the NV Index range

#TPM_RC_VALUE

response code returned if unmarshaling of this type fails because the handle
value is incorrect

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 135
October 31, 2013

Part 2: Structures

Trusted Platform Module Library
Table 195 — Options for space Field of TPM_NV_INDEX

Some prior versions of this specification contained a table here that assigned subsets of the index field to
different entities. Since this assignment was a convention and not an architectural element of the TPM,
the table was removed and the information is now contained in a registry document that is maintained by
the TCG.
13.2 TPMA_NV (NV Index Attributes)
This structure allows the TPM to keep track of the data and permissions to manipulate an NV Index.
The platform controls (TPMA_NV_PPWRITE and TPMA_NV_PPREAD) and owner controls
(TPMA_NV_OWNERWRITE and TPMA_NV_OWNERREAD) give the platform and owner access to NV
Indexes using platformAuth or ownerAuth rather than the authValue or authPolicy of the Index.
If access to an NV Index is to be restricted based on PCR, then an appropriate authPolicy shall be
provided.
NOTE

platformAuth or ownerAuth can be provided in any type of authorization session or as a password.

If TPMA_NV_AUTHREAD is SET, then the Index may be read if the Index authValue is provided. If
TPMA_NV_POLICYREAD is SET, then the Index may be read if the Index authPolicy is satisfied.
At least one of TPMA_NV_PPREAD,
TPMA_NV_POLICYREAD shall be SET.

TPMA_NV_OWNERREAD,

TPMA_NV_AUTHREAD,

or

If TPMA_NV_AUTHWRITE is SET, then the Index may be written if the Index authValue is provided. If
TPMA_NV_POLICYWRITE is SET, then the Index may be written if the Index authPolicy is satisfied.
At least one of TPMA_NV_PPWRITE, TPMA_NV_OWNERWRITE TPMA_NV_AUTHWRITE, or
TPMA_NV_POLICYWRITE shall be SET.
If TPMA_NV_WRITELOCKED is SET, then the Index may not be written. If TPMA_NV_WRITEDEFINE is
SET, TPMA_NV_WRITELOCKED may not be CLEAR except by deleting and redefining the Index. If
TPMA_NV_WRITEDEFINE is CLEAR, then TPMA_NV_WRITELOCK will be CLEAR on the next
TPM2_Startup(TPM_SU_CLEAR).
If TPMA_NV_READLOCKED is SET, then the Index may not be read. TPMA_NV_READLOCK will be
CLEAR on the next TPM2_Startup(TPM_SU_CLEAR).
NOTE

The TPM is expected to maintain indicators to indicate that the Index is temporarily locked. The state of
these indicators is reported in the TPMA_NV_READLOCKED and TPMA_NV_WRITELOCKED attributes.

If TPMA_NV_EXTEND is SET, then writes to the Index will cause an update of the Index using the extend
operation with the nameAlg used to create the digest.
Only one of TPMA_NV_EXTEND, TPMA_NV_COUNTER, or TPMA_NV_BITS may be set.
When
the
Index
is
created
(TPM2_NV_DefineSpace()),
TPMA_NV_WRITELOCKED,
TPMA_NV_READLOCKED, TPMA_NV_WRITTEN shall all be CLEAR in the parameter that defines the
attributes of the created Index.

Page 136
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

Table 196 — Definition of (UINT32) TPMA_NV Bits
Bit

Name

Description

0

TPMA_NV_PPWRITE

SET (1): The Index data can be written if platformAuth is provided.
CLEAR (0): Writing of the Index data cannot be authorized with
platformAuth.

1

TPMA_NV_OWNERWRITE

SET (1): The Index data can be written if ownerAuth is provided.
CLEAR (0): Writing of the Index data cannot be authorized with
ownerAuth.

2

TPMA_NV_AUTHWRITE

SET (1): Authorizations to change the Index contents that require
USER role may be provided with an HMAC session or password.
CLEAR (0): Authorizations to change the Index contents that require
USER role may not be provided with an HMAC session or password.

3

TPMA_NV_POLICYWRITE

SET (1): Authorizations to change the Index contents that require
USER role may be provided with a policy session.
CLEAR (0): Authorizations to change the Index contents that require
USER role may not be provided with a policy session.
NOTE

TPM2_NV_ChangeAuth() always requires that authorization be
provided in a policy session.

4

TPMA_NV_COUNTER

SET (1): Index contains an 8-octet value that is to be used as a
counter and can only be modified with TPM2_NV_Increment().
CLEAR (0): The Index is not a counter.

5

TPMA_NV_BITS

SET (1): Index contains an 8-octet value to be used as a bit field and
can only be modified with TPM2_NV_SetBits().
CLEAR (0): The Index is not a bit field.

6

TPMA_NV_EXTEND

SET (1): Index contains a digest-sized value used like a PCR. The
Index may only be modified using TPM2_NV_Extend. The extend will
use the nameAlg of the Index.
CLEAR (0): Index is not a PCR.

9:7

Reserved

shall be zero
reserved for use in defining additional write controls

10

TPMA_NV_POLICY_DELETE

SET (1): Index may not be deleted unless the authPolicy is satisfied.
CLEAR (0): Index may be deleted with proper platform or owner
authorization.

11

TPMA_NV_WRITELOCKED

SET (1): Index cannot be written.
CLEAR (0): Index can be written.

12

TPMA_NV_WRITEALL

SET (1): A partial write of the Index data is not allowed. The write
size shall match the defined space size.
CLEAR (0): Partial writes are allowed. This setting is required if
TPMA_NV_BITS is SET.

13

TPMA_NV_WRITEDEFINE

SET (1): TPM2_NV_WriteLock() may be used to prevent further
writes to this location.
CLEAR (0): TPM2_NV_WriteLock() does not block subsequent
writes.

14

TPMA_NV_WRITE_STCLEAR

SET (1): TPM2_NV_WriteLock() may be used to prevent further
writes to this location until the next TPM Reset or TPM Restart.
CLEAR (0): A write to this Index with a data size of zero does not
change the write access.

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 137
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

Bit

Name

Description

15

TPMA_NV_GLOBALLOCK

SET (1): If TPM2_NV_GlobalWriteLock() is successful, then further
writes to this location are not permitted until the next TPM Reset or
TPM Restart.
CLEAR (0): TPM2_NV_GlobalWriteLock() has no effect on the
writing of the data at this Index.

16

TPMA_NV_PPREAD

SET (1): The Index data can be read if platformAuth is provided.
CLEAR (0): Reading of the Index data cannot be authorized with
platformAuth.

17

TPMA_NV_OWNERREAD

SET (1): The Index data can be read if ownerAuth is provided.
CLEAR (0): Reading of the Index data cannot be authorized with
ownerAuth.

18

TPMA_NV_AUTHREAD

SET (1): The Index data may be read if the authValue is provided.
CLEAR (0): Reading of the Index data cannot be authorized with the
Index authValue.

19

TPMA_NV_POLICYREAD

SET (1): The Index data may be read if the authPolicy is satisfied.
CLEAR (0): Reading of the Index data cannot be authorized with the
Index authPolicy.

Reserved

shall be zero
reserved for use in defining additional read controls

25

TPMA_NV_NO_DA

SET (1): Authorization failures of the Index do not affect the DA logic
and authorization of the Index is not blocked when the TPM is in
Lockout mode.
CLEAR (0): Authorization failures of the Index will increment the
authorization failure counter and authorizations of this Index are not
allowed when the TPM is in Lockout mode.

26

TPMA_NV_ORDERLY

SET (1): NV Index state is only required to be saved when the TPM
performs an orderly shutdown (TPM2_Shutdown()). Only an Index
with TPMA_NV_COUNTER SET may have this setting.
CLEAR (0): NV Index state is required to be persistent after the
command to update the Index completes successfully (that is, the NV
update is synchronous with the update command).

27

TPMA_NV_CLEAR_STCLEAR

SET (1): TPMA_NV_WRITTEN for the Index is CLEAR by TPM
Reset or TPM Restart.
CLEAR (0): TPMA_NV_WRITTEN is not changed by TPM Restart.

24:20

NOTE

This attribute may only be SET if TPMA_NV_COUNTER is not
SET.

NOTE

If the TPMA_NV_ORDERLY is SET, TPMA_NV_WRITTEN will
be CLEAR by TPM Reset.

28

TPMA_NV_READLOCKED

SET (1): Reads of the Index are blocked until the next TPM Reset or
TPM Restart.
CLEAR (0): Reads of the Index are allowed if proper authorization is
provided.

29

TPMA_NV_WRITTEN

SET (1): Index has been written.
CLEAR (0): Index has not been written.

30

TPMA_NV_PLATFORMCREATE

SET (1): This Index may be undefined with platformAuth but not with
ownerAuth.
CLEAR (0): This Index may be undefined using ownerAuth but not
with platformAuth.
The TPM will validate that this attribute is SET when the Index is
defined using platformAuth and will validate that this attribute is
CLEAR when the Index is defined using ownerAuth.

Page 138
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

Bit

Name

Description

31

TPMA_NV_READ_STCLEAR

SET (1): TPM2_NV_ReadLock() may be used to SET
TPMA_NV_READLOCKED for this Index.
CLEAR (0): TPM2_NV_ReadLock() has no effect on this Index.

13.3 TPMS_NV_PUBLIC
This structure describes an NV Index.
Table 197 — Definition of TPMS_NV_PUBLIC Structure
Name

Type

Description

nvIndex

TPMI_RH_NV_INDEX

the handle of the data area

nameAlg

TPMI_ALG_HASH

hash algorithm used to compute the name of the
Index and used for the authPolicy

attributes

TPMA_NV

the Index attributes

authPolicy

TPM2B_DIGEST

the access policy for the Index

dataSize{:MAX_NV_INDEX_SIZE}

UINT16

the size of the data area
The
maximum
size is implementationdependent. The minimum maximum size is
platform-specific.

#TPM_RC_SIZE

response code returned when the requested size
is too large for the implementation

13.4 TPM2B_NV_PUBLIC
This structure is used when a TPMS_NV_PUBLIC is sent on the TPM interface.
Table 198 — Definition of TPM2B_NV_PUBLIC Structure
Name

Type

Description

size=

UINT16

size of nvPublic

nvPublic

TPMS_NV_PUBLIC

the public area

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 139
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

14 Context Data
14.1 Introduction
This clause defines the contents of the
TPM2_ContextLoad() command parameters.

TPM2_ContextSave()

response

parameters

and

If the parameters provided by the caller in TPM2_ContextLoad() do not match the values returned by the
TPM when the context was saved, the integrity check of the TPM2B_CONTEXT will fail and the object or
session will not be loaded.
14.2 TPM2B_CONTEXT_SENSITIVE
This structure holds the object or session context data. When saved, the full structure is encrypted.
Table 199 — Definition of TPM2B_CONTEXT_SENSITIVE Structure <IN/OUT>
Parameter

Type

size

Description

UINT16

buffer[size]{:MAX_CONTEXT_SIZE} BYTE

the sensitive data

14.3 TPMS_CONTEXT_DATA
This structure holds the integrity value and the encrypted data for a context.
Table 200 — Definition of TPMS_CONTEXT_DATA Structure <IN/OUT, S>
Parameter

Type

Description

integrity

TPM2B_DIGEST

the integrity value

encrypted

TPM2B_CONTEXT_SENSITIVE

the sensitive area

14.4 TPM2B_CONTEXT_DATA
This structure is used in a TPMS_CONTEXT.
Table 201 — Definition of TPM2B_CONTEXT_DATA Structure <IN/OUT>
Parameter

Type

size

Description

UINT16

buffer[size] {:sizeof(TPMS_CONTEXT_DATA)} BYTE

Page 140
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

14.5 TPMS_CONTEXT
This structure is used in TPM2_ContextLoad() and TPM2_ContextSave(). If the values of the
TPMS_CONTEXT structure in TPM2_ContextLoad() are not the same as the values when the context
was saved (TPM2_ContextSave()), then the TPM shall not load the context.
Saved object contexts shall not be loaded as long as the associated hierarchy is disabled.
Saved object contexts are invalidated when the Primary Seed of their hierarchy changes. Objects in the
Endorsement hierarchy are invalidated when either the EPS or SPS is changed.
When an object has the stClear attribute, it shall not be possible to reload the context or any descendant
object after a TPM Reset or TPM Restart.
NOTE 1

The reference implementation prevents reloads after TPM Restart by including the curre nt value of a
clearCount in the saved object context. When an object is loaded, this value is compared with the current
value of the clearCount if the object has the stClear attribute. If the values are not the same, then the
object cannot be loaded.

A sequence value is contained within the integrity-protected part of the saved context. The sequence
value is repeated in the sequence parameter of the TPMS_CONTEXT of the context. The sequence
parameter, along with other values, is used in the generation the protection values of the context.
If the integrity value of the context is valid, but the sequence value of the decrypted context does not
match the value in the sequence parameter, then TPM shall enter the failure mode because this is
indicative of a specific type of attack on the context values.
NOTE 2

If the integrity value is correct, but the decryption fails and produces the wrong value for sequence, this
implies that either the TPM is faulty or an external entity is able to forge an integrity val ue for the context
but they have insufficient information to know what the encryption key of the context. Since the TPM
generated the valid context, then there is no reason for the sequence value in the context to be decrypted
incorrectly other than the TPM is faulty or the TPM is under attack. In either case, it is appropriate for the
TPM to enter failure more.

Table 202 — Definition of TPMS_CONTEXT Structure
Name

Type

Description

sequence

UINT64

the sequence number of the context
NOTE

Transient object contexts and
contexts used different counters.

session

savedHandle

TPMI_DH_CONTEXT

the handle of the session, object or sequence

hierarchy

TPMI_RH_HIERARCHY+

the hierarchy of the context

contextBlob

TPM2B_CONTEXT_DATA

the context data and integrity HMAC

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 141
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

14.6 Parameters of TPMS_CONTEXT
14.6.1 sequence
The sequence parameter is used to differentiate the contexts and to allow the TPM to create a different
encryption key for each context. Objects and sessions use different sequence counters. The sequence
counter for objects (transient and sequence) is incremented when an object context is saved, and the
sequence counter for sessions increments when a session is created or when it is loaded
(TPM2_ContextLoad()). The session sequence number is the contextID counter.
For a session, the sequence number also allows the TRM to find the “older” contexts so that they may be
refreshed if the contextID are too widely separated.
If an input value for sequence is larger than the value used in any saved context, the TPM shall return an
error (TPM_RC_VALUE) and do no additional processing of the context.
If the context is a session context and the input value for sequence is less than the current value of
contextID minus the maximum range for sessions, the TPM shall return an error (TPM_RC_VALUE) and
do no additional processing of the context.
14.6.2 savedHandle
For a session, this is the handle that was assigned to the session when it was saved. For a transient
object, the handle will have one of the values shown in Table 203.
If the handle type for savedHandle is TPM_HT_TRANSIENT, then the low order bits are used to
differentiate static objects from sequence objects.
If an input value for handle is outside of the range of values used by the TPM, the TPM shall return an
error (TPM_RC_VALUE) and do no additional processing of the context.
Table 203 — Context Handle Values
Value

Description

0x02xxxxxx

an HMAC session context

0x03xxxxxx

a policy session context

0x80000000

an ordinary transient object

0x80000001

a sequence object

0x80000002

a transient object with the stClear attribute SET

Page 142
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

14.6.3 hierarchy
This is the hierarchy (TPMI_RH_HIERARCHY) for the saved context and determines the proof value used
in the construction of the encryption and integrity values for the context. For session and sequence
contexts, the hierarchy is TPM_RC_NULL. The hierarchy for a transient object may be TPM_RH_NULL
but it is not required.
14.7 Context Protection
14.7.1 Context Integrity
The integrity of the context blob is protected by an HMAC. The integrity value is constructed such that
changes to the component values will invalidate the context and prevent it from being loaded.
Previously saved contexts for objects in the Platform hierarchy shall not be loadable after the PPS is
changed.
Previously saved contexts for objects in the Storage hierarchy shall not be loadable after the SPS is
changed.
Previously saved contexts for objects in the Endorsement hierarchy shall not be loadable after either the
EPS or SPS is changed.
Previously saved sessions shall not be loadable after the SPS changes.
Previously saved contexts for objects that have their stClear attribute SET shall not be loadable after a
TPM Restart. If a Storage Key has its stClear attribute SET, the descendants of this key shall not be
loadable after TPM Restart.
Previously saved contexts for a session and objects shall not be loadable after a TPM Reset.
A saved context shall not be loaded if its HMAC is not valid. The equation for computing the HMAC for a
context is found in “Context Integrity Protection” in Part 1.
14.7.2 Context Confidentiality
The context data of sessions and objects shall be protected by symmetric encryption using CFB. The
method for computing the IV and encryption key is found in “Context Confidentiality Protection” in Part 1.

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 143
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

15 Creation Data
15.1 TPMS_CREATION_DATA
This structure provides information relating to the creation environment for the object. The creation data
includes the parent Name, parent Qualified Name, and the digest of selected PCR. These values
represent the environment in which the object was created. Creation data allows a relying party to
determine if an object was created when some appropriate protections were present.
When the object is created, the structure shown in Table 204 is generated and a ticket is computed over
this data.
If
the
parent
is
a
permanent
handle
(TPM_RH_OWNER,
TPM_RH_PLATFORM,
TPM_RH_ENDORSEMENT, or TPM_RH_NULL), then parentName and parentQualifiedName will be set
to the parent handle value and parentNameAlg will be TPM_ALG_NULL.
Table 204 — Definition of TPMS_CREATION_DATA Structure <OUT>
Parameter

Type

Description

pcrSelect

TPML_PCR_SELECTION

list indicating the PCR included in pcrDigest

pcrDigest

TPM2B_DIGEST

digest of the selected PCR using nameAlg of the object for
which this structure is being created
pcrDigest.size shall be zero if the pcrSelect list is empty.

locality

TPMA_LOCALITY

the locality at which the object was created

parentNameAlg

TPM_ALG_ID

nameAlg of the parent

parentName

TPM2B_NAME

Name of the parent at time of creation
The size will match digest size associated with parentNameAlg
unless it is TPM_ALG_NULL, in which case the size will be 4
and parentName will be the hierarchy handle.

parentQualifiedName

TPM2B_NAME

Qualified Name of the parent at the time of creation
Size is the same as parentName.

outsideInfo

TPM2B_DATA

association with additional information added by the key
creator
This will be the contents of the outsideInfo parameter in
TPM2_Create() or TPM2_CreatePrimary().

15.2 TPM2B_CREATION_DATA
This structure is created by TPM2_Create() and TPM2_CreatePrimary(). It is never entered into the TPM
and never has a size of zero.
Table 205 — Definition of TPM2B_CREATION_DATA Structure <OUT>
Parameter

Type

Description

size=

UINT16

size of the creation data

creationData

TPMS_CREATION_DATA

Page 144
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

Annex A
(informative)
Algorithm Constants
A.1

Introduction

This annex contains constants that are defined by algorithms.

A.2
A.2.1

Allowed Hash Algorithms
SHA1
Table 206 — Defines for SHA1 Hash Values

Name

Value

SHA1_DIGEST_SIZE

20

SHA1_BLOCK_SIZE

64

SHA1_DER_SIZE

Description

15

SHA1_DER

A.2.2

Values are in octets.

{0x30,0x21,0x30,0x09,0x06,0x05,0x2B,0x0E,
0x03,0x02,0x1A,0x05,0x00,0x04,0x14}

SHA256
Table 207 — Defines for SHA256 Hash Values

Name

Value

SHA256_DIGEST_SIZE

32

SHA256_BLOCK_SIZE

64

SHA256_DER_SIZE

Description

19

SHA256_DER

A.2.3

Values are in octets.

{0x30,0x31,0x30,0x0d,0x06,0x09,0x60,0x86,
0x48,0x01,0x65,0x03,0x04,0x02,0x01,0x05,
0x00,0x04,0x20}

SHA384
Table 208 — Defines for SHA384 Hash Values

Name

Value

SHA384_DIGEST_SIZE

48

SHA384_BLOCK_SIZE

128

SHA384_DER_SIZE

Description

19

SHA384_DER

Family “2.0”
Level 00 Revision 00.99

Values are in octets.

{0x30,0x41,0x30,0x0d,0x06,0x09,0x60,0x86,
0x48,0x01,0x65,0x03,0x04,0x02,0x02,0x05,
0x00,0x04,0x30}

Published
Copyright © TCG 2006-2013

Page 145
October 31, 2013

Part 2: Structures
A.2.4

Trusted Platform Module Library

SHA512
Table 209 — Defines for SHA512 Hash Values

Name

Value

SHA512_DIGEST_SIZE

64

SHA512_BLOCK_SIZE

128

SHA512_DER_SIZE

Description

19

SHA512_DER

A.2.5

Values are in octets.

{0x30,0x51,0x30,0x0d,0x06,0x09,0x60,0x86,
0x48,0x01,0x65,0x03,0x04,0x02,0x03,0x05,
0x00,0x04,0x40}

SM3_256
Table 210 — Defines for SM3_256 Hash Values

Name

Value

Description

SM3_256_DIGEST_SIZE

32

Values are in octets.

SM3_256_BLOCK_SIZE

64

??

SM3_256_DER_SIZE

18

SM3_256_DER

A.3

{0x30,0x30,0x30,0x0c,0x06,0x08,0x2a,0x81,
0x1c,0x81,0x45,0x01,0x83,0x11,0x05,0x00,
0x04,0x20}

Unknown

Architectural Limits
Table 211 — Defines for Architectural Limits Values

Name
MAX_SESSION_NUMBER

Page 146
October 31, 2013

Value
3

Description
the maximum number of authorization sessions that may be in a
command
This value may be increased if new commands require more than
two authorization handles.

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

Annex B
(informative)
Implementation Definitions
B.1

Introduction

This annex contains some of the tables that are used to define the desired implementation for the
automated tools.
NOTE

B.2

The reference implementation assumes that stdint.h is used.

Logic Values

The values in this clause are used to see the generation of the subsequent tables. These values should
not be changed.
Table 212 — Defines for Logic Values
Name

Value

YES

1

NO

0

TRUE

1

FALSE

0

SET

1

CLEAR

Description

0

B.3

Processor Values

These values are used to control generation of octet-swapping routines. The canonical octet ordering for
the TPM input/output buffer is “big endian” with the most significant octet of any datum at the lowest
address.
NOTE

The setting for the exemplar is for the x86 family of processor.

Table 213 — Defines for Processor Values
Name

Value

Description

BIG_ENDIAN_TPM

NO

set to YES or NO according to the processor

LITTLE_ENDIAN_TPM

YES

set to YES or NO according to the processor
NOTE

NO_AUTO_ALIGN

NO

set to YES if the processor does not allow unaligned accesses
NOTE

Family “2.0”
Level 00 Revision 00.99

BIG_ENDIAN and LITTLE_ENDIAN shall be set to opposite values.

If LITTLE_ENDIAN is YES, then the setting of this value has no effect.

Published
Copyright © TCG 2006-2013

Page 147
October 31, 2013

Part 2: Structures

B.4

Trusted Platform Module Library

Implemented Algorithms

Table 214 is used to indicate the algorithms that are implemented in a TPM. The selections in the Value
column may be changed to reflect the implementation. The values shown are illustrative.
The "Implemented" column contains a "Y", "YES", or blank to indicate that the command is present in the
implementation, an "N" or "NO" to indicate that the command is not implemented.
The leading and trailing “_” characters are to avoid name space collisions with some crypto libraries.

NOTE

Table 214 — Defines for Implemented Algorithms
Algorithm Name

Implemented

RSA

YES

SHA1

YES

HMAC

YES

AES

YES

MGF1

YES

XOR

YES

KEYEDHASH

YES

SHA256

YES

SHA384

NO

SHA512

NO

SM3_256

YES

SM4

Comments

YES

REQUIRED, do not change this value

REQUIRED, do not change this value

RSASSA

(YES * RSA)

requires RSA

RSAES

(YES * RSA)

requires RSA

RSAPSS

(YES * RSA)

requires RSA

OAEP

(YES * RSA)

requires RSA

ECC

YES

ECDH

(YES * ECC)

requires ECC

ECDSA

(YES * ECC)

requires ECC

ECDAA

(YES * ECC)

requires ECC

SM2

(YES * ECC)

requires ECC

ECSCHNORR

(YES * ECC)

requires ECC

ECMQV

(NO * ECC)

requires ECC

SYMCIPHER
KDF1_SP800_56a

YES

REQUIRED, at least one symmetric algorithm shall be implemented

(YES * ECC)

KDF2

NO

KDF1_SP800_108

YES

CTR

YES

OFB

YES

CBC

YES

CFB

YES

ECB

requires ECC

YES

B.5

REQUIRED, do not change this value

Implemented Commands

Page 148
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

This table is used to indicate which of the commands are implemented. In the reference implementation,
this table determines which commands can be called and drives the generation of various commanddependent switch statements.
The "Implemented or Dependent" column contains a "Y", "YES", or blank to indicate that the command is
present in the implementation; an "N" or "NO" to indicate that the command is not implemented; and an
algorithm value if implementation of the command is dependent on a setting in Table 214. Linkage to
Table 214 is not required and is provide as a convenience.
To indicate that the command is implemented, only "Y", "N", blank, or a value from Table 214 is allowed.
Table 215 — Defines for Implemented Commands
Name
ActivateCredential

Implemented
or Dependent

Comments

YES

Certify

Y

CertifyCreation

Y

ChangeEPS

Y

ChangePPS

Y

Clear

Y

ClearControl

Y

ClockRateAdjust

Y

ClockSet

Y

Commit

ECC

ContextLoad

Y

Context

ContextSave

Y

Context

Create

Y

CreatePrimary

Y

DictionaryAttackLockReset

Y

DictionaryAttackParameters

Y

Duplicate

Y

ECC_Parameters

ECC

ECDH_KeyGen

ECC

ECDH_ZGen

ECC

EncryptDecrypt

Y

EventSequenceComplete

Y

EvictControl

Y

FieldUpgradeData

N

FieldUpgradeStart

N

FirmwareRead

N

FlushContext

Y

GetCapability

Y

GetCommandAuditDigest

Y

GetRandom

Y

GetSessionAuditDigest

Y

Family “2.0”
Level 00 Revision 00.99

Context

Published
Copyright © TCG 2006-2013

Page 149
October 31, 2013

Part 2: Structures

Name

Trusted Platform Module Library
Implemented
or Dependent

Comments

GetTestResult

Y

GetTime

Y

Hash

Y

HashSequenceStart

Y

HierarchyChangeAuth

Y

HierarchyControl

Y

HMAC

Y

HMAC_Start

Y

Import

Y

IncrementalSelfTest

Y

Load

Y

LoadExternal

Y

MakeCredential

Y

NV_Certify

Y

NV_ChangeAuth

Y

NV_DefineSpace

Y

NV_Extend

Y

NV_GlobalWriteLock

Y

NV_Increment

Y

NV_Read

Y

NV_ReadLock

Y

NV_ReadPublic

Y

NV_SetBits

Y

NV_UndefineSpace

Y

NV_UndefineSpaceSpecial

Y

NV_Write

Y

NV_WriteLock

Y

ObjectChangeAuth

Y

PCR_Allocate

Y

PCR_Event

Y

PCR_Extend

Y

PCR_Read

Y

PCR

PCR_Reset

Y

PCR

PCR_SetAuthPolicy

Y

PCR_SetAuthValue

Y

PolicyAuthorize

Y

Policy

PolicyAuthValue

Y

Policy

PolicyCommandCode

Y

Policy

PolicyCounterTimer

Y

Policy

PolicyCpHash

Y

Policy

Page 150
October 31, 2013

NV

PCR

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures
Implemented
or Dependent

Name

Comments

PolicyDuplicationSelect

Y

Policy

PolicyGetDigest

Y

Policy

PolicyLocality

Y

Policy

PolicyNameHash

Y

Policy

PolicyNV

Y

Policy

PolicyOR

Y

Policy

PolicyPassword

Y

Policy

PolicyPCR

Y

Policy

PolicyPhysicalPresence

Y

Policy

PolicyRestart

Y

PolicySecret

Y

Policy

PolicySigned

Y

Policy

PolicyTicket

Y

Policy

PP_Commands

Y

Quote

Y

ReadClock

Y

ReadPublic

Y

Rewrap

Y

RSA_Decrypt

RSA

RSA_Encrypt

RSA

SelfTest

Y

SequenceComplete

Y

SequenceUpdate

Y

SetAlgorithmSet

Y

SetCommandCodeAuditStatus

Y

SetPrimaryPolicy

Y

Shutdown

Y

Sign

Y

StartAuthSession

Y

Startup

Y

StirRandom

Y

TestParms

Y

Unseal

Y

VerifySignature

Y

ZGen_2Phase

Y

EC_Ephemeral

Y

PolicyNvWritten

Y

B.6

Algorithm Constants

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 151
October 31, 2013

Part 2: Structures
B.6.1

Trusted Platform Module Library

RSA
Table 216 — Defines for RSA Algorithm Constants

Name

Value

Comments

RSA_KEY_SIZES_BITS

{1024, 2048}

braces because this is a
list value

MAX_RSA_KEY_BITS

2048

MAX_RSA_KEY_BYTES

((MAX_RSA_KEY_BITS + 7) / 8)

B.6.2

ECC
Table 217 — Defines for ECC Algorithm Constants

Name

Value

ECC_CURVES

{TPM_ECC_NIST_P256, TPM_ECC_BN_P256,
TPM_ECC_SM2_P256}

ECC_KEY_SIZES_BITS

{256}

MAX_ECC_KEY_BITS

256

MAX_ECC_KEY_BYTES

((MAX_ECC_KEY_BITS + 7) / 8)

B.6.3

Comments

this is a list value with
length of one

AES
Table 218 — Defines for AES Algorithm Constants

Name

Value

AES_KEY_SIZES_BITS

{128}

MAX_AES_KEY_BITS

128

MAX_AES_BLOCK_SIZE_BYTES

16

MAX_AES_KEY_BYTES

((MAX_AES_KEY_BITS + 7) / 8)

B.6.4

Comments

SM4
Table 219 — Defines for SM4 Algorithm Constants

Name

Value

SM4_KEY_SIZES_BITS

{128}

MAX_SM4_KEY_BITS

128

MAX_SM4_BLOCK_SIZE_BYTES

16

MAX_SM4_KEY_BYTES

((MAX_SM4_KEY_BITS + 7) / 8)

Page 152
October 31, 2013

Comments

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library
B.6.5

Part 2: Structures

Symmetric

The definitions in this table are derived from the implemented symmetric algorithms.
Table 220 — Defines for Symmetric Algorithm Constants
Name

Value

MAX_SYM_KEY_BITS

MAX_AES_KEY_BITS

MAX_SYM_KEY_BYTES

MAX_AES_KEY_BYTES

MAX_SYM_BLOCK_SIZE

MAX_AES_BLOCK_SIZE_BYTES

Family “2.0”
Level 00 Revision 00.99

Comments

Published
Copyright © TCG 2006-2013

Page 153
October 31, 2013

Part 2: Structures

B.7

Trusted Platform Module Library

Implementation Specific Values

The values listed in Table 221 are defined for a specific TPM implementation. The numbers in the Value
column may be changed to reflect the implementation. The values shown are illustrative.
Table 221 — Defines for Implementation Values
Name

Value

Description

FIELD_UPGRADE_IMPLEMENTED

NO

temporary define

BSIZE

UINT16

size used for internal storage of
the size field of a TPM2B
This is the definition used for
the reference design.
Compilation with this value
changed may cause warnings
about conversions.

BUFFER_ALIGNMENT

4

sets the size granularity for the
buffers in a TPM2B structure
TPMxB buffers will be assigned
a space that is a multiple of this
value. This does not set the size
limits for IO. Those are set by
the canonical form of the
TPMxB

IMPLEMENTATION_PCR

24

the number of PCR in the TPM

PLATFORM_PCR

24

the number of PCR required by
the relevant platform
specification

DRTM_PCR

17

the DRTM PCR

HCRTM_PCR

0

the PCR that will receive the HCRTM value at TPM2_Startup

NUM_LOCALITIES

5

the number of localities
supported by the TPM
This is expected to be either 5
for a PC, or 1 for just about
everything else.

MAX_HANDLE_NUM

3

the maximum number of
handles in the handle area
This should be produced by the
Part 3 parser but is here for
now.

MAX_ACTIVE_SESSIONS

64

the number of simultaneously
active sessions that are
supported by the TPM
implementation

CONTEXT_SLOT

UINT16

the type of an entry in the array
of saved contexts

CONTEXT_COUNTER

UINT64

the type of the saved session
counter

MAX_LOADED_SESSIONS

3

the number of sessions that the
TPM may have in memory

MAX_SESSION_NUM

3

this is the current maximum
value

Page 154
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99

Trusted Platform Module Library

Part 2: Structures

Name

Value

Description

MAX_LOADED_OBJECTS

3

the number of simultaneously
loaded objects that are
supported by the TPM; this
number does not include the
objects that may be placed in
NV memory by
TPM2_EvictControl().

MIN_EVICT_OBJECTS

2

the minimum number of evict
objects supported by the TPM

PCR_SELECT_MIN

((PLATFORM_PCR+7)/8)

PCR_SELECT_MAX

((IMPLEMENTATION_PCR+7)/8)

NUM_POLICY_PCR_GROUP

1

number of PCR groups that
have individual policies

NUM_AUTHVALUE_PCR_GROUP

1

number of PCR groups that
have individual authorization
values

MAX_CONTEXT_SIZE

4000

This may be larger than
necessary

MAX_DIGEST_BUFFER

1024

MAX_NV_INDEX_SIZE

2048

maximum data size allowed in
an NV Index

MAX_NV_BUFFER_SIZE

1024

maximum data size in one NV
read or write command

MAX_CAP_BUFFER

1024

NV_MEMORY_SIZE

16384

NUM_STATIC_PCR

16

MAX_ALG_LIST_SIZE

64

number of algorithms that can
be in a list

TIMER_PRESCALE

100000

nominal value for the pre-scale
value of Clock (the number of
cycles of the TPM's oscillator for
each increment of Clock)

PRIMARY_SEED_SIZE

32

size of the Primary Seed in
octets

CONTEXT_ENCRYPT_ALG

TPM_ALG_AES

context encryption algorithm

CONTEXT_ENCRYPT_KEY_BITS

MAX_SYM_KEY_BITS

context encryption key size in
bits

CONTEXT_ENCRYPT_KEY_BYTES

((CONTEXT_ENCRYPT_KEY_BITS+7
)/8)

CONTEXT_INTEGRITY_HASH_ALG

TPM_ALG_SHA256

context integrity hash algorithm

CONTEXT_INTEGRITY_HASH_SIZE

SHA256_DIGEST_SIZE

number of byes in the context
integrity digest

PROOF_SIZE

CONTEXT_INTEGRITY_HASH_SIZE

size of proof value in octets
This size of the proof should be
consistent with the digest size
used for context integrity.

NV_CLOCK_UPDATE_INTERVAL

12

the update interval expressed
as a power of 2 seconds

size of NV memory in octets

A value of 12 is 4,096 seconds
(~68 minutes).

Family “2.0”
Level 00 Revision 00.99

Published
Copyright © TCG 2006-2013

Page 155
October 31, 2013

Part 2: Structures

Trusted Platform Module Library

Name

Value

Description

NUM_POLICY_PCR

1

number of PCR that allow
policy/auth

MAX_COMMAND_SIZE

4096

maximum size of a command

MAX_RESPONSE_SIZE

4096

maximum size of a response

ORDERLY_BITS

8

number between 1 and 32
inclusive

MAX_ORDERLY_COUNT

((1 << ORDERLY_BITS) - 1)

maximum count of orderly
counter before NV is updated
This must be of the form 2N – 1
where 1 ≤ N ≤ 32.

ALG_ID_FIRST

TPM_ALG_FIRST

used by GetCapability()
processing to bound the
algorithm search

ALG_ID_LAST

TPM_ALG_LAST

used by GetCapability()
processing to bound the
algorithm search

MAX_SYM_DATA

128

this is the maximum number of
octets that may be in a sealed
blob.

MAX_RNG_ENTROPY_SIZE

64

RAM_INDEX_SPACE

512

RSA_DEFAULT_PUBLIC_EXPONENT

0x00010001

216 + 1

ENABLE_PCR_NO_INCREMENT

YES

indicates if the
TPM_PT_PCR_NO_INCREME
NT group is implemented

CRT_FORMAT_RSA

YES

PRIVATE_VENDOR_SPECIFIC_BYTES

((MAX_RSA_KEY_BYTES/2) * (3 +
CRT_FORMAT_RSA * 2))

Page 156
October 31, 2013

Published
Copyright © TCG 2006-2013

Family “2.0”
Level 00 Revision 00.99


