Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
The Trusted Platform Module (TPM) 2.0 library, standardized by ISO/IEC 11889, defines a secure cryptographic co-processor architecture used for platform integrity, key management, and attestation. The Canadian adoption CAN/CSA-ISO/IEC 11889-3-16 (identical to ISO/IEC 11889-3:2015) specifies the command interface of the TPM 2.0 library. This part is critical for developers integrating TPM into firmware, operating systems, or security applications within or destined for the Canadian market. The standard outlines the exact formats, parameters, sequencing, and response codes for every TPM 2.0 command, bridging the software stack with the hardware TPM.
CAN/CSA-ISO/IEC 11889-3-16 defines the complete set of commands a TPM 2.0 device must support, including command headers, authorization sessions, parameter structures, and response packaging. The scope covers all operational commands required for the TPM to be compliant with the library specification, such as:
The standard does not cover the TPM’s internal architecture or cryptographic algorithms (these are defined in Parts 1 and 2). Instead, it focuses solely on the interface contract between software and device, including byte-level encoding and required ordering.
Each command is transmitted as a serialized byte stream consisting of:
The response mirrors this with a response header, session area, and parameter area. The standard defines exact sizes and alignment rules for all fields, ensuring interoperability across different vendor TPM implementations.
Commands are grouped by functional domain. Table 1 summarizes the major categories and examples.
| Category | Purpose | Example Command |
|---|---|---|
| Administration | TPM initialization, self-test, and factory reset | TPM2_Startup, TPM2_SelfTest, TPM2_Shutdown |
| Key Management | Creation, loading, duplication, and eviction of keys | TPM2_Create, TPM2_Load, TPM2_EvictControl |
| Measurement | Managing Platform Configuration Registers (PCRs) | TPM2_PCR_Extend, TPM2_PCR_Reset, TPM2_PCR_Read |
| Attestation | Quote, timestamp, and key certification | TPM2_Quote, TPM2_GetTime, TPM2_CertifyCreation |
| Authorization & Sessions | Session start, policy construction, authentication | TPM2_StartAuthSession, TPM2_PolicyAuthValue, TPM2_PolicySecret |
| Random / Hash / HMAC | Basic cryptographic utilities | TPM2_GetRandom, TPM2_Hash, TPM2_HMAC |
| Audit & Capability | TPM information retrieval and audit control | TPM2_GetCapability, TPM2_ReadClock, TPM2_GetTestResult |
All commands return standard response codes (e.g., TPM_RC_SUCCESS, TPM_RC_VALUE, TPM_RC_SIZE, TPM_RC_SESSION_HANDLE). The standard mandates that a TPM must provide consistent error semantics so that software can reliably handle failures. Implementations must honor these codes without additional restrictions.
Developers integrating TPM 2.0 should pay close attention to the following aspects defined by CAN/CSA-ISO/IEC 11889-3-16:
Authorization sessions can be password-based, HMAC-session-based, or policy-based. The standard defines the session structure and how sessions interact with commands. Using policy sessions (TPM2_Policy*) allows fine-grained access control but requires careful state management.
Commands may include an encrypted session area to protect sensitive parameters (e.g., key material) over the interface. The standard defines the encryption scheme (CFB mode using the session key). Implementers must ensure the TPM and software agree on the session algorithms and nonce sizes.
The maximum command size is 224 − 1 bytes, though most practical commands are much smaller. Responses are similarly limited. Buffering logic must account for the maximum to avoid truncation.
TPM2_GetCapability (inputBufferSize) to determine the maximum command size supported by the specific chip. Sending a command larger than this limit will result in TPM_RC_FAILURE. Some commands accept multiple authorization sessions (e.g., TPM2_NV_Write can authorize with both the NVM index owner and the platform). The standard defines how sessions are concatenated and validated. Misordering session handles is a common implementation error.
CAN/CSA-ISO/IEC 11889-3-16 compliance is a requirement for TPMs used in certain Canadian government and regulated environments. Key aspects include:
Article based on CAN/CSA-ISO/IEC 11889-3-16: TPM 2.0 Library – Part 3: Commands. Published 2016 (confirmed current 2026). All technical details subject to revision; refer to the latest published edition for exact requirements.