Repository navigation
API Reference
github-actions[bot] edited this page Oct 6, 2026
·
3 revisions
Public APIs are declared in wolfspdm/spdm.h, plus wolfspdm/spdm_tcg.h,
spdm_nuvoton.h, spdm_nations.h, spdm_psk.h, and spdm_responder.h for
the TPM/TCG side.
All APIs return WOLFSPDM_SUCCESS (0) on success unless documented
otherwise; failures are negative error codes from wolfspdm/spdm_error.h.
wolfSPDM_InitwolfSPDM_InitStaticwolfSPDM_GetCtxSizewolfSPDM_Free-
wolfSPDM_New(only when built withWOLFSPDM_DYNAMIC_MEMORY)
wolfSPDM_SetIO-
wolfSPDM_SetMode/wolfSPDM_GetMode(WOLFSPDM_MODE_AUTO/_NUVOTON/_NATIONS/_NATIONS_PSK) -
wolfSPDM_SetResponderPubKey: pin the responder key (96-byte P-384 X‖Y) for cert-less operation -
wolfSPDM_SetRequesterKeyPair(WOLFSPDM_MUTUAL_AUTHbuilds, TCG or TPM profile) -
wolfSPDM_SetMaxVersion: cap the negotiated version (0x12-0x14) -
wolfSPDM_SetRequesterSessionId: rejects0x0000,0xFFFF, and low bytes0x10-0x1F -
wolfSPDM_SetTrustedCAs(not withWOLFSPDM_NO_CERT) -
wolfSPDM_AllowUntrustedCerts(not withWOLFSPDM_NO_CERT) -
wolfSPDM_SetKeyExchangePref(not withWOLFSPDM_NO_CERT); see Post-Quantum ML-KEM wolfSPDM_SetDebug
wolfSPDM_ConnectwolfSPDM_IsConnectedwolfSPDM_DisconnectwolfSPDM_GetSessionIdwolfSPDM_GetNegotiatedVersion-
wolfSPDM_GetVersion_Negotiated(older name forwolfSPDM_GetNegotiatedVersion) -
wolfSPDM_GetLastPeerError: Param1 of the last SPDM ERROR, 0 if none -
wolfSPDM_GetConnectionHandle/wolfSPDM_GetFipsIndicator(WOLFSPDM_TCGonly)
wolfSPDM_GetVersion-
wolfSPDM_GetCapabilities(not withWOLFSPDM_NO_CERT) -
wolfSPDM_NegotiateAlgorithms(not withWOLFSPDM_NO_CERT) -
wolfSPDM_GetDigests(not withWOLFSPDM_NO_CERT) -
wolfSPDM_GetCertificate(not withWOLFSPDM_NO_CERT) wolfSPDM_KeyExchangewolfSPDM_Finish
wolfSPDM_SecuredExchange-
wolfSPDM_SendData/wolfSPDM_ReceiveData(WOLFSPDM_HAS_APP_DATA, not over the TCG binding) -
wolfSPDM_EncryptMessage/wolfSPDM_DecryptMessage(WOLFSPDM_HAS_APP_DATA)
-
wolfSPDM_GetMeasurements(WOLFSPDM_HAS_MEASUREMENTS) -
wolfSPDM_GetMeasurementCount(WOLFSPDM_HAS_MEASUREMENTS) -
wolfSPDM_GetMeasurementBlock(WOLFSPDM_HAS_MEASUREMENTS) -
wolfSPDM_Challenge(WOLFSPDM_HAS_CHALLENGE)
-
wolfSPDM_Heartbeat(WOLFSPDM_HAS_HEARTBEAT) -
wolfSPDM_KeyUpdate(WOLFSPDM_HAS_KEY_UPDATE)
-
wolfSPDM_ConnectTCG(aliaswolfSPDM_ConnectNuvoton) -
wolfSPDM_TCG_GetPubKey/wolfSPDM_TCG_GivePubKey -
wolfSPDM_TCG_GetCapabilities/wolfSPDM_TCG_NegotiateAlgorithms wolfSPDM_SetRequesterKeyTPMT-
wolfSPDM_TCG_VendorCmdClear/wolfSPDM_TCG_VendorCmdSecured -
wolfSPDM_BuildTcgClearMessage/wolfSPDM_ParseTcgClearMessage -
wolfSPDM_BuildVendorDefined/wolfSPDM_ParseVendorDefined
wolfSPDM_Nuvoton_GetStatuswolfSPDM_Nuvoton_SetOnlyMode
wolfSPDM_Nations_GetStatuswolfSPDM_Nations_SetOnlyMode-
wolfSPDM_Nations_PskSet/wolfSPDM_Nations_PskClear/wolfSPDM_Nations_PskClearWithVCA
wolfSPDM_SetPSK-
wolfSPDM_ConnectPsk(aliaswolfSPDM_ConnectNationsPsk) -
wolfSPDM_BuildPskExchange/wolfSPDM_ParsePskExchangeRsp -
wolfSPDM_BuildPskFinish/wolfSPDM_ParsePskFinishRsp wolfSPDM_DeriveHandshakeKeysPsk
-
wolfSPDM_RespInit/wolfSPDM_RespFree/wolfSPDM_RespGetCtxSize -
wolfSPDM_RespSetMode,wolfSPDM_RespSetPSK,wolfSPDM_RespSetIdentityKey -
wolfSPDM_RespSetTpmCallback,wolfSPDM_RespSetDebug -
wolfSPDM_RespHandleMessage: returnsWOLFSPDM_E_FRAMINGon a non-TCG inbound frame; callers must drop the connection rather than fall through to the TPM parser -
wolfSPDM_RespReset,wolfSPDM_RespIsLocked,wolfSPDM_RespIsSessionActive wolfSPDM_RespGetIdentityKey
wolfSPDM_GetErrorString
Defined in wolfspdm/spdm_error.h:
-
WOLFSPDM_E_INVALID_ARG,WOLFSPDM_E_BUFFER_SMALL,WOLFSPDM_E_BAD_STATE -
WOLFSPDM_E_VERSION_MISMATCH,WOLFSPDM_E_ALGO_MISMATCH,WOLFSPDM_E_CAPS_MISMATCH -
WOLFSPDM_E_CRYPTO_FAIL,WOLFSPDM_E_BAD_SIGNATURE,WOLFSPDM_E_BAD_HMAC,WOLFSPDM_E_DECRYPT_FAIL -
WOLFSPDM_E_IO_FAIL,WOLFSPDM_E_TIMEOUT,WOLFSPDM_E_PEER_ERROR,WOLFSPDM_E_SEQUENCE -
WOLFSPDM_E_NOT_CONNECTED,WOLFSPDM_E_ALREADY_INIT,WOLFSPDM_E_NO_MEMORY -
WOLFSPDM_E_SESSION_INVALID,WOLFSPDM_E_KEY_EXCHANGE,WOLFSPDM_E_NOT_AVAILABLE -
WOLFSPDM_E_FRAMING: frame did not parse (e.g. plaintext TPM2 while SPDM mode is active) -
WOLFSPDM_E_NOT_IMPL,WOLFSPDM_E_CERT_FAIL,WOLFSPDM_E_CERT_PARSE -
WOLFSPDM_E_KEY_UPDATE,WOLFSPDM_E_MEASUREMENT,WOLFSPDM_E_CHALLENGE,WOLFSPDM_E_CHUNK