CAN/CSA-ISO/IEC 11889-3-16: TPM 2.0 Library Part 3 – Commands and Interface Specification

Technical Overview of the Canadian Adoption of the ISO/IEC Standard for Trusted Platform Module Command Structures

Introduction

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.

Note: CAN/CSA-ISO/IEC 11889-3-16 is an identical adoption of ISO/IEC 11889-3:2015. No technical deviations exist; the Canadian standard simply adds national foreword and administrative details. This ensures that TPM 2.0 implementations meeting the international spec also satisfy Canadian requirements.

Scope

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:

  • Commands for TPM initialization and self-test (e.g., TPM2_Startup, TPM2_SelfTest).
  • Commands for key and data management (e.g., TPM2_Create, TPM2_Load, TPM2_Unseal, TPM2_EvictControl).
  • Commands for platform measurement (e.g., TPM2_PCR_Extend, TPM2_PCR_Read).
  • Commands for attestation and signing (e.g., TPM2_Quote, TPM2_GetTime).
  • Commands for session management (e.g., TPM2_StartAuthSession, TPM2_Policy* commands).
  • Administrative and audit commands (e.g., TPM2_GetCapability, TPM2_ReadClock).

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.

Caution: While the standard allows implementation flexibility, commands must be invoked in valid sequences defined by the TPM state machine. For example, TPM2_Startup must occur before any other command. Violating ordering often leads to TPM_RC_INITIALIZE or TPM_RC_NO_AP.

Technical Requirements

Command Structure

Each command is transmitted as a serialized byte stream consisting of:

  • Command header (tag, command size, command code).
  • Session area (authorizations and/or encrypted parameters).
  • Parameter area (command-specific data).

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.

Command Categories

Commands are grouped by functional domain. Table 1 summarizes the major categories and examples.

CategoryPurposeExample Command
AdministrationTPM initialization, self-test, and factory resetTPM2_Startup, TPM2_SelfTest, TPM2_Shutdown
Key ManagementCreation, loading, duplication, and eviction of keysTPM2_Create, TPM2_Load, TPM2_EvictControl
MeasurementManaging Platform Configuration Registers (PCRs)TPM2_PCR_Extend, TPM2_PCR_Reset, TPM2_PCR_Read
AttestationQuote, timestamp, and key certificationTPM2_Quote, TPM2_GetTime, TPM2_CertifyCreation
Authorization & SessionsSession start, policy construction, authenticationTPM2_StartAuthSession, TPM2_PolicyAuthValue, TPM2_PolicySecret
Random / Hash / HMACBasic cryptographic utilitiesTPM2_GetRandom, TPM2_Hash, TPM2_HMAC
Audit & CapabilityTPM information retrieval and audit controlTPM2_GetCapability, TPM2_ReadClock, TPM2_GetTestResult

Response Codes

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.

Implementation Highlights

Developers integrating TPM 2.0 should pay close attention to the following aspects defined by CAN/CSA-ISO/IEC 11889-3-16:

Session Handling

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.

Tip: For simple key usage without complex authorization, use password sessions (the default). Move to policy sessions only when you require locality, command sequencing, or multiple authentication factors. Reusing a session handle across unrelated commands can lead to unexpected policy failures.

Parameter Encryption and Decryption

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.

Command Size Limits

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.

Warning: Some TPMs may limit the actual transmission size due to hardware constraints. Always query the TPM using 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.

Multi‑session Commands

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.

Compliance Notes

CAN/CSA-ISO/IEC 11889-3-16 compliance is a requirement for TPMs used in certain Canadian government and regulated environments. Key aspects include:

  • International alignment: Full compliance with ISO/IEC 11889-3:2015 ensures global interoperability.
  • TCG Certification: TPMs claiming compliance to TPM 2.0 should pass the Trusted Computing Group (TCG) conformance test suite, which exercises all commands defined in Part 3.
  • FIPS 140‑2 / 140‑3: TPMs used in federal systems may require cryptographic algorithm validation (CAVP) and FIPS 140 certification, which imposes additional constraints beyond the CAN/CSA standard.
  • Documentation: Implementers should maintain a mapping of the implemented commands to the standard’s clauses. The CSA group may request such documentation during audits.
Important: Do not assume that all TPM 2.0 commands defined in Part 3 are mandatory. The standard defines “Required”, “Optional”, and “Deprecated” command classifications. Check the command tables in Annex A of ISO/IEC 11889-3:2015 to confirm which commands are mandatory for your target platform. Shipping a TPM that omits a required command (e.g., TPM2_Startup) will be non‑compliant.

FAQs

Q: Is CAN/CSA-ISO/IEC 11889-3-16 different from the international ISO/IEC 11889-3:2015?
A: No. It is an identical adoption. Only a Canadian foreword and minor administrative changes (such as references to CSA standards) are added. The technical content, including all command definitions and response codes, is identical.
Q: What is the relation between TPM 2.0 commands and TPM 1.2?
A: TPM 2.0 commands are entirely redesigned. TPM 1.2 commands (used in earlier versions of TPM) are not compatible. Migration requires rewriting the TPM software stack to use the new command set defined in this standard. The command structure, session model, and key hierarchy are different.
Q: How can I verify that my TPM implementation correctly implements the commands?
A: Use the TCG Conformance Test Suite (available from trusted computing.org) which validates each command listed in Part 3. For formal certification, engage a TCG-approved test laboratory. Additionally, ensure your TPM passes self-test (TPM2_SelfTest) and capability enumeration (TPM2_GetCapability) reliably.
Q: Are there any Canadian-specific modifications to the command set?
A: No. The Canadian adoption does not add, remove, or modify any commands. However, the standard is referenced by Canadian security policies (e.g., IT Security Guidance), so compliance should be demonstrated in procurement processes. Always consult the most recent version of the CSA standards catalogue for any amendments.


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.

📥 Standard Documents Download

🔒
Please wait 10 seconds, the download links will appear after the ad loads

Leave a Reply

Your email address will not be published. Required fields are marked *