// the find
Azure/azure-utpm-c
TPM C library for use with Azure IoT SDKs
A C library that wrapped TPM 2.0 operations for use with Azure IoT Hub device provisioning via DPS. It handled the low-level TPM command codec and transport (socket, Linux /dev/tpm0, Win32) so IoT C SDK users could do TPM-backed attestation without touching the TCG spec directly. Deprecated by Microsoft in May 2023.
The tpm_codec layer abstracts the TCG marshal/unmarshal boilerplate reasonably well, covering the common TPM2_CreatePrimary / TPM2_ActivateCredential flows without pulling in the full TSS stack. Platform transport is cleanly split into tpm_comm_linux.c, tpm_comm_win32.c, and tpm_comm_emulator.c — easy to port. A TCP emulator and prebuilt Windows simulator exe are included, which makes local development possible without physical hardware. The unit test coverage for codec and comm layers is present and structured.
Officially deprecated and unsupported — Microsoft explicitly says no more patches, and DPS-TPM authentication is being dropped from the IoT C SDK entirely. 14 stars after years of existence signals this was never widely adopted outside Microsoft's own SDK consumers. The directory tree includes a prebuilt binary (Simulator.exe, Tpm.dll) committed directly to the repo with no build instructions for it, which is a supply-chain red flag. If you're starting a new IoT project needing TPM attestation, the recommended path is tpm2-tss with the OpenSSL engine, not this.