wolfTPM SPDM vs The Field

The Only SPDM Implementation with Hardware TPM Support

A Different Category

wolfTPM’s SPDM implementation is not a standalone SPDM library. It is SPDM integrated directly with hardware TPMs, a category that no other open-source project occupies. wolfTPM works hand-in-hand with Nuvoton and NSING to deliver SPDM on real hardware, with full TCG SPDM binding, PSK mode support, and transparent encrypted bus transfers.
That said, the core SPDM protocol implementation remains compact. Even with multi-vendor TPM support, PSK mode, and TCG binding, the library stays small.

Getting started with wolfSSL? Download the latest libraries and start exploring.

Size Comparison

Library Lang Lines Ratio Stars Status
wolfTPM/spdm C 4,020 1x Active
NVIDIA/spdm C++ 10,287 2.6x 12 Active
openspdm C 18,640 4.6x 21 Archived
libspdm C 40,346 10.0x 165 Active
rust-spdm Rust 59,981 14.9x 16 Archived
spdm-rs Rust 69,076 17.2x 50 Active

Lines of code (non-comment source lines):

Binary Footprint

Build: x86_64 macOS, Clang, default optimization, no LTO.

Metric wolfTPM/spdm libspdm
.text – Nuvoton 37 KB ~150–300 KB
.text – NSING ~38 KB ~150–300 KB
Stripped static lib ~45 KB ~400–800 KB
RAM usage ~31 KB Heap-dependent

wolfTPM’s SPDM uses fixed-size buffers (4 KB max) and zero heap allocation in critical paths. libspdm requires malloc-based dynamic allocation. wolfTPM also supports heap-allocated SPDM context via `–enable-smallstack` for platforms with limited stack space.

What Only wolfTPM Has

Capability wolfTPM/spdm libspdm NVIDIA spdm-rs
Nuvoton NPCT75x TPM Yes No No No
NSING NS350 TPM Yes No No No
PSK Mode Yes (NSING) No No No
TCG SPDM Binding Yes No No No
FIPS 140-2/3 Yes Yes (via OpenSSL) No No
DO-178C path Yes No No No
Zero alloc Yes No No No
Encrypted TPM bus Yes No No No

No other SPDM implementation integrates with hardware TPMs. wolfTPM is the only implementation with a natively FIPS-validated crypto stack; others require external FIPS-validated builds of OpenSSL or similar. wolfTPM is also the only implementation with PSK mode support and full TCG SPDM binding for transparent TPM command encryption.

Feature Comparison

Feature wolfTPM libspdm openspdm NVIDIA spdm-rs
SPDM Version 1.3 1.0-1.4 1.0-1.1 1.0-1.2 1.0-1.2
Requester Yes Yes Yes Yes Yes
Responder No Yes Yes Yes Yes
PSK Mode Yes (NSING) Yes No No No
TCG SPDM Yes No No No No
Crypto wolfCrypt OpenSSL OpenSSL mbedTLS ring
TPM Nuvoton + NSING No No No No
MCTP No Yes Yes Yes Yes
PCI-DOE No Yes Yes No Yes
Post-Quantum No Yes No No No
FIPS Crypto Yes No No No No

Cryptographic Algorithm Support

wolfTPM’s SPDM implements Algorithm Set B exclusively, the recommended set for high-security deployments. Both Nuvoton and NSING TPMs use the same algorithm set for identity key mode. NSING PSK mode uses the same algorithms for data transport, with HKDF-based key derivation from the pre-shared key.

Algorithm wolfTPM/spdm libspdm NVIDIA
Hash SHA-384 SHA2/SHA3/SM3 SHA-256/384/512
Signature ECDSA P-384 RSA/ECDSA/EdDSA/SM2 ECDSA P256/P384/P521
Key Exchange ECDHE P-384 / PSK FFDHE/ECDHE/SM2 ECDHE
AEAD AES-256-GCM AES-GCM/ChaCha20/SM4 AES-128-GCM

A Fair Comparison

wolfTPM’s SPDM occupies a unique position: it is a focused SPDM 1.3 requester implementing Algorithm Set B with native hardware TPM integration for two vendors (Nuvoton NPCT75x and NSING NS350). This includes PSK mode, full TCG SPDM binding, and transparent encrypted bus transfers, capabilities that no other implementation provides.
libspdm covers SPDM 1.0–1.4 with both requester and responder roles, multiple algorithm families, and post-quantum support, but has no TPM integration, no TCG binding, and no hardware key storage.
wolfTPM’s architecture has all the framework in place for standalone SPDM support as well. The spdm/ directory can be branched into its own repository for non-TPM SPDM use cases, and wolfSSL is ready to add responder role, additional algorithm sets, and broader transport coverage based on customer requirements and requests.

Summary

Claim Evidence
Smallest C SPDM with TPM 4,020 lines vs 40,346 (libspdm) — 10x smaller
Smallest binary 28 KB .text vs 150–300 KB+
Only SPDM with hardware TPM Nuvoton NPCT75x + NSING NS350 built-in
Only SPDM with PSK + TPM NSING NS350 PSK support
Only SPDM with TCG binding Transparent TPM command encryption
FIPS-validated crypto wolfCrypt FIPS 140-2/3
Embedded-optimized Fixed buffers, no heap, ~31 KB static context
Multi-vendor Developed in partnership with Nuvoton and NSING Technologies

 
For more information, visit github.com/wolfSSL/wolfTPM
If you have questions about any of the above, please contact us at facts@wolfssl.com or call us at +1 425 245 8247.

Download wolfSSL Now