diff --git a/MdePkg/Include/IndustryStandard/Spdm.h b/MdePkg/Include/IndustryStandard/Spdm.h index b7323900573..690f8bbc971 100644 --- a/MdePkg/Include/IndustryStandard/Spdm.h +++ b/MdePkg/Include/IndustryStandard/Spdm.h @@ -2,7 +2,7 @@ Definitions of DSP0274 Security Protocol & Data Model Specification (SPDM) version 1.1.0 in Distributed Management Task Force (DMTF). -Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.
+Copyright (c) 2019 - 2024, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ @@ -19,46 +19,46 @@ SPDX-License-Identifier: BSD-2-Clause-Patent /// /// SPDM response code (1.0) /// -#define SPDM_DIGESTS 0x01 -#define SPDM_CERTIFICATE 0x02 -#define SPDM_CHALLENGE_AUTH 0x03 -#define SPDM_VERSION 0x04 -#define SPDM_MEASUREMENTS 0x60 -#define SPDM_CAPABILITIES 0x61 -#define SPDM_ALGORITHMS 0x63 -#define SPDM_VENDOR_DEFINED_RESPONSE 0x7E -#define SPDM_ERROR 0x7F +#define SPDM_DIGESTS 0x01 +#define SPDM_CERTIFICATE 0x02 +#define SPDM_CHALLENGE_AUTH 0x03 +#define SPDM_VERSION 0x04 +#define SPDM_MEASUREMENTS 0x60 +#define SPDM_CAPABILITIES 0x61 +#define SPDM_ALGORITHMS 0x63 +#define SPDM_VENDOR_DEFINED_RESPONSE 0x7E +#define SPDM_ERROR 0x7F /// /// SPDM response code (1.1) /// -#define SPDM_KEY_EXCHANGE_RSP 0x64 -#define SPDM_FINISH_RSP 0x65 -#define SPDM_PSK_EXCHANGE_RSP 0x66 -#define SPDM_PSK_FINISH_RSP 0x67 -#define SPDM_HEARTBEAT_ACK 0x68 -#define SPDM_KEY_UPDATE_ACK 0x69 -#define SPDM_ENCAPSULATED_REQUEST 0x6A -#define SPDM_ENCAPSULATED_RESPONSE_ACK 0x6B -#define SPDM_END_SESSION_ACK 0x6C +#define SPDM_KEY_EXCHANGE_RSP 0x64 +#define SPDM_FINISH_RSP 0x65 +#define SPDM_PSK_EXCHANGE_RSP 0x66 +#define SPDM_PSK_FINISH_RSP 0x67 +#define SPDM_HEARTBEAT_ACK 0x68 +#define SPDM_KEY_UPDATE_ACK 0x69 +#define SPDM_ENCAPSULATED_REQUEST 0x6A +#define SPDM_ENCAPSULATED_RESPONSE_ACK 0x6B +#define SPDM_END_SESSION_ACK 0x6C /// /// SPDM response code (1.2) /// -#define SPDM_CSR 0x6D -#define SPDM_SET_CERTIFICATE_RSP 0x6E -#define SPDM_CHUNK_SEND_ACK 0x05 -#define SPDM_CHUNK_RESPONSE 0x06 +#define SPDM_CSR 0x6D +#define SPDM_SET_CERTIFICATE_RSP 0x6E +#define SPDM_CHUNK_SEND_ACK 0x05 +#define SPDM_CHUNK_RESPONSE 0x06 /// /// SPDM request code (1.0) /// -#define SPDM_GET_DIGESTS 0x81 -#define SPDM_GET_CERTIFICATE 0x82 -#define SPDM_CHALLENGE 0x83 -#define SPDM_GET_VERSION 0x84 -#define SPDM_GET_MEASUREMENTS 0xE0 -#define SPDM_GET_CAPABILITIES 0xE1 -#define SPDM_NEGOTIATE_ALGORITHMS 0xE3 -#define SPDM_VENDOR_DEFINED_REQUEST 0xFE -#define SPDM_RESPOND_IF_READY 0xFF +#define SPDM_GET_DIGESTS 0x81 +#define SPDM_GET_CERTIFICATE 0x82 +#define SPDM_CHALLENGE 0x83 +#define SPDM_GET_VERSION 0x84 +#define SPDM_GET_MEASUREMENTS 0xE0 +#define SPDM_GET_CAPABILITIES 0xE1 +#define SPDM_NEGOTIATE_ALGORITHMS 0xE3 +#define SPDM_VENDOR_DEFINED_REQUEST 0xFE +#define SPDM_RESPOND_IF_READY 0xFF /// /// SPDM request code (1.1) /// @@ -98,7 +98,7 @@ typedef struct { /// SPDM GET_VERSION request /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == RSVD // Param2 == RSVD } SPDM_GET_VERSION_REQUEST; @@ -107,12 +107,12 @@ typedef struct { /// SPDM GET_VERSION response /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == RSVD // Param2 == RSVD - UINT8 Reserved; - UINT8 VersionNumberEntryCount; -//SPDM_VERSION_NUMBER VersionNumberEntry[VersionNumberEntryCount]; + UINT8 Reserved; + UINT8 VersionNumberEntryCount; + // SPDM_VERSION_NUMBER VersionNumberEntry[VersionNumberEntryCount]; } SPDM_VERSION_RESPONSE; /// @@ -133,7 +133,7 @@ typedef UINT16 SPDM_VERSION_NUMBER; /// SPDM GET_CAPABILITIES request /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == RSVD // Param2 == RSVD // Below field is added in 1.1. @@ -141,7 +141,7 @@ typedef struct { UINT8 CTExponent; UINT16 Reserved2; UINT32 Flags; - //Below field is added in 1.2. + // Below field is added in 1.2. UINT32 DataTransferSize; UINT32 MaxSpdmMsgSize; } SPDM_GET_CAPABILITIES_REQUEST; @@ -167,19 +167,19 @@ typedef struct { /// /// SPDM GET_CAPABILITIES request Flags (1.1) /// -#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP BIT1 -#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CHAL_CAP BIT2 -#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCRYPT_CAP BIT6 -#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_MAC_CAP BIT7 -#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_MUT_AUTH_CAP BIT8 -#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_KEY_EX_CAP BIT9 -#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_PSK_CAP (BIT10 | BIT11) -#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_PSK_CAP_REQUESTER BIT10 -#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCAP_CAP BIT12 -#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_HBEAT_CAP BIT13 -#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_KEY_UPD_CAP BIT14 -#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_HANDSHAKE_IN_THE_CLEAR_CAP BIT15 -#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_PUB_KEY_ID_CAP BIT16 +#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP BIT1 +#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CHAL_CAP BIT2 +#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCRYPT_CAP BIT6 +#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_MAC_CAP BIT7 +#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_MUT_AUTH_CAP BIT8 +#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_KEY_EX_CAP BIT9 +#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_PSK_CAP (BIT10 | BIT11) +#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_PSK_CAP_REQUESTER BIT10 +#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCAP_CAP BIT12 +#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_HBEAT_CAP BIT13 +#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_KEY_UPD_CAP BIT14 +#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_HANDSHAKE_IN_THE_CLEAR_CAP BIT15 +#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_PUB_KEY_ID_CAP BIT16 #define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_11_MASK (\ SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP | \ SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CHAL_CAP | \ @@ -204,13 +204,13 @@ typedef struct { /// /// SPDM GET_CAPABILITIES response Flags (1.0) /// -#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CACHE_CAP BIT0 -#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP BIT1 -#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHAL_CAP BIT2 -#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_CAP (BIT3 | BIT4) -#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_CAP_NO_SIG BIT3 -#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_CAP_SIG BIT4 -#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_FRESH_CAP BIT5 +#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CACHE_CAP BIT0 +#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP BIT1 +#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHAL_CAP BIT2 +#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_CAP (BIT3 | BIT4) +#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_CAP_NO_SIG BIT3 +#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_CAP_SIG BIT4 +#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_FRESH_CAP BIT5 #define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_10_MASK (\ SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CACHE_CAP | \ SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP | \ @@ -225,8 +225,8 @@ typedef struct { #define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MUT_AUTH_CAP BIT8 #define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_KEY_EX_CAP BIT9 #define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_PSK_CAP (BIT10 | BIT11) -#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_PSK_CAP_RESPONDER BIT10 -#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_PSK_CAP_RESPONDER_WITH_CONTEXT BIT11 +#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_PSK_CAP_RESPONDER BIT10 +#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_PSK_CAP_RESPONDER_WITH_CONTEXT BIT11 #define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ENCAP_CAP BIT12 #define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_HBEAT_CAP BIT13 #define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_KEY_UPD_CAP BIT14 @@ -297,18 +297,18 @@ typedef struct { #define SPDM_NEGOTIATE_ALGORITHMS_REQUEST_MAX_EXT_ALG_COUNT_VERSION_12 (BIT4 | BIT2) typedef struct { - UINT8 AlgType; - UINT8 AlgCount; // BIT[0:3]=ExtAlgCount, BIT[4:7]=FixedAlgByteCount -//UINT8 AlgSupported[FixedAlgByteCount]; -//UINT32 AlgExternal[ExtAlgCount]; + UINT8 AlgType; + UINT8 AlgCount; // BIT[0:3]=ExtAlgCount, BIT[4:7]=FixedAlgByteCount + // UINT8 AlgSupported[FixedAlgByteCount]; + // UINT32 AlgExternal[ExtAlgCount]; } SPDM_NEGOTIATE_ALGORITHMS_STRUCT_TABLE; typedef struct { - UINT8 ExtAlgCount:4; - UINT8 FixedAlgByteCount:4; + UINT8 ExtAlgCount : 4; + UINT8 FixedAlgByteCount : 4; } SPDM_NEGOTIATE_ALGORITHMS_STRUCT_TABLE_ALG_COUNT; -#define SPDM_NEGOTIATE_ALGORITHMS_MAX_NUM_STRUCT_TABLE_ALG 4 +#define SPDM_NEGOTIATE_ALGORITHMS_MAX_NUM_STRUCT_TABLE_ALG 4 #define SPDM_NEGOTIATE_ALGORITHMS_STRUCT_TABLE_ALG_TYPE_DHE 2 #define SPDM_NEGOTIATE_ALGORITHMS_STRUCT_TABLE_ALG_TYPE_AEAD 3 @@ -316,9 +316,9 @@ typedef struct { #define SPDM_NEGOTIATE_ALGORITHMS_STRUCT_TABLE_ALG_TYPE_KEY_SCHEDULE 5 typedef struct { - UINT8 AlgType; - UINT8 AlgCount; - UINT16 AlgSupported; + UINT8 AlgType; + UINT8 AlgCount; + UINT16 AlgSupported; } SPDM_NEGOTIATE_ALGORITHMS_COMMON_STRUCT_TABLE; /// @@ -337,9 +337,9 @@ typedef struct { /// /// SPDM NEGOTIATE_ALGORITHMS request base_asym_algo/REQ_BASE_ASYM_ALG (1.2) /// -#define SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_SM2_ECC_SM2_P256 BIT9 -#define SPDM_ALGORITHMS_BASE_ASYM_ALGO_EDDSA_ED25519 BIT10 -#define SPDM_ALGORITHMS_BASE_ASYM_ALGO_EDDSA_ED448 BIT11 +#define SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_SM2_ECC_SM2_P256 BIT9 +#define SPDM_ALGORITHMS_BASE_ASYM_ALGO_EDDSA_ED25519 BIT10 +#define SPDM_ALGORITHMS_BASE_ASYM_ALGO_EDDSA_ED448 BIT11 /// /// SPDM NEGOTIATE_ALGORITHMS request BaseHashAlgo @@ -354,38 +354,38 @@ typedef struct { /// /// SPDM NEGOTIATE_ALGORITHMS request base_hash_algo (1.2) /// -#define SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SM3_256 BIT6 +#define SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SM3_256 BIT6 /// /// SPDM NEGOTIATE_ALGORITHMS request DHE /// -#define SPDM_ALGORITHMS_DHE_NAMED_GROUP_FFDHE_2048 BIT0 -#define SPDM_ALGORITHMS_DHE_NAMED_GROUP_FFDHE_3072 BIT1 -#define SPDM_ALGORITHMS_DHE_NAMED_GROUP_FFDHE_4096 BIT2 -#define SPDM_ALGORITHMS_DHE_NAMED_GROUP_SECP_256_R1 BIT3 -#define SPDM_ALGORITHMS_DHE_NAMED_GROUP_SECP_384_R1 BIT4 -#define SPDM_ALGORITHMS_DHE_NAMED_GROUP_SECP_521_R1 BIT5 +#define SPDM_ALGORITHMS_DHE_NAMED_GROUP_FFDHE_2048 BIT0 +#define SPDM_ALGORITHMS_DHE_NAMED_GROUP_FFDHE_3072 BIT1 +#define SPDM_ALGORITHMS_DHE_NAMED_GROUP_FFDHE_4096 BIT2 +#define SPDM_ALGORITHMS_DHE_NAMED_GROUP_SECP_256_R1 BIT3 +#define SPDM_ALGORITHMS_DHE_NAMED_GROUP_SECP_384_R1 BIT4 +#define SPDM_ALGORITHMS_DHE_NAMED_GROUP_SECP_521_R1 BIT5 /// /// SPDM NEGOTIATE_ALGORITHMS request DHE (1.2) /// -#define SPDM_ALGORITHMS_DHE_NAMED_GROUP_SM2_P256 BIT6 +#define SPDM_ALGORITHMS_DHE_NAMED_GROUP_SM2_P256 BIT6 /// /// SPDM NEGOTIATE_ALGORITHMS request AEAD /// -#define SPDM_ALGORITHMS_AEAD_CIPHER_SUITE_AES_128_GCM BIT0 -#define SPDM_ALGORITHMS_AEAD_CIPHER_SUITE_AES_256_GCM BIT1 -#define SPDM_ALGORITHMS_AEAD_CIPHER_SUITE_CHACHA20_POLY1305 BIT2 +#define SPDM_ALGORITHMS_AEAD_CIPHER_SUITE_AES_128_GCM BIT0 +#define SPDM_ALGORITHMS_AEAD_CIPHER_SUITE_AES_256_GCM BIT1 +#define SPDM_ALGORITHMS_AEAD_CIPHER_SUITE_CHACHA20_POLY1305 BIT2 /// /// SPDM NEGOTIATE_ALGORITHMS request AEAD (1.2) /// -#define SPDM_ALGORITHMS_AEAD_CIPHER_SUITE_AEAD_SM4_GCM BIT3 +#define SPDM_ALGORITHMS_AEAD_CIPHER_SUITE_AEAD_SM4_GCM BIT3 /// /// SPDM NEGOTIATE_ALGORITHMS request KEY_SCHEDULE /// -#define SPDM_ALGORITHMS_KEY_SCHEDULE_HMAC_HASH BIT0 +#define SPDM_ALGORITHMS_KEY_SCHEDULE_HMAC_HASH BIT0 /// /// SPDM NEGOTIATE_ALGORITHMS response @@ -428,7 +428,7 @@ typedef struct { /// /// SPDM NEGOTIATE_ALGORITHMS response measurement_hash_algo (1.2) /// -#define SPDM_ALGORITHMS_MEASUREMENT_HASH_ALGO_TPM_ALG_SM3_256 BIT7 +#define SPDM_ALGORITHMS_MEASUREMENT_HASH_ALGO_TPM_ALG_SM3_256 BIT7 /// /// SPDM Opaque Data Format (1.2) @@ -451,29 +451,29 @@ typedef struct { /// SPDM extended algorithm /// typedef struct { - UINT8 RegistryID; - UINT8 Reserved; - UINT16 AlgorithmID; + UINT8 RegistryID; + UINT8 Reserved; + UINT16 AlgorithmID; } SPDM_EXTENDED_ALGORITHM; /// /// SPDM RegistryID /// -#define SPDM_REGISTRY_ID_DMTF 0 -#define SPDM_REGISTRY_ID_TCG 1 -#define SPDM_REGISTRY_ID_USB 2 -#define SPDM_REGISTRY_ID_PCISIG 3 -#define SPDM_REGISTRY_ID_IANA 4 -#define SPDM_REGISTRY_ID_HDBASET 5 -#define SPDM_REGISTRY_ID_MIPI 6 -#define SPDM_REGISTRY_ID_CXL 7 -#define SPDM_REGISTRY_ID_JEDEC 8 +#define SPDM_REGISTRY_ID_DMTF 0 +#define SPDM_REGISTRY_ID_TCG 1 +#define SPDM_REGISTRY_ID_USB 2 +#define SPDM_REGISTRY_ID_PCISIG 3 +#define SPDM_REGISTRY_ID_IANA 4 +#define SPDM_REGISTRY_ID_HDBASET 5 +#define SPDM_REGISTRY_ID_MIPI 6 +#define SPDM_REGISTRY_ID_CXL 7 +#define SPDM_REGISTRY_ID_JEDEC 8 /// /// SPDM GET_DIGESTS request /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == RSVD // Param2 == RSVD } SPDM_GET_DIGESTS_REQUEST; @@ -482,21 +482,21 @@ typedef struct { /// SPDM GET_DIGESTS response /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == RSVD // Param2 == SlotMask -//UINT8 Digest[DigestSize][SlotCount]; + // UINT8 Digest[DigestSize][SlotCount]; } SPDM_DIGESTS_RESPONSE; /// /// SPDM GET_CERTIFICATE request /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == SlotNum // Param2 == RSVD - UINT16 Offset; - UINT16 Length; + UINT16 Offset; + UINT16 Length; } SPDM_GET_CERTIFICATE_REQUEST; #define SPDM_GET_CERTIFICATE_REQUEST_SLOT_ID_MASK 0xF @@ -504,12 +504,12 @@ typedef struct { /// SPDM GET_CERTIFICATE response /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == SlotNum // Param2 == RSVD - UINT16 PortionLength; - UINT16 RemainderLength; -//UINT8 CertChain[PortionLength]; + UINT16 PortionLength; + UINT16 RemainderLength; + // UINT8 CertChain[PortionLength]; } SPDM_CERTIFICATE_RESPONSE; #define SPDM_CERTIFICATE_RESPONSE_SLOT_ID_MASK 0xF @@ -519,20 +519,20 @@ typedef struct { // Total length of the certificate chain, in bytes, // including all fields in this table. // - UINT16 Length; - UINT16 Reserved; + UINT16 Length; + UINT16 Reserved; // // Digest of the Root Certificate. // Note that Root Certificate is ASN.1 DER-encoded for this digest. // The hash size is determined by the SPDM device. // -//UINT8 RootHash[HashSize]; + // UINT8 RootHash[HashSize]; // // One or more ASN.1 DER-encoded X509v3 certificates where the first certificate is signed by the Root // Certificate or is the Root Certificate itself and each subsequent certificate is signed by the preceding // certificate. The last certificate is the Leaf Certificate. // -//UINT8 Certificates[Length - 4 - HashSize]; + // UINT8 Certificates[Length - 4 - HashSize]; } SPDM_CERT_CHAIN; /// @@ -543,25 +543,25 @@ typedef struct { /// SPDM CHALLENGE request /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == SlotNum // Param2 == HashType - UINT8 Nonce[32]; + UINT8 Nonce[32]; } SPDM_CHALLENGE_REQUEST; /// /// SPDM CHALLENGE response /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == ResponseAttribute // Param2 == SlotMask -//UINT8 CertChainHash[DigestSize]; -//UINT8 Nonce[32]; -//UINT8 MeasurementSummaryHash[DigestSize]; -//UINT16 OpaqueLength; -//UINT8 OpaqueData[OpaqueLength]; -//UINT8 Signature[KeySize]; + // UINT8 CertChainHash[DigestSize]; + // UINT8 Nonce[32]; + // UINT8 MeasurementSummaryHash[DigestSize]; + // UINT16 OpaqueLength; + // UINT8 OpaqueData[OpaqueLength]; + // UINT8 Signature[KeySize]; } SPDM_CHALLENGE_AUTH_RESPONSE; /// @@ -582,9 +582,9 @@ typedef struct { #define SPDM_CHALLENGE_AUTH_RESPONSE_ATTRIBUTE_SLOT_ID_MASK 0xF typedef struct { - UINT8 SlotNum:4; - UINT8 Reserved:3; - UINT8 BasicMutAuthReq:1; + UINT8 SlotNum : 4; + UINT8 Reserved : 3; + UINT8 BasicMutAuthReq : 1; } SPDM_CHALLENGE_AUTH_RESPONSE_ATTRIBUTE; /// @@ -601,17 +601,17 @@ typedef struct { /// SPDM GET_MEASUREMENTS request /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == Attributes // Param2 == MeasurementOperation - UINT8 Nonce[32]; + UINT8 Nonce[32]; // Below field is added in 1.1. - UINT8 SlotIDParam; // BIT[0:3]=SlotNum, BIT[4:7]=Reserved + UINT8 SlotIDParam; // BIT[0:3]=SlotNum, BIT[4:7]=Reserved } SPDM_GET_MEASUREMENTS_REQUEST; typedef struct { - UINT8 SlotNum:4; - UINT8 Reserved:4; + UINT8 SlotNum : 4; + UINT8 Reserved : 4; } SPDM_GET_MEASUREMENTS_REQUEST_SLOT_ID_PARAMETER; #define SPDM_GET_MEASUREMENTS_REQUEST_SLOT_ID_MASK 0xF @@ -655,14 +655,14 @@ typedef struct { } SPDM_MEASUREMENT_BLOCK_DMTF_HEADER; typedef struct { - SPDM_MEASUREMENT_BLOCK_COMMON_HEADER MeasurementBlockCommonHeader; - SPDM_MEASUREMENT_BLOCK_DMTF_HEADER MeasurementBlockDmtfHeader; -//UINT8 HashValue[HashSize]; + SPDM_MEASUREMENT_BLOCK_COMMON_HEADER MeasurementBlockCommonHeader; + SPDM_MEASUREMENT_BLOCK_DMTF_HEADER MeasurementBlockDmtfHeader; + // UINT8 HashValue[HashSize]; } SPDM_MEASUREMENT_BLOCK_DMTF; typedef struct { - UINT8 Content:7; - UINT8 Presentation:1; + UINT8 Content : 7; + UINT8 Presentation : 1; } SPDM_MEASUREMENTS_BLOCK_MEASUREMENT_TYPE; /// @@ -711,22 +711,22 @@ typedef struct { /// /// SPDM MEASUREMENTS SVN /// -typedef UINT64 SPDM_MEASUREMENTS_SECURE_VERSION_NUMBER; +typedef UINT64 SPDM_MEASUREMENTS_SECURE_VERSION_NUMBER; /// /// SPDM GET_MEASUREMENTS response /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == TotalNumberOfMeasurement/RSVD // Param2 == SlotNum - UINT8 NumberOfBlocks; - UINT8 MeasurementRecordLength[3]; -//UINT8 MeasurementRecord[MeasurementRecordLength]; -//UINT8 Nonce[32]; -//UINT16 OpaqueLength; -//UINT8 OpaqueData[OpaqueLength]; -//UINT8 Signature[KeySize]; + UINT8 NumberOfBlocks; + UINT8 MeasurementRecordLength[3]; + // UINT8 MeasurementRecord[MeasurementRecordLength]; + // UINT8 Nonce[32]; + // UINT16 OpaqueLength; + // UINT8 OpaqueData[OpaqueLength]; + // UINT8 Signature[KeySize]; } SPDM_MEASUREMENTS_RESPONSE; #define SPDM_MEASUREMENTS_RESPONSE_SLOT_ID_MASK 0xF @@ -759,15 +759,15 @@ typedef struct { /// /// SPDM error code /// -#define SPDM_ERROR_CODE_INVALID_REQUEST 0x01 -#define SPDM_ERROR_CODE_BUSY 0x03 -#define SPDM_ERROR_CODE_UNEXPECTED_REQUEST 0x04 -#define SPDM_ERROR_CODE_UNSPECIFIED 0x05 -#define SPDM_ERROR_CODE_UNSUPPORTED_REQUEST 0x07 -#define SPDM_ERROR_CODE_VERSION_MISMATCH 0x41 -#define SPDM_ERROR_CODE_RESPONSE_NOT_READY 0x42 -#define SPDM_ERROR_CODE_REQUEST_RESYNCH 0x43 -#define SPDM_ERROR_CODE_VENDOR_DEFINED 0xFF +#define SPDM_ERROR_CODE_INVALID_REQUEST 0x01 +#define SPDM_ERROR_CODE_BUSY 0x03 +#define SPDM_ERROR_CODE_UNEXPECTED_REQUEST 0x04 +#define SPDM_ERROR_CODE_UNSPECIFIED 0x05 +#define SPDM_ERROR_CODE_UNSUPPORTED_REQUEST 0x07 +#define SPDM_ERROR_CODE_VERSION_MISMATCH 0x41 +#define SPDM_ERROR_CODE_RESPONSE_NOT_READY 0x42 +#define SPDM_ERROR_CODE_REQUEST_RESYNCH 0x43 +#define SPDM_ERROR_CODE_VENDOR_DEFINED 0xFF /// /// SPDM error code (1.1) /// @@ -789,17 +789,17 @@ typedef struct { /// SPDM ResponseNotReady extended data /// typedef struct { - UINT8 RDTExponent; - UINT8 RequestCode; - UINT8 Token; - UINT8 RDTM; + UINT8 RDTExponent; + UINT8 RequestCode; + UINT8 Token; + UINT8 RDTM; } SPDM_ERROR_DATA_RESPONSE_NOT_READY; typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == Error Code // Param2 == Error Data - SPDM_ERROR_DATA_RESPONSE_NOT_READY ExtendErrorData; + SPDM_ERROR_DATA_RESPONSE_NOT_READY ExtendErrorData; } SPDM_ERROR_RESPONSE_DATA_RESPONSE_NOT_READY; /// @@ -810,7 +810,7 @@ typedef struct { } SPDM_ERROR_DATA_LARGE_RESPONSE; typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // param1 == Error Code // param2 == Error data @@ -843,28 +843,28 @@ typedef struct { /// SPDM VENDOR_DEFINED request /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == RSVD // Param2 == RSVD - UINT16 StandardID; - UINT8 Len; -//UINT8 VendorID[Len]; -//UINT16 PayloadLength; -//UINT8 VendorDefinedPayload[PayloadLength]; + UINT16 StandardID; + UINT8 Len; + // UINT8 VendorID[Len]; + // UINT16 PayloadLength; + // UINT8 VendorDefinedPayload[PayloadLength]; } SPDM_VENDOR_DEFINED_REQUEST_MSG; /// /// SPDM VENDOR_DEFINED response /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == RSVD // Param2 == RSVD - UINT16 StandardID; - UINT8 Len; -//UINT8 VendorID[Len]; -//UINT16 PayloadLength; -//UINT8 VendorDefinedPayload[PayloadLength]; + UINT16 StandardID; + UINT8 Len; + // UINT8 VendorID[Len]; + // UINT16 PayloadLength; + // UINT8 VendorDefinedPayload[PayloadLength]; } SPDM_VENDOR_DEFINED_RESPONSE_MSG; // @@ -875,15 +875,15 @@ typedef struct { /// SPDM KEY_EXCHANGE request /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == HashType // Param2 == SlotNum - UINT16 ReqSessionID; - UINT16 Reserved; - UINT8 RandomData[32]; -//UINT8 ExchangeData[D]; -//UINT16 OpaqueLength; -//UINT8 OpaqueData[OpaqueLength]; + UINT16 ReqSessionID; + UINT16 Reserved; + UINT8 RandomData[32]; + // UINT8 ExchangeData[D]; + // UINT16 OpaqueLength; + // UINT8 OpaqueData[OpaqueLength]; } SPDM_KEY_EXCHANGE_REQUEST; /// @@ -904,19 +904,19 @@ typedef struct { /// SPDM KEY_EXCHANGE response /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == HeartbeatPeriod // Param2 == RSVD - UINT16 RspSessionID; - UINT8 MutAuthRequested; - UINT8 ReqSlotIDParam; - UINT8 RandomData[32]; -//UINT8 ExchangeData[D]; -//UINT8 MeasurementSummaryHash[DigestSize]; -//UINT16 OpaqueLength; -//UINT8 OpaqueData[OpaqueLength]; -//UINT8 Signature[S]; -//UINT8 ResponderVerifyData[H]; + UINT16 RspSessionID; + UINT8 MutAuthRequested; + UINT8 ReqSlotIDParam; + UINT8 RandomData[32]; + // UINT8 ExchangeData[D]; + // UINT8 MeasurementSummaryHash[DigestSize]; + // UINT16 OpaqueLength; + // UINT8 OpaqueData[OpaqueLength]; + // UINT8 Signature[S]; + // UINT8 ResponderVerifyData[H]; } SPDM_KEY_EXCHANGE_RESPONSE; /// @@ -942,26 +942,26 @@ typedef struct { /// SPDM FINISH request /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == SignatureIncluded // Param2 == ReqSlotNum -//UINT8 Signature[S]; -//UINT8 RequesterVerifyData[H]; + // UINT8 Signature[S]; + // UINT8 RequesterVerifyData[H]; } SPDM_FINISH_REQUEST; /// /// SPDM FINISH request SignatureIncluded /// -#define SPDM_FINISH_REQUEST_ATTRIBUTES_SIGNATURE_INCLUDED BIT0 +#define SPDM_FINISH_REQUEST_ATTRIBUTES_SIGNATURE_INCLUDED BIT0 /// /// SPDM FINISH response /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == RSVD // Param2 == RSVD -//UINT8 ResponderVerifyData[H]; + // UINT8 ResponderVerifyData[H]; } SPDM_FINISH_RESPONSE; #define SPDM_FINISH_SIGN_CONTEXT "requester-finish signing" @@ -971,16 +971,16 @@ typedef struct { /// SPDM PSK_EXCHANGE request /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == HashType // Param2 == RSVD/session_policy (1.2) - UINT16 ReqSessionID; - UINT16 PSKHintLength; - UINT16 RequesterContextLength; - UINT16 OpaqueLength; -//UINT8 PSKHint[PSKHintLength]; -//UINT8 RequesterContext[RequesterContextLength]; -//UINT8 OpaqueData[OpaqueLength]; + UINT16 ReqSessionID; + UINT16 PSKHintLength; + UINT16 RequesterContextLength; + UINT16 OpaqueLength; + // UINT8 PSKHint[PSKHintLength]; + // UINT8 RequesterContext[RequesterContextLength]; + // UINT8 OpaqueData[OpaqueLength]; } SPDM_PSK_EXCHANGE_REQUEST; /// @@ -996,34 +996,34 @@ typedef struct { /// SPDM PSK_EXCHANGE response /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == HeartbeatPeriod // Param2 == RSVD - UINT16 RspSessionID; - UINT16 Reserved; - UINT16 ResponderContextLength; - UINT16 OpaqueLength; -//UINT8 MeasurementSummaryHash[DigestSize]; -//UINT8 ResponderContext[ResponderContextLength]; -//UINT8 OpaqueData[OpaqueLength]; -//UINT8 ResponderVerifyData[H]; + UINT16 RspSessionID; + UINT16 Reserved; + UINT16 ResponderContextLength; + UINT16 OpaqueLength; + // UINT8 MeasurementSummaryHash[DigestSize]; + // UINT8 ResponderContext[ResponderContextLength]; + // UINT8 OpaqueData[OpaqueLength]; + // UINT8 ResponderVerifyData[H]; } SPDM_PSK_EXCHANGE_RESPONSE; /// /// SPDM PSK_FINISH request /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == RSVD // Param2 == RSVD -//UINT8 RequesterVerifyData[H]; + // UINT8 RequesterVerifyData[H]; } SPDM_PSK_FINISH_REQUEST; /// /// SPDM PSK_FINISH response /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == RSVD // Param2 == RSVD } SPDM_PSK_FINISH_RESPONSE; @@ -1032,7 +1032,7 @@ typedef struct { /// SPDM HEARTBEAT request /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == RSVD // Param2 == RSVD } SPDM_HEARTBEAT_REQUEST; @@ -1041,7 +1041,7 @@ typedef struct { /// SPDM HEARTBEAT response /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == RSVD // Param2 == RSVD } SPDM_HEARTBEAT_RESPONSE; @@ -1050,7 +1050,7 @@ typedef struct { /// SPDM KEY_UPDATE request /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == KeyOperation // Param2 == Tag } SPDM_KEY_UPDATE_REQUEST; @@ -1058,15 +1058,15 @@ typedef struct { /// /// SPDM KEY_UPDATE Operations Table /// -#define SPDM_KEY_UPDATE_OPERATIONS_TABLE_UPDATE_KEY 1 -#define SPDM_KEY_UPDATE_OPERATIONS_TABLE_UPDATE_ALL_KEYS 2 -#define SPDM_KEY_UPDATE_OPERATIONS_TABLE_VERIFY_NEW_KEY 3 +#define SPDM_KEY_UPDATE_OPERATIONS_TABLE_UPDATE_KEY 1 +#define SPDM_KEY_UPDATE_OPERATIONS_TABLE_UPDATE_ALL_KEYS 2 +#define SPDM_KEY_UPDATE_OPERATIONS_TABLE_VERIFY_NEW_KEY 3 /// /// SPDM KEY_UPDATE response /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == KeyOperation // Param2 == Tag } SPDM_KEY_UPDATE_RESPONSE; @@ -1075,7 +1075,7 @@ typedef struct { /// SPDM GET_ENCAPSULATED_REQUEST request /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == RSVD // Param2 == RSVD } SPDM_GET_ENCAPSULATED_REQUEST_REQUEST; @@ -1084,47 +1084,47 @@ typedef struct { /// SPDM ENCAPSULATED_REQUEST response /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == RequestID // Param2 == RSVD -//UINT8 EncapsulatedRequest[]; + // UINT8 EncapsulatedRequest[]; } SPDM_ENCAPSULATED_REQUEST_RESPONSE; /// /// SPDM DELIVER_ENCAPSULATED_RESPONSE request /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == RequestID // Param2 == RSVD -//UINT8 EncapsulatedResponse[]; + // UINT8 EncapsulatedResponse[]; } SPDM_DELIVER_ENCAPSULATED_RESPONSE_REQUEST; /// /// SPDM ENCAPSULATED_RESPONSE_ACK response /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == RequestID // Param2 == PayloadType // below 4 bytes are added in 1.2. - UINT8 AckRequestId; - UINT8 Reserved[3]; + UINT8 AckRequestId; + UINT8 Reserved[3]; // UINT8 EncapsulatedRequest[]; } SPDM_ENCAPSULATED_RESPONSE_ACK_RESPONSE; /// /// SPDM ENCAPSULATED_RESPONSE_ACK_RESPONSE Payload Type /// -#define SPDM_ENCAPSULATED_RESPONSE_ACK_RESPONSE_PAYLOAD_TYPE_ABSENT 0 -#define SPDM_ENCAPSULATED_RESPONSE_ACK_RESPONSE_PAYLOAD_TYPE_PRESENT 1 +#define SPDM_ENCAPSULATED_RESPONSE_ACK_RESPONSE_PAYLOAD_TYPE_ABSENT 0 +#define SPDM_ENCAPSULATED_RESPONSE_ACK_RESPONSE_PAYLOAD_TYPE_PRESENT 1 #define SPDM_ENCAPSULATED_RESPONSE_ACK_RESPONSE_PAYLOAD_TYPE_REQ_SLOT_NUMBER 2 /// /// SPDM END_SESSION request /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == EndSessionRequestAttributes // Param2 == RSVD } SPDM_END_SESSION_REQUEST; @@ -1132,13 +1132,13 @@ typedef struct { /// /// SPDM END_SESSION request Attributes /// -#define SPDM_END_SESSION_REQUEST_ATTRIBUTES_PRESERVE_NEGOTIATED_STATE_CLEAR BIT0 +#define SPDM_END_SESSION_REQUEST_ATTRIBUTES_PRESERVE_NEGOTIATED_STATE_CLEAR BIT0 /// /// SPDM END_SESSION response /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // Param1 == RSVD // Param2 == RSVD } SPDM_END_SESSION_RESPONSE; @@ -1151,7 +1151,7 @@ typedef struct { /// SPDM SET_CERTIFICATE request /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // param1 == BIT[0:3]=slot_id, BIT[4:7]=RSVD // param2 == RSVD @@ -1174,7 +1174,7 @@ typedef struct { /// SPDM SET_CERTIFICATE_RSP response /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // param1 == BIT[0:3]=slot_id, BIT[4:7]=RSVD // param2 == RSVD @@ -1186,7 +1186,7 @@ typedef struct { /// SPDM GET_CSR request /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; UINT16 RequesterInfoLength; UINT16 OpaqueDataLength; @@ -1212,7 +1212,7 @@ typedef struct { /// SPDM CSR response /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // param1 == RSVD // param2 == RSVD @@ -1224,7 +1224,7 @@ typedef struct { /// SPDM CHUNK_SEND request /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // param1 - Request Attributes // param2 - Handle @@ -1242,7 +1242,7 @@ typedef struct { /// SPDM CHUNK_SEND_ACK response /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // param1 - Response Attributes // param2 - Handle @@ -1256,7 +1256,7 @@ typedef struct { /// SPDM CHUNK_GET request /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // param1 - Reserved // param2 - Handle @@ -1267,7 +1267,7 @@ typedef struct { /// SPDM CHUNK_RESPONSE response /// typedef struct { - SPDM_MESSAGE_HEADER Header; + SPDM_MESSAGE_HEADER Header; // param1 - Response Attributes // param2 - Handle