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

1.1.1.1.1

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


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

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.

TPM_RC_UNBALANCED

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.

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.

TPM_RC_NO_RESULT

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

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

This cannot occur
implementation.

NOTE

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

TPM_RC_OBJECT_HANDLES

RC_WARN + 0x006

TPM_RC_LOCALITY

RC_WARN + 0x007

TPM_RC_YIELDED

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


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_CAP_HANDLES

0x00000001

TPML_HANDLE

TPM_CAP_COMMANDS

0x00000002

TPML_CCA

TPM_CAP_PP_COMMANDS

0x00000003

TPML_CC

TPM_CAP_AUDIT_COMMANDS

0x00000004

TPML_CC

TPM_CAP_PCRS

0x00000005

TPML_PCR_SELECTION

TPM_CAP_TPM_PROPERTIES

0x00000006

TPML_TAGGED_TPM_PROPERTY

TPM_CAP_PCR_PROPERTIES

0x00000007

(1)

TPM_CAP_ECC_CURVES

0x00000008

TPML_ALG_PROPERTY

TPML_TAGGED_PCR_PROPERTY
(1)

TPM_CAP_LAST

0x00000008

TPM_CAP_VENDOR_PROPERTY
0x00000100

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

PT_FIXED + 2
For this specification, the level is zero.

NOTE 2

The level is on the title page of the specification.

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

TPM_PT_DAY_OF_YEAR

PT_FIXED + 3
The Revision value is on the title page of the
specification.

 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

PT_FIXED + 4
The specification date is on the title page of the
specification.

 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

PT_FIXED + 15
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.

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

TPM_PT_HR_LOADED_MIN

PT_FIXED + 16
a

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

 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

PT_FIXED + 20
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.

 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

overload for using xor
NOTE

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


SM4

TPMI_ALG_SYM_MODE

TPM_ALG_SM4

NOTE

sym

TPMI_ALG_SYM_MODE

when selector may be any of the
symmetric block ciphers

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

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
TPMS_SCHEME_ECDH
TPM_ALG_ECDH
anySig

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

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+


keyBits

TPMI_RSA_KEY_BITS

number of bits in the public modulus

exponent
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

#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.

curveID
TPMI_ECC_CURVE

ECC curve ID

kdf

TPMT_KDF_SCHEME+


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

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

1.1.1.1.1
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

Values are in octets.

{0x30,0x21,0x30,0x09,0x06,0x05,0x2B,0x0E,0x03,0x02,0x1A,0x05,0x00,0x04,0x14}

A.2.2

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


Values are in octets.

{0x30,0x31,0x30,0x0d,0x06,0x09,0x60,0x86,0x48,0x01,0x65,0x03,0x04,0x02,0x01,0x05,0x00,0x04,0x20}

A.2.3
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


Values are in octets.

{0x30,0x51,0x30,0x0d,0x06,0x09,0x60,0x86,0x48,0x01,0x65,0x03,0x04,0x02,0x03,0x05,0x00,0x04,0x40}

A.2.5
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


{0x30,0x30,0x30,0x0c,0x06,0x08,0x2a,0x81,0x1c,0x81,0x45,0x01,0x83,0x11,0x05,0x00,0x04,0x20}

A.3
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


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


