mirror of https://github.com/acidanthera/audk.git
1333 lines
44 KiB
C
1333 lines
44 KiB
C
/** @file
|
|
Definitions of DSP0274 Security Protocol & Data Model Specification (SPDM)
|
|
version 1.2.0 in Distributed Management Task Force (DMTF).
|
|
|
|
Copyright (c) 2019 - 2024, Intel Corporation. All rights reserved.<BR>
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
|
|
#ifndef __SPDM_H__
|
|
#define __SPDM_H__
|
|
|
|
#pragma pack(1)
|
|
|
|
#define SPDM_MAX_SLOT_COUNT 8
|
|
#define SPDM_MAX_OPAQUE_DATA_SIZE 1024
|
|
#define SPDM_NONCE_SIZE 32
|
|
#define SPDM_RANDOM_DATA_SIZE 32
|
|
///
|
|
/// 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
|
|
///
|
|
/// 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
|
|
///
|
|
/// 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
|
|
///
|
|
/// 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
|
|
///
|
|
/// SPDM request code (1.1)
|
|
///
|
|
#define SPDM_KEY_EXCHANGE 0xE4
|
|
#define SPDM_FINISH 0xE5
|
|
#define SPDM_PSK_EXCHANGE 0xE6
|
|
#define SPDM_PSK_FINISH 0xE7
|
|
#define SPDM_HEARTBEAT 0xE8
|
|
#define SPDM_KEY_UPDATE 0xE9
|
|
#define SPDM_GET_ENCAPSULATED_REQUEST 0xEA
|
|
#define SPDM_DELIVER_ENCAPSULATED_RESPONSE 0xEB
|
|
#define SPDM_END_SESSION 0xEC
|
|
///
|
|
/// SPDM request code (1.2)
|
|
///
|
|
#define SPDM_GET_CSR 0xED
|
|
#define SPDM_SET_CERTIFICATE 0xEE
|
|
#define SPDM_CHUNK_SEND 0x85
|
|
#define SPDM_CHUNK_GET 0x86
|
|
|
|
///
|
|
/// SPDM message header
|
|
///
|
|
typedef struct {
|
|
UINT8 SPDMVersion;
|
|
UINT8 RequestResponseCode;
|
|
UINT8 Param1;
|
|
UINT8 Param2;
|
|
} SPDM_MESSAGE_HEADER;
|
|
|
|
#define SPDM_MESSAGE_VERSION_10 0x10
|
|
#define SPDM_MESSAGE_VERSION_11 0x11
|
|
#define SPDM_MESSAGE_VERSION_12 0x12
|
|
#define SPDM_MESSAGE_VERSION SPDM_MESSAGE_VERSION_10
|
|
|
|
///
|
|
/// SPDM GET_VERSION request
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == RSVD
|
|
// Param2 == RSVD
|
|
} SPDM_GET_VERSION_REQUEST;
|
|
|
|
///
|
|
/// SPDM GET_VERSION response
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == RSVD
|
|
// Param2 == RSVD
|
|
UINT8 Reserved;
|
|
UINT8 VersionNumberEntryCount;
|
|
// SPDM_VERSION_NUMBER VersionNumberEntry[VersionNumberEntryCount];
|
|
} SPDM_VERSION_RESPONSE;
|
|
|
|
///
|
|
/// SPDM VERSION structure
|
|
///
|
|
/// bit[15:12] major_version
|
|
/// bit[11:8] minor_version
|
|
/// bit[7:4] update_version_number
|
|
/// bit[3:0] alpha
|
|
typedef UINT16 SPDM_VERSION_NUMBER;
|
|
#define SPDM_VERSION_NUMBER_SHIFT_BIT 8
|
|
|
|
#define SPDM_VERSION_1_2_SIGNING_PREFIX_CONTEXT "dmtf-spdm-v1.2.*"
|
|
#define SPDM_VERSION_1_2_SIGNING_PREFIX_CONTEXT_SIZE \
|
|
(sizeof(SPDM_VERSION_1_2_SIGNING_PREFIX_CONTEXT) - 1)
|
|
#define SPDM_VERSION_1_2_SIGNING_CONTEXT_SIZE 100
|
|
///
|
|
/// SPDM GET_CAPABILITIES request
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == RSVD
|
|
// Param2 == RSVD
|
|
// Below field is added in 1.1.
|
|
UINT8 Reserved;
|
|
UINT8 CTExponent;
|
|
UINT16 Reserved2;
|
|
UINT32 Flags;
|
|
// Below field is added in 1.2.
|
|
UINT32 DataTransferSize;
|
|
UINT32 MaxSpdmMsgSize;
|
|
} SPDM_GET_CAPABILITIES_REQUEST;
|
|
|
|
///
|
|
/// SPDM GET_CAPABILITIES response
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == RSVD
|
|
// Param2 == RSVD
|
|
UINT8 Reserved;
|
|
UINT8 CTExponent;
|
|
UINT16 Reserved2;
|
|
UINT32 Flags;
|
|
// Below field is added in 1.2.
|
|
UINT32 DataTransferSize;
|
|
UINT32 MaxSpdmMsgSize;
|
|
} SPDM_CAPABILITIES_RESPONSE;
|
|
|
|
#define SPDM_MIN_DATA_TRANSFER_SIZE_VERSION_12 42
|
|
|
|
///
|
|
/// 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_11_MASK (\
|
|
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP | \
|
|
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CHAL_CAP | \
|
|
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCRYPT_CAP | \
|
|
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_MAC_CAP | \
|
|
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_MUT_AUTH_CAP | \
|
|
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_KEY_EX_CAP | \
|
|
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_PSK_CAP | \
|
|
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCAP_CAP | \
|
|
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_HBEAT_CAP | \
|
|
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_KEY_UPD_CAP | \
|
|
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_HANDSHAKE_IN_THE_CLEAR_CAP | \
|
|
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_PUB_KEY_ID_CAP)
|
|
|
|
///
|
|
/// SPDM GET_CAPABILITIES request Flags (1.2)
|
|
///
|
|
#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CHUNK_CAP BIT17
|
|
#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_12_MASK (\
|
|
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_11_MASK | \
|
|
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CHUNK_CAP)
|
|
///
|
|
/// 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_10_MASK (\
|
|
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CACHE_CAP | \
|
|
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP | \
|
|
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHAL_CAP | \
|
|
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_CAP | \
|
|
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_FRESH_CAP)
|
|
///
|
|
/// SPDM GET_CAPABILITIES response Flags (1.1)
|
|
///
|
|
#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ENCRYPT_CAP BIT6
|
|
#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MAC_CAP BIT7
|
|
#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_ENCAP_CAP BIT12
|
|
#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_HBEAT_CAP BIT13
|
|
#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_KEY_UPD_CAP BIT14
|
|
#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_HANDSHAKE_IN_THE_CLEAR_CAP BIT15
|
|
#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_PUB_KEY_ID_CAP BIT16
|
|
#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_11_MASK (\
|
|
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_10_MASK | \
|
|
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ENCRYPT_CAP | \
|
|
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MAC_CAP | \
|
|
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MUT_AUTH_CAP | \
|
|
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_KEY_EX_CAP | \
|
|
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_PSK_CAP | \
|
|
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ENCAP_CAP | \
|
|
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_HBEAT_CAP | \
|
|
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_KEY_UPD_CAP | \
|
|
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_HANDSHAKE_IN_THE_CLEAR_CAP | \
|
|
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_PUB_KEY_ID_CAP)
|
|
///
|
|
/// SPDM GET_CAPABILITIES response Flags (1.2)
|
|
///
|
|
#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHUNK_CAP BIT17
|
|
#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ALIAS_CERT_CAP BIT18
|
|
|
|
///
|
|
/// SPDM GET_CAPABILITIES response Flags (1.2.1)
|
|
///
|
|
#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_SET_CERT_CAP BIT19
|
|
#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CSR_CAP BIT20
|
|
#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_INSTALL_RESET_CAP BIT21
|
|
#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_12_MASK (\
|
|
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_11_MASK | \
|
|
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHUNK_CAP | \
|
|
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ALIAS_CERT_CAP | \
|
|
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_SET_CERT_CAP | \
|
|
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CSR_CAP | \
|
|
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_INSTALL_RESET_CAP)
|
|
///
|
|
/// SPDM NEGOTIATE_ALGORITHMS request
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == Number of Algorithms Structure Tables
|
|
// Param2 == RSVD
|
|
UINT16 Length;
|
|
UINT8 MeasurementSpecification;
|
|
|
|
// OtherParamsSupport is added in 1.2.
|
|
// BIT[0:3]=opaque_data_format support
|
|
// BIT[4:7]=Reserved
|
|
UINT8 OtherParamsSupport;
|
|
UINT32 BaseAsymAlgo;
|
|
UINT32 BaseHashAlgo;
|
|
UINT8 Reserved2[12];
|
|
UINT8 ExtAsymCount;
|
|
UINT8 ExtHashCount;
|
|
UINT16 Reserved3;
|
|
// SPDM_EXTENDED_ALGORITHM ExtAsym[ExtAsymCount];
|
|
// SPDM_EXTENDED_ALGORITHM ExtHash[ExtHashCount];
|
|
// Below field is added in 1.1.
|
|
// SPDM_NEGOTIATE_ALGORITHMS_STRUCT_TABLE AlgStruct[Param1];
|
|
} SPDM_NEGOTIATE_ALGORITHMS_REQUEST;
|
|
|
|
#define SPDM_NEGOTIATE_ALGORITHMS_REQUEST_MAX_LENGTH_VERSION_10 BIT6
|
|
#define SPDM_NEGOTIATE_ALGORITHMS_REQUEST_MAX_LENGTH_VERSION_11 BIT7
|
|
#define SPDM_NEGOTIATE_ALGORITHMS_REQUEST_MAX_LENGTH_VERSION_12 BIT7
|
|
#define SPDM_NEGOTIATE_ALGORITHMS_REQUEST_MAX_EXT_ALG_COUNT_VERSION_10 BIT3
|
|
#define SPDM_NEGOTIATE_ALGORITHMS_REQUEST_MAX_EXT_ALG_COUNT_VERSION_11 (BIT4 | BIT2)
|
|
#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];
|
|
} SPDM_NEGOTIATE_ALGORITHMS_STRUCT_TABLE;
|
|
|
|
typedef struct {
|
|
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_STRUCT_TABLE_ALG_TYPE_DHE 2
|
|
#define SPDM_NEGOTIATE_ALGORITHMS_STRUCT_TABLE_ALG_TYPE_AEAD 3
|
|
#define SPDM_NEGOTIATE_ALGORITHMS_STRUCT_TABLE_ALG_TYPE_REQ_BASE_ASYM_ALG 4
|
|
#define SPDM_NEGOTIATE_ALGORITHMS_STRUCT_TABLE_ALG_TYPE_KEY_SCHEDULE 5
|
|
|
|
typedef struct {
|
|
UINT8 AlgType;
|
|
UINT8 AlgCount;
|
|
UINT16 AlgSupported;
|
|
} SPDM_NEGOTIATE_ALGORITHMS_COMMON_STRUCT_TABLE;
|
|
|
|
///
|
|
/// SPDM NEGOTIATE_ALGORITHMS request BaseAsymAlgo/REQ_BASE_ASYM_ALG
|
|
///
|
|
#define SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_RSASSA_2048 BIT0
|
|
#define SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_RSAPSS_2048 BIT1
|
|
#define SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_RSASSA_3072 BIT2
|
|
#define SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_RSAPSS_3072 BIT3
|
|
#define SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_ECDSA_ECC_NIST_P256 BIT4
|
|
#define SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_RSASSA_4096 BIT5
|
|
#define SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_RSAPSS_4096 BIT6
|
|
#define SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_ECDSA_ECC_NIST_P384 BIT7
|
|
#define SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_ECDSA_ECC_NIST_P521 BIT8
|
|
|
|
///
|
|
/// 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
|
|
|
|
///
|
|
/// SPDM NEGOTIATE_ALGORITHMS request BaseHashAlgo
|
|
///
|
|
#define SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SHA_256 BIT0
|
|
#define SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SHA_384 BIT1
|
|
#define SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SHA_512 BIT2
|
|
#define SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SHA3_256 BIT3
|
|
#define SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SHA3_384 BIT4
|
|
#define SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SHA3_512 BIT5
|
|
|
|
///
|
|
/// SPDM NEGOTIATE_ALGORITHMS request base_hash_algo (1.2)
|
|
///
|
|
#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
|
|
|
|
///
|
|
/// SPDM NEGOTIATE_ALGORITHMS request DHE (1.2)
|
|
///
|
|
#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
|
|
|
|
///
|
|
/// SPDM NEGOTIATE_ALGORITHMS request AEAD (1.2)
|
|
///
|
|
#define SPDM_ALGORITHMS_AEAD_CIPHER_SUITE_AEAD_SM4_GCM BIT3
|
|
///
|
|
/// SPDM NEGOTIATE_ALGORITHMS request KEY_SCHEDULE
|
|
///
|
|
#define SPDM_ALGORITHMS_KEY_SCHEDULE_HMAC_HASH BIT0
|
|
|
|
///
|
|
/// SPDM NEGOTIATE_ALGORITHMS response
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == Number of Algorithms Structure Tables
|
|
// Param2 == RSVD
|
|
UINT16 Length;
|
|
UINT8 MeasurementSpecificationSel;
|
|
|
|
// OtherParamsSelection is added in 1.2.
|
|
// BIT[0:3]=opaque_data_format select,
|
|
// BIT[4:7]=Reserved
|
|
UINT8 OtherParamsSelection;
|
|
UINT32 MeasurementHashAlgo;
|
|
UINT32 BaseAsymSel;
|
|
UINT32 BaseHashSel;
|
|
UINT8 Reserved2[12];
|
|
UINT8 ExtAsymSelCount;
|
|
UINT8 ExtHashSelCount;
|
|
UINT16 Reserved3;
|
|
// SPDM_EXTENDED_ALGORITHM ExtAsymSel[ExtAsymSelCount];
|
|
// SPDM_EXTENDED_ALGORITHM ExtHashSel[ExtHashSelCount];
|
|
// Below field is added in 1.1.
|
|
// SPDM_NEGOTIATE_ALGORITHMS_STRUCT_TABLE AlgStruct[Param1];
|
|
} SPDM_ALGORITHMS_RESPONSE;
|
|
|
|
///
|
|
/// SPDM NEGOTIATE_ALGORITHMS response MeasurementHashAlgo
|
|
///
|
|
#define SPDM_ALGORITHMS_MEASUREMENT_HASH_ALGO_RAW_BIT_STREAM_ONLY BIT0
|
|
#define SPDM_ALGORITHMS_MEASUREMENT_HASH_ALGO_TPM_ALG_SHA_256 BIT1
|
|
#define SPDM_ALGORITHMS_MEASUREMENT_HASH_ALGO_TPM_ALG_SHA_384 BIT2
|
|
#define SPDM_ALGORITHMS_MEASUREMENT_HASH_ALGO_TPM_ALG_SHA_512 BIT3
|
|
#define SPDM_ALGORITHMS_MEASUREMENT_HASH_ALGO_TPM_ALG_SHA3_256 BIT4
|
|
#define SPDM_ALGORITHMS_MEASUREMENT_HASH_ALGO_TPM_ALG_SHA3_384 BIT5
|
|
#define SPDM_ALGORITHMS_MEASUREMENT_HASH_ALGO_TPM_ALG_SHA3_512 BIT6
|
|
|
|
///
|
|
/// SPDM NEGOTIATE_ALGORITHMS response measurement_hash_algo (1.2)
|
|
///
|
|
#define SPDM_ALGORITHMS_MEASUREMENT_HASH_ALGO_TPM_ALG_SM3_256 BIT7
|
|
|
|
///
|
|
/// SPDM Opaque Data Format (1.2)
|
|
///
|
|
#define SPDM_ALGORITHMS_OPAQUE_DATA_FORMAT_NONE 0x0
|
|
#define SPDM_ALGORITHMS_OPAQUE_DATA_FORMAT_0 0x1
|
|
#define SPDM_ALGORITHMS_OPAQUE_DATA_FORMAT_1 0x2
|
|
#define SPDM_ALGORITHMS_OPAQUE_DATA_FORMAT_MASK 0xF
|
|
|
|
///
|
|
/// SPDM Opaque Data Format 1 (1.2)
|
|
///
|
|
typedef struct {
|
|
UINT8 TotalElements;
|
|
UINT8 Reserved[3];
|
|
// opaque_element_table_t opaque_list[];
|
|
} SPDM_GENERAL_OPAQUE_DATA_TABLE_HEADER;
|
|
|
|
///
|
|
/// SPDM extended algorithm
|
|
///
|
|
typedef struct {
|
|
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
|
|
|
|
///
|
|
/// SPDM GET_DIGESTS request
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == RSVD
|
|
// Param2 == RSVD
|
|
} SPDM_GET_DIGESTS_REQUEST;
|
|
|
|
///
|
|
/// SPDM GET_DIGESTS response
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == RSVD
|
|
// Param2 == SlotMask
|
|
// UINT8 Digest[DigestSize][SlotCount];
|
|
} SPDM_DIGESTS_RESPONSE;
|
|
|
|
///
|
|
/// SPDM GET_CERTIFICATE request
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == SlotNum
|
|
// Param2 == RSVD
|
|
UINT16 Offset;
|
|
UINT16 Length;
|
|
} SPDM_GET_CERTIFICATE_REQUEST;
|
|
|
|
#define SPDM_GET_CERTIFICATE_REQUEST_SLOT_ID_MASK 0xF
|
|
///
|
|
/// SPDM GET_CERTIFICATE response
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == SlotNum
|
|
// Param2 == RSVD
|
|
UINT16 PortionLength;
|
|
UINT16 RemainderLength;
|
|
// UINT8 CertChain[PortionLength];
|
|
} SPDM_CERTIFICATE_RESPONSE;
|
|
|
|
#define SPDM_CERTIFICATE_RESPONSE_SLOT_ID_MASK 0xF
|
|
|
|
typedef struct {
|
|
//
|
|
// Total length of the certificate chain, in bytes,
|
|
// including all fields in this table.
|
|
//
|
|
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];
|
|
//
|
|
// 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];
|
|
} SPDM_CERT_CHAIN;
|
|
|
|
///
|
|
/// Maximum size, in bytes, of a certificate chain.
|
|
///
|
|
#define SPDM_MAX_CERTIFICATE_CHAIN_SIZE 65535
|
|
///
|
|
/// SPDM CHALLENGE request
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == SlotNum
|
|
// Param2 == HashType
|
|
UINT8 Nonce[32];
|
|
} SPDM_CHALLENGE_REQUEST;
|
|
|
|
///
|
|
/// SPDM CHALLENGE response
|
|
///
|
|
typedef struct {
|
|
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];
|
|
} SPDM_CHALLENGE_AUTH_RESPONSE;
|
|
|
|
///
|
|
/// SPDM generic request measurement summary HashType
|
|
///
|
|
#define SPDM_REQUEST_NO_MEASUREMENT_SUMMARY_HASH 0
|
|
#define SPDM_REQUEST_TCB_COMPONENT_MEASUREMENT_HASH 1
|
|
#define SPDM_REQUEST_ALL_MEASUREMENTS_HASH 0xFF
|
|
|
|
///
|
|
/// SPDM CHALLENGE request measurement summary HashType
|
|
///
|
|
#define SPDM_CHALLENGE_REQUEST_NO_MEASUREMENT_SUMMARY_HASH SPDM_REQUEST_NO_MEASUREMENT_SUMMARY_HASH
|
|
#define SPDM_CHALLENGE_REQUEST_TCB_COMPONENT_MEASUREMENT_HASH \
|
|
SPDM_REQUEST_TCB_COMPONENT_MEASUREMENT_HASH
|
|
#define SPDM_CHALLENGE_REQUEST_ALL_MEASUREMENTS_HASH SPDM_REQUEST_ALL_MEASUREMENTS_HASH
|
|
|
|
#define SPDM_CHALLENGE_AUTH_RESPONSE_ATTRIBUTE_SLOT_ID_MASK 0xF
|
|
|
|
typedef struct {
|
|
UINT8 SlotNum : 4;
|
|
UINT8 Reserved : 3;
|
|
UINT8 BasicMutAuthReq : 1;
|
|
} SPDM_CHALLENGE_AUTH_RESPONSE_ATTRIBUTE;
|
|
|
|
///
|
|
/// Deprecated in SPDM 1.2
|
|
///
|
|
#define SPDM_CHALLENGE_AUTH_RESPONSE_ATTRIBUTE_BASIC_MUT_AUTH_REQ BIT7
|
|
|
|
#define SPDM_CHALLENGE_AUTH_SIGN_CONTEXT "responder-challenge_auth signing"
|
|
#define SPDM_CHALLENGE_AUTH_SIGN_CONTEXT_SIZE (sizeof(SPDM_CHALLENGE_AUTH_SIGN_CONTEXT) - 1)
|
|
#define SPDM_MUT_CHALLENGE_AUTH_SIGN_CONTEXT "requester-challenge_auth signing"
|
|
#define SPDM_MUT_CHALLENGE_AUTH_SIGN_CONTEXT_SIZE (sizeof(SPDM_MUT_CHALLENGE_AUTH_SIGN_CONTEXT) - 1)
|
|
|
|
///
|
|
/// SPDM GET_MEASUREMENTS request
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == Attributes
|
|
// Param2 == MeasurementOperation
|
|
UINT8 Nonce[32];
|
|
// Below field is added in 1.1.
|
|
UINT8 SlotIDParam; // BIT[0:3]=SlotNum, BIT[4:7]=Reserved
|
|
} SPDM_GET_MEASUREMENTS_REQUEST;
|
|
|
|
typedef struct {
|
|
UINT8 SlotNum : 4;
|
|
UINT8 Reserved : 4;
|
|
} SPDM_GET_MEASUREMENTS_REQUEST_SLOT_ID_PARAMETER;
|
|
|
|
#define SPDM_GET_MEASUREMENTS_REQUEST_SLOT_ID_MASK 0xF
|
|
|
|
///
|
|
/// SPDM GET_MEASUREMENTS request Attributes
|
|
///
|
|
#define SPDM_GET_MEASUREMENTS_REQUEST_ATTRIBUTES_GENERATE_SIGNATURE BIT0
|
|
#define SPDM_GET_MEASUREMENTS_REQUEST_ATTRIBUTES_RAW_BIT_STREAM_REQUESTED BIT1
|
|
#define SPDM_GET_MEASUREMENTS_REQUEST_ATTRIBUTES_NEW_MEASUREMENT_REQUESTED BIT2
|
|
|
|
///
|
|
/// SPDM GET_MEASUREMENTS request MeasurementOperation
|
|
///
|
|
#define SPDM_GET_MEASUREMENTS_REQUEST_MEASUREMENT_OPERATION_TOTAL_NUMBER_OF_MEASUREMENTS 0
|
|
|
|
///
|
|
/// SPDM_GET_MEASUREMENTS_REQUEST_MEASUREMENT_OPERATION_INDEX
|
|
///
|
|
#define SPDM_GET_MEASUREMENTS_REQUEST_MEASUREMENT_OPERATION_ALL_MEASUREMENTS 0xFF
|
|
|
|
///
|
|
/// SPDM MEASUREMENTS block common header
|
|
///
|
|
typedef struct {
|
|
UINT8 Index;
|
|
UINT8 MeasurementSpecification;
|
|
UINT16 MeasurementSize;
|
|
// UINT8 Measurement[MeasurementSize];
|
|
} SPDM_MEASUREMENT_BLOCK_COMMON_HEADER;
|
|
|
|
#define SPDM_MEASUREMENT_BLOCK_HEADER_SPECIFICATION_DMTF BIT0
|
|
|
|
///
|
|
/// SPDM MEASUREMENTS block DMTF header
|
|
///
|
|
typedef struct {
|
|
UINT8 DMTFSpecMeasurementValueType;
|
|
UINT16 DMTFSpecMeasurementValueSize;
|
|
// UINT8 DMTFSpecMeasurementValue[DMTFSpecMeasurementValueSize];
|
|
} 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_DMTF;
|
|
|
|
typedef struct {
|
|
UINT8 Content : 7;
|
|
UINT8 Presentation : 1;
|
|
} SPDM_MEASUREMENTS_BLOCK_MEASUREMENT_TYPE;
|
|
|
|
///
|
|
/// SPDM MEASUREMENTS block MeasurementValueType
|
|
///
|
|
#define SPDM_MEASUREMENT_BLOCK_MEASUREMENT_TYPE_IMMUTABLE_ROM 0
|
|
#define SPDM_MEASUREMENT_BLOCK_MEASUREMENT_TYPE_MUTABLE_FIRMWARE 1
|
|
#define SPDM_MEASUREMENT_BLOCK_MEASUREMENT_TYPE_HARDWARE_CONFIGURATION 2
|
|
#define SPDM_MEASUREMENT_BLOCK_MEASUREMENT_TYPE_FIRMWARE_CONFIGURATION 3
|
|
#define SPDM_MEASUREMENT_BLOCK_MEASUREMENT_TYPE_MEASUREMENT_MANIFEST 4
|
|
#define SPDM_MEASUREMENT_BLOCK_MEASUREMENT_TYPE_DEVICE_MODE 5
|
|
#define SPDM_MEASUREMENT_BLOCK_MEASUREMENT_TYPE_VERSION 6
|
|
#define SPDM_MEASUREMENT_BLOCK_MEASUREMENT_TYPE_SECURE_VERSION_NUMBER 7
|
|
#define SPDM_MEASUREMENT_BLOCK_MEASUREMENT_TYPE_MASK 0x7
|
|
#define SPDM_MEASUREMENT_BLOCK_MEASUREMENT_TYPE_RAW_BIT_STREAM BIT7
|
|
|
|
///
|
|
/// SPDM MEASUREMENTS block index
|
|
///
|
|
#define SPDM_MEASUREMENT_BLOCK_MEASUREMENT_INDEX_MEASUREMENT_MANIFEST 0xFD
|
|
#define SPDM_MEASUREMENT_BLOCK_MEASUREMENT_INDEX_DEVICE_MODE 0xFE
|
|
|
|
///
|
|
/// SPDM MEASUREMENTS device mode
|
|
///
|
|
typedef struct {
|
|
UINT32 OperationalModeCapabilities;
|
|
UINT32 OperationalModeState;
|
|
UINT32 DeviceModeCapabilities;
|
|
UINT32 DeviceModeState;
|
|
} SPDM_MEASUREMENT_DEVICE_MODE;
|
|
|
|
#define SPDM_MEASUREMENT_DEVICE_OPERATION_MODE_MANUFACTURING_MODE BIT0
|
|
#define SPDM_MEASUREMENT_DEVICE_OPERATION_MODE_VALIDATION_MODE BIT1
|
|
#define SPDM_MEASUREMENT_DEVICE_OPERATION_MODE_NORMAL_MODE BIT2
|
|
#define SPDM_MEASUREMENT_DEVICE_OPERATION_MODE_RECOVERY_MODE BIT3
|
|
#define SPDM_MEASUREMENT_DEVICE_OPERATION_MODE_RMA_MODE BIT4
|
|
#define SPDM_MEASUREMENT_DEVICE_OPERATION_MODE_DECOMMISSIONED_MODE BIT5
|
|
|
|
#define SPDM_MEASUREMENT_DEVICE_MODE_NON_INVASIVE_DEBUG_MODE_IS_ACTIVE BIT0
|
|
#define SPDM_MEASUREMENT_DEVICE_MODE_INVASIVE_DEBUG_MODE_IS_ACTIVE BIT1
|
|
#define SPDM_MEASUREMENT_DEVICE_MODE_NON_INVASIVE_DEBUG_MODE_HAS_BEEN_ACTIVE BIT2
|
|
#define SPDM_MEASUREMENT_DEVICE_MODE_INVASIVE_DEBUG_MODE_HAS_BEEN_ACTIVE BIT3
|
|
#define SPDM_MEASUREMENT_DEVICE_MODE_INVASIVE_DEBUG_MODE_HAS_BEEN_ACTIVE_AFTER_MFG BIT4
|
|
|
|
///
|
|
/// SPDM MEASUREMENTS SVN
|
|
///
|
|
typedef UINT64 SPDM_MEASUREMENTS_SECURE_VERSION_NUMBER;
|
|
|
|
///
|
|
/// SPDM GET_MEASUREMENTS response
|
|
///
|
|
typedef struct {
|
|
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];
|
|
} SPDM_MEASUREMENTS_RESPONSE;
|
|
|
|
#define SPDM_MEASUREMENTS_RESPONSE_SLOT_ID_MASK 0xF
|
|
|
|
///
|
|
/// SPDM MEASUREMENTS content changed
|
|
///
|
|
#define SPDM_MEASUREMENTS_RESPONSE_CONTENT_CHANGE_MASK 0x30
|
|
#define SPDM_MEASUREMENTS_RESPONSE_CONTENT_CHANGE_NO_DETECTION 0x00
|
|
#define SPDM_MEASUREMENTS_RESPONSE_CONTENT_CHANGE_DETECTED 0x10
|
|
#define SPDM_MEASUREMENTS_RESPONSE_CONTENT_NO_CHANGE_DETECTED 0x20
|
|
|
|
#define SPDM_MEASUREMENTS_SIGN_CONTEXT "responder-measurements signing"
|
|
#define SPDM_MEASUREMENTS_SIGN_CONTEXT_SIZE (sizeof(SPDM_MEASUREMENTS_SIGN_CONTEXT) - 1)
|
|
|
|
#define SPDM_MEL_SPECIFICATION_DMTF BIT0
|
|
|
|
///
|
|
/// SPDM ERROR response
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == Error Code
|
|
// Param2 == Error Data
|
|
// UINT8 ExtendedErrorData[];
|
|
} SPDM_ERROR_RESPONSE;
|
|
|
|
#define SPDM_EXTENDED_ERROR_DATA_MAX_SIZE 32
|
|
|
|
///
|
|
/// 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
|
|
///
|
|
/// SPDM error code (1.1)
|
|
///
|
|
#define SPDM_ERROR_CODE_DECRYPT_ERROR 0x06
|
|
#define SPDM_ERROR_CODE_REQUEST_IN_FLIGHT 0x08
|
|
#define SPDM_ERROR_CODE_INVALID_RESPONSE_CODE 0x09
|
|
#define SPDM_ERROR_CODE_SESSION_LIMIT_EXCEEDED 0x0A
|
|
|
|
///
|
|
/// SPDM error code (1.2)
|
|
///
|
|
#define SPDM_ERROR_CODE_SESSION_REQUIRED 0x0B
|
|
#define SPDM_ERROR_CODE_RESET_REQUIRED 0x0C
|
|
#define SPDM_ERROR_CODE_RESPONSE_TOO_LARGE 0x0D
|
|
#define SPDM_ERROR_CODE_REQUEST_TOO_LARGE 0x0E
|
|
#define SPDM_ERROR_CODE_LARGE_RESPONSE 0x0F
|
|
#define SPDM_ERROR_CODE_MESSAGE_LOST 0x10
|
|
///
|
|
/// SPDM ResponseNotReady extended data
|
|
///
|
|
typedef struct {
|
|
UINT8 RDTExponent;
|
|
UINT8 RequestCode;
|
|
UINT8 Token;
|
|
UINT8 Rdtm;
|
|
} SPDM_ERROR_DATA_RESPONSE_NOT_READY;
|
|
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == Error Code
|
|
// Param2 == Error Data
|
|
SPDM_ERROR_DATA_RESPONSE_NOT_READY ExtendErrorData;
|
|
} SPDM_ERROR_RESPONSE_DATA_RESPONSE_NOT_READY;
|
|
|
|
///
|
|
/// SPDM LargeResponse extended data
|
|
///
|
|
typedef struct {
|
|
UINT8 Handle;
|
|
} SPDM_ERROR_DATA_LARGE_RESPONSE;
|
|
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
|
|
// param1 == Error Code
|
|
// param2 == Error data
|
|
//
|
|
SPDM_ERROR_DATA_LARGE_RESPONSE ExtendErrorData;
|
|
} SPDM_ERROR_RESPONSE_LARGE_RESPONSE;
|
|
|
|
///
|
|
/// SPDM RESPONSE_IF_READY request
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == RequestCode
|
|
// Param2 == Token
|
|
} SPDM_RESPONSE_IF_READY_REQUEST;
|
|
|
|
///
|
|
/// Maximum size of a vendor defined message data length
|
|
/// limited by the length field size which is 2 bytes
|
|
///
|
|
#define SPDM_MAX_VENDOR_DEFINED_DATA_LEN 65535
|
|
|
|
///
|
|
/// Maximum size of a vendor defined vendor id length
|
|
/// limited by the length field size which is 1 byte
|
|
///
|
|
#define SPDM_MAX_VENDOR_ID_LENGTH 255
|
|
|
|
///
|
|
/// SPDM VENDOR_DEFINED request
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == RSVD
|
|
// Param2 == RSVD
|
|
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;
|
|
// Param1 == RSVD
|
|
// Param2 == RSVD
|
|
UINT16 StandardID;
|
|
UINT8 Len;
|
|
// UINT8 VendorID[Len];
|
|
// UINT16 PayloadLength;
|
|
// UINT8 VendorDefinedPayload[PayloadLength];
|
|
} SPDM_VENDOR_DEFINED_RESPONSE_MSG;
|
|
|
|
//
|
|
// Below command is defined in SPDM 1.1
|
|
//
|
|
|
|
///
|
|
/// SPDM KEY_EXCHANGE request
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == HashType
|
|
// Param2 == SlotNum
|
|
UINT16 ReqSessionID;
|
|
UINT16 Reserved;
|
|
UINT8 RandomData[32];
|
|
// UINT8 ExchangeData[D];
|
|
// UINT16 OpaqueLength;
|
|
// UINT8 OpaqueData[OpaqueLength];
|
|
} SPDM_KEY_EXCHANGE_REQUEST;
|
|
|
|
///
|
|
/// SPDM KEY_EXCHANGE request session_policy
|
|
///
|
|
#define SPDM_KEY_EXCHANGE_REQUEST_SESSION_POLICY_TERMINATION_POLICY_RUNTIME_UPDATE BIT0
|
|
|
|
///
|
|
/// SPDM KEY_EXCHANGE request measurement summary HashType
|
|
///
|
|
#define SPDM_KEY_EXCHANGE_REQUEST_NO_MEASUREMENT_SUMMARY_HASH \
|
|
SPDM_REQUEST_NO_MEASUREMENT_SUMMARY_HASH
|
|
#define SPDM_KEY_EXCHANGE_REQUEST_TCB_COMPONENT_MEASUREMENT_HASH \
|
|
SPDM_REQUEST_TCB_COMPONENT_MEASUREMENT_HASH
|
|
#define SPDM_KEY_EXCHANGE_REQUEST_ALL_MEASUREMENTS_HASH SPDM_REQUEST_ALL_MEASUREMENTS_HASH
|
|
|
|
///
|
|
/// SPDM KEY_EXCHANGE response
|
|
///
|
|
typedef struct {
|
|
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];
|
|
} SPDM_KEY_EXCHANGE_RESPONSE;
|
|
|
|
///
|
|
/// SPDM KEY_EXCHANGE response MutAuthRequested
|
|
///
|
|
#define SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED BIT0
|
|
#define SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED_WITH_ENCAP_REQUEST BIT1
|
|
#define SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED_WITH_GET_DIGESTS BIT2
|
|
|
|
#define SPDM_KEY_EXCHANGE_RESPONSE_SIGN_CONTEXT "responder-key_exchange_rsp signing"
|
|
#define SPDM_KEY_EXCHANGE_RESPONSE_SIGN_CONTEXT_SIZE \
|
|
(sizeof(SPDM_KEY_EXCHANGE_RESPONSE_SIGN_CONTEXT) - 1)
|
|
|
|
#define SPDM_VERSION_1_2_KEY_EXCHANGE_REQUESTER_CONTEXT "Requester-KEP-dmtf-spdm-v1.2"
|
|
#define SPDM_VERSION_1_2_KEY_EXCHANGE_REQUESTER_CONTEXT_SIZE \
|
|
(sizeof(SPDM_VERSION_1_2_KEY_EXCHANGE_REQUESTER_CONTEXT) - 1)
|
|
|
|
#define SPDM_VERSION_1_2_KEY_EXCHANGE_RESPONDER_CONTEXT "Responder-KEP-dmtf-spdm-v1.2"
|
|
#define SPDM_VERSION_1_2_KEY_EXCHANGE_RESPONDER_CONTEXT_SIZE \
|
|
(sizeof(SPDM_VERSION_1_2_KEY_EXCHANGE_RESPONDER_CONTEXT) - 1)
|
|
|
|
///
|
|
/// SPDM FINISH request
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == SignatureIncluded
|
|
// Param2 == ReqSlotNum
|
|
// UINT8 Signature[S];
|
|
// UINT8 RequesterVerifyData[H];
|
|
} SPDM_FINISH_REQUEST;
|
|
|
|
///
|
|
/// SPDM FINISH request SignatureIncluded
|
|
///
|
|
#define SPDM_FINISH_REQUEST_ATTRIBUTES_SIGNATURE_INCLUDED BIT0
|
|
|
|
///
|
|
/// SPDM FINISH response
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == RSVD
|
|
// Param2 == RSVD
|
|
// UINT8 ResponderVerifyData[H];
|
|
} SPDM_FINISH_RESPONSE;
|
|
|
|
#define SPDM_FINISH_SIGN_CONTEXT "requester-finish signing"
|
|
#define SPDM_FINISH_SIGN_CONTEXT_SIZE (sizeof(SPDM_FINISH_SIGN_CONTEXT) - 1)
|
|
|
|
///
|
|
/// SPDM PSK_EXCHANGE request
|
|
///
|
|
typedef struct {
|
|
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];
|
|
} SPDM_PSK_EXCHANGE_REQUEST;
|
|
|
|
///
|
|
/// SPDM PSK_EXCHANGE request measurement summary HashType
|
|
///
|
|
#define SPDM_PSK_EXCHANGE_REQUEST_NO_MEASUREMENT_SUMMARY_HASH \
|
|
SPDM_REQUEST_NO_MEASUREMENT_SUMMARY_HASH
|
|
#define SPDM_PSK_EXCHANGE_REQUEST_TCB_COMPONENT_MEASUREMENT_HASH \
|
|
SPDM_REQUEST_TCB_COMPONENT_MEASUREMENT_HASH
|
|
#define SPDM_PSK_EXCHANGE_REQUEST_ALL_MEASUREMENTS_HASH SPDM_REQUEST_ALL_MEASUREMENTS_HASH
|
|
|
|
///
|
|
/// SPDM PSK_EXCHANGE response
|
|
///
|
|
typedef struct {
|
|
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];
|
|
} SPDM_PSK_EXCHANGE_RESPONSE;
|
|
|
|
///
|
|
/// SPDM PSK_FINISH request
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == RSVD
|
|
// Param2 == RSVD
|
|
// UINT8 RequesterVerifyData[H];
|
|
} SPDM_PSK_FINISH_REQUEST;
|
|
|
|
///
|
|
/// SPDM PSK_FINISH response
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == RSVD
|
|
// Param2 == RSVD
|
|
} SPDM_PSK_FINISH_RESPONSE;
|
|
|
|
///
|
|
/// SPDM HEARTBEAT request
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == RSVD
|
|
// Param2 == RSVD
|
|
} SPDM_HEARTBEAT_REQUEST;
|
|
|
|
///
|
|
/// SPDM HEARTBEAT response
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == RSVD
|
|
// Param2 == RSVD
|
|
} SPDM_HEARTBEAT_RESPONSE;
|
|
|
|
///
|
|
/// SPDM KEY_UPDATE request
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == KeyOperation
|
|
// Param2 == Tag
|
|
} SPDM_KEY_UPDATE_REQUEST;
|
|
|
|
///
|
|
/// 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
|
|
|
|
///
|
|
/// SPDM KEY_UPDATE response
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == KeyOperation
|
|
// Param2 == Tag
|
|
} SPDM_KEY_UPDATE_RESPONSE;
|
|
|
|
///
|
|
/// SPDM GET_ENCAPSULATED_REQUEST request
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == RSVD
|
|
// Param2 == RSVD
|
|
} SPDM_GET_ENCAPSULATED_REQUEST_REQUEST;
|
|
|
|
///
|
|
/// SPDM ENCAPSULATED_REQUEST response
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == RequestID
|
|
// Param2 == RSVD
|
|
// UINT8 EncapsulatedRequest[];
|
|
} SPDM_ENCAPSULATED_REQUEST_RESPONSE;
|
|
|
|
///
|
|
/// SPDM DELIVER_ENCAPSULATED_RESPONSE request
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == RequestID
|
|
// Param2 == RSVD
|
|
// UINT8 EncapsulatedResponse[];
|
|
} SPDM_DELIVER_ENCAPSULATED_RESPONSE_REQUEST;
|
|
|
|
///
|
|
/// SPDM ENCAPSULATED_RESPONSE_ACK response
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == RequestID
|
|
// Param2 == PayloadType
|
|
// below 4 bytes are added in 1.2.
|
|
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_REQ_SLOT_NUMBER 2
|
|
|
|
///
|
|
/// SPDM END_SESSION request
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == EndSessionRequestAttributes
|
|
// Param2 == RSVD
|
|
} SPDM_END_SESSION_REQUEST;
|
|
|
|
///
|
|
/// SPDM END_SESSION request Attributes
|
|
///
|
|
#define SPDM_END_SESSION_REQUEST_ATTRIBUTES_PRESERVE_NEGOTIATED_STATE_CLEAR BIT0
|
|
|
|
///
|
|
/// SPDM END_SESSION response
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
// Param1 == RSVD
|
|
// Param2 == RSVD
|
|
} SPDM_END_SESSION_RESPONSE;
|
|
|
|
//
|
|
// Below command is defined in SPDM 1.2
|
|
//
|
|
|
|
///
|
|
/// SPDM SET_CERTIFICATE request
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
|
|
// param1 == BIT[0:3]=slot_id, BIT[4:7]=RSVD
|
|
// param2 == RSVD
|
|
// param1 and param2 are updated in 1.3
|
|
// param1 == Request attributes, BIT[0:3]=slot_id, BIT[4:6]=SetCertModel, BIT[7]=Erase
|
|
// param2 == KeyPairID
|
|
// void * CertChain
|
|
} SPDM_SET_CERTIFICATE_REQUEST;
|
|
|
|
#define SPDM_SET_CERTIFICATE_REQUEST_SLOT_ID_MASK 0xF
|
|
|
|
///
|
|
/// SPDM SET_CERTIFICATE request Attributes
|
|
///
|
|
#define SPDM_SET_CERTIFICATE_REQUEST_ATTRIBUTES_CERT_MODEL_MASK 0x70
|
|
#define SPDM_SET_CERTIFICATE_REQUEST_ATTRIBUTES_CERT_MODEL_OFFSET 4
|
|
#define SPDM_SET_CERTIFICATE_REQUEST_ATTRIBUTES_ERASE 0x80
|
|
|
|
///
|
|
/// SPDM SET_CERTIFICATE_RSP response
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
|
|
// param1 == BIT[0:3]=slot_id, BIT[4:7]=RSVD
|
|
// param2 == RSVD
|
|
} SPDM_SET_CERTIFICATE_RESPONSE;
|
|
|
|
#define SPDM_SET_CERTIFICATE_RESPONSE_SLOT_ID_MASK 0xF
|
|
|
|
///
|
|
/// SPDM GET_CSR request
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
UINT16 RequesterInfoLength;
|
|
UINT16 OpaqueDataLength;
|
|
|
|
// UINT8 RequesterInfo[RequesterInfoLength];
|
|
// UINT8 OpaqueData[OpaqueDataLength];
|
|
} SPDM_GET_CSR_REQUEST;
|
|
|
|
///
|
|
/// SPDM GET_CSR request Attributes
|
|
///
|
|
#define SPDM_GET_CSR_REQUEST_ATTRIBUTES_CERT_MODEL_MASK 0x07
|
|
#define SPDM_GET_CSR_REQUEST_ATTRIBUTES_CSR_TRACKING_TAG_MASK 0x38
|
|
#define SPDM_GET_CSR_REQUEST_ATTRIBUTES_CSR_TRACKING_TAG_OFFSET 3
|
|
#define SPDM_GET_CSR_REQUEST_ATTRIBUTES_OVERWRITE 0x80
|
|
#define SPDM_GET_CSR_REQUEST_ATTRIBUTES_MAX_CSR_CERT_MODEL 4
|
|
|
|
///
|
|
/// Maximum size, in bytes, of a CSR.
|
|
///
|
|
#define SPDM_MAX_CSR_SIZE 65535
|
|
|
|
///
|
|
/// SPDM CSR response
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
|
|
// param1 == RSVD
|
|
// param2 == RSVD
|
|
UINT16 CsrLength;
|
|
UINT16 Reserved;
|
|
} SPDM_CSR_RESPONSE;
|
|
|
|
///
|
|
/// SPDM CHUNK_SEND request
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
|
|
// param1 - Request Attributes
|
|
// param2 - Handle
|
|
UINT16 ChunkSeqNo;
|
|
UINT16 Reserved;
|
|
UINT32 ChunkSize;
|
|
|
|
// UINT32 LargeMessageSize;
|
|
// UINT8 SpdmChunk[ChunkSize];
|
|
} SPDM_CHUNK_SEND_REQUEST;
|
|
|
|
#define SPDM_CHUNK_SEND_REQUEST_ATTRIBUTE_LAST_CHUNK (1 << 0)
|
|
|
|
///
|
|
/// SPDM CHUNK_SEND_ACK response
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
|
|
// param1 - Response Attributes
|
|
// param2 - Handle
|
|
UINT16 ChunkSeqNo;
|
|
// UINT8 response_to_large_request[variable]
|
|
} SPDM_CHUNK_SEND_ACK_RESPONSE;
|
|
|
|
#define SPDM_CHUNK_SEND_ACK_RESPONSE_ATTRIBUTE_EARLY_ERROR_DETECTED (1 << 0)
|
|
|
|
///
|
|
/// SPDM CHUNK_GET request
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
|
|
// param1 - Reserved
|
|
// param2 - Handle
|
|
UINT16 ChunkSeqNo;
|
|
} SPDM_CHUNK_GET_REQUEST;
|
|
|
|
///
|
|
/// SPDM CHUNK_RESPONSE response
|
|
///
|
|
typedef struct {
|
|
SPDM_MESSAGE_HEADER Header;
|
|
|
|
// param1 - Response Attributes
|
|
// param2 - Handle
|
|
UINT16 ChunkSeqNo;
|
|
UINT16 Reserved;
|
|
UINT32 ChunkSize;
|
|
|
|
// UINT32 LargeMessageSize;
|
|
// UINT8 SpdmChunk[ChunkSize];
|
|
} SPDM_CHUNK_RESPONSE_RESPONSE;
|
|
|
|
#define SPDM_CHUNK_GET_RESPONSE_ATTRIBUTE_LAST_CHUNK (1 << 0)
|
|
#pragma pack()
|
|
|
|
#define SPDM_VERSION_1_1_BIN_CONCAT_LABEL "spdm1.1 "
|
|
#define SPDM_VERSION_1_2_BIN_CONCAT_LABEL "spdm1.2 "
|
|
#define SPDM_BIN_STR_0_LABEL "derived"
|
|
#define SPDM_BIN_STR_1_LABEL "req hs data"
|
|
#define SPDM_BIN_STR_2_LABEL "rsp hs data"
|
|
#define SPDM_BIN_STR_3_LABEL "req app data"
|
|
#define SPDM_BIN_STR_4_LABEL "rsp app data"
|
|
#define SPDM_BIN_STR_5_LABEL "key"
|
|
#define SPDM_BIN_STR_6_LABEL "iv"
|
|
#define SPDM_BIN_STR_7_LABEL "finished"
|
|
#define SPDM_BIN_STR_8_LABEL "exp master"
|
|
#define SPDM_BIN_STR_9_LABEL "traffic upd"
|
|
|
|
///
|
|
/// The maximum amount of time in microseconds the Responder has to provide a response
|
|
/// to requests that do not require cryptographic processing.
|
|
///
|
|
#define SPDM_ST1_VALUE_US 100000
|
|
|
|
///
|
|
/// id-DMTF 1.3.6.1.4.1.412.
|
|
/// These OID are defiend in ANNEX C (informative) OID reference section from the DMTF SPDM spec.
|
|
/// https://www.dmtf.org/sites/default/files/standards/documents/DSP0274_1.2.2.pdf
|
|
///
|
|
#define SPDM_OID_DMTF \
|
|
{0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1C }
|
|
// id-DMTF-spdm, { id-DMTF 274 }, 1.3.6.1.4.1.412.274
|
|
#define SPDM_OID_DMTF_SPDM \
|
|
{0x06, 0x01, 0x04, 0x01, 0x83, 0x1C, 0x82, 0x12 }
|
|
// id-DMTF-device-info, { id-DMTF-spdm 1 }, 1.3.6.1.4.1.412.274.1
|
|
#define SPDM_OID_DMTF_DEVICE_INFO \
|
|
{0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1C, 0x82, 0x12, 0x01 }
|
|
// id-DMTF-hardware-identity, { id-DMTF-spdm 2 }, 1.3.6.1.4.1.412.274.2
|
|
#define SPDM_OID_DMTF_HARDWARE_IDENTITY \
|
|
{0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1C, 0x82, 0x12, 0x02 }
|
|
// id-DMTF-eku-responder-auth, { id-DMTF-spdm 3 }, 1.3.6.1.4.1.412.274.3
|
|
#define SPDM_OID_DMTF_EKU_RESPONDER_AUTH \
|
|
{0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1C, 0x82, 0x12, 0x03 }
|
|
// id-DMTF-eku-requester-auth, { id-DMTF-spdm 4 }, 1.3.6.1.4.1.412.274.4
|
|
#define SPDM_OID_DMTF_EKU_REQUESTER_AUTH \
|
|
{0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1C, 0x82, 0x12, 0x04 }
|
|
// id-DMTF-mutable-certificate, { id-DMTF-spdm 5 }, 1.3.6.1.4.1.412.274.5
|
|
#define SPDM_OID_DMTF_MUTABLE_CERTIFICATE \
|
|
{0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1C, 0x82, 0x12, 0x05 }
|
|
// id-DMTF-SPDM-extension, { id-DMTF-spdm 6 }, 1.3.6.1.4.1.412.274.6
|
|
#define SPDM_OID_DMTF_SPDM_EXTENSION \
|
|
{0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1C, 0x82, 0x12, 0x06 }
|
|
#endif
|