TPM-based key attestation is a powerful security guarantee — it proves that a private key was generated inside a specific hardware module and cannot be exported. But testing attestation code paths normally requires a physical TPM chip on the test machine. The TPM PoC replaces the hardware with a software TPM daemon running in Docker, letting you validate every attestation step on any laptop or CI runner.

What it is

The TPM PoC is a Docker Compose setup that boots a software TPM daemon and runs a smoke test suite against it. The smoke tests exercise every primitive TigerTrust uses during agent attestation — provisioning the endorsement key and attestation key, signing, PCR quoting, and Credential Activation — and report pass or fail for each check. A green result confirms the attestation path is fully functional in a controlled environment.

When to use it

  • Test TPM attestation code paths in a CI environment without provisioning TPM-enabled build runners.
  • Validate the attestation flow end-to-end on a developer machine before deploying to hardware.
  • Reproduce an attestation failure in a controllable environment for debugging.
  • Confirm that a TPM key provisioning change does not break existing attestation flows.

Set it up

1

Prerequisites

You need Docker Engine 20.10 or later with the docker compose v2 plugin. Approximately 200 MB of free disk space is required for the image. No kernel TPM device or headers are needed on the host.
2

Build and start the TPM daemon

docker compose build
docker compose up -d swtpm
3

Run the smoke tests

docker compose run --rm smoke
This provisions the endorsement key and attestation key (idempotent — safe to re-run), then runs all attestation checks.

What you’ll see

The smoke test output reports each check individually:
CheckWhat it validates
EK and AK persistent handlesBoth keys are provisioned at known handles
AK public exportThe attestation key is exportable as PEM
EK public exportThe endorsement key is exportable
AK signature verificationA signature created by the AK is verifiable
PCR quoteA SHA-256 PCR quote over registers 0-7 verifies against the AK
Credential ActivationThe full make/activate round-trip recovers the correct secret
A green ALL CHECKS PASSED banner at the end confirms the harness is healthy.
The software TPM’s state is stored in a named Docker volume. Running the init step multiple times is safe — it checks for existing handles before provisioning. To start from a completely clean TPM state, run docker compose down -v to remove the volume, then start again.

TPM Attestation

How TigerTrust uses TPM attestation in production deployments.

TPM Enrollment

Enroll a device’s endorsement key against your workspace.

TPM Policies

PCR-gated issuance policies matched to attestation quotes.

Troubleshooting

Debug attestation failures step by step.