spdm: add spdm storage transport virtual header

This header contains the transport encoding for an SPDM message that
uses the SPDM over Storage transport as defined by the DMTF DSP0286.

Note that in the StorageSpdmTransportHeader structure, security_protocol
field is defined in the SCSI Primary Commands 5 (SPC-5) specification.
The NVMe specification also refers to the SPC-5 for this definition.
The security_protocol_specific field is defined in DSP0286 and is
referred to as SP Specific for NVMe and ATA.

Signed-off-by: Wilfred Mallawa <wilfred.mallawa@wdc.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
This commit is contained in:
Wilfred Mallawa 2025-10-03 21:39:43 +10:00 committed by Klaus Jensen
parent 169e8d0c4b
commit 64a9336a41

View file

@ -88,6 +88,20 @@ bool spdm_socket_send(const int socket, uint32_t socket_cmd,
*/
void spdm_socket_close(const int socket, uint32_t transport_type);
/*
* Defines the transport encoding for SPDM, this information shall be passed
* down to the SPDM server, when conforming to the SPDM over Storage standard
* as defined by DSP0286.
*/
typedef struct {
uint8_t security_protocol; /* Must be 0xE8 for SPDM Commands
as per SCSI Primary Commands 5 */
uint16_t security_protocol_specific; /* Bit[7:2] SPDM Operation
Bit[0:1] Connection ID
per DSP0286 1.0: Section 7.2 */
uint32_t length; /* Length of the SPDM Message*/
} QEMU_PACKED StorageSpdmTransportHeader;
#define SPDM_SOCKET_COMMAND_NORMAL 0x0001
#define SPDM_SOCKET_STORAGE_CMD_IF_SEND 0x0002
#define SPDM_SOCKET_STORAGE_CMD_IF_RECV 0x0003