unit_test/test_spdm_requester/get_capabilities.c

बनाया गया Diff कभी समाप्त नहीं होता
18 हटाए गए
588 लाइनें
32 जोड़े गए
603 लाइनें
/**
/**
* Copyright Notice:
* Copyright Notice:
* Copyright 2021-2026 DMTF. All rights reserved.
* Copyright 2021-2026 DMTF. All rights reserved.
* License: BSD 3-Clause License. For full text see link: https://github.com/DMTF/libspdm/blob/main/LICENSE.md
* License: BSD 3-Clause License. For full text see link: https://github.com/DMTF/libspdm/blob/main/LICENSE.md
**/
**/


#include "spdm_unit_test.h"
#include "spdm_unit_test.h"
#include "internal/libspdm_requester_lib.h"
#include "internal/libspdm_requester_lib.h"


#define LIBSPDM_DEFAULT_CAPABILITY_FLAG \
#define LIBSPDM_DEFAULT_CAPABILITY_FLAG \
(SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP | \
(SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP | \
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CHAL_CAP)
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CHAL_CAP)


#define LIBSPDM_DEFAULT_CAPABILITY_FLAG_VERSION_11 \
#define LIBSPDM_DEFAULT_CAPABILITY_FLAG_VERSION_11 \
(SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP | \
(SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP | \
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CHAL_CAP | \
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CHAL_CAP | \
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCRYPT_CAP | \
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCRYPT_CAP | \
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_MAC_CAP | \
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_MAC_CAP | \
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_MUT_AUTH_CAP | \
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_MUT_AUTH_CAP | \
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_KEY_EX_CAP | \
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_KEY_EX_CAP | \
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_PSK_CAP_REQUESTER | \
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_PSK_CAP_REQUESTER | \
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCAP_CAP | \
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCAP_CAP | \
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_HBEAT_CAP | \
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_HBEAT_CAP | \
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_KEY_UPD_CAP | \
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_KEY_UPD_CAP | \
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_HANDSHAKE_IN_THE_CLEAR_CAP)
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_HANDSHAKE_IN_THE_CLEAR_CAP)


#define LIBSPDM_DEFAULT_CAPABILITY_FLAG_VERSION_12 SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CHUNK_CAP
#define LIBSPDM_DEFAULT_CAPABILITY_FLAG_VERSION_12 SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CHUNK_CAP


#define LIBSPDM_DEFAULT_CAPABILITY_RESPONSE_FLAG_VERSION_11 \
#define LIBSPDM_DEFAULT_CAPABILITY_RESPONSE_FLAG_VERSION_11 \
(SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CACHE_CAP | \
(SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CACHE_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHAL_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHAL_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_CAP_SIG | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_CAP_SIG | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_FRESH_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_FRESH_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ENCRYPT_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ENCRYPT_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MAC_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MAC_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MUT_AUTH_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MUT_AUTH_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_KEY_EX_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_KEY_EX_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_PSK_CAP_RESPONDER_WITH_CONTEXT | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_PSK_CAP_RESPONDER_WITH_CONTEXT | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ENCAP_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ENCAP_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_HBEAT_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_HBEAT_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_KEY_UPD_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_KEY_UPD_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_HANDSHAKE_IN_THE_CLEAR_CAP)
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_HANDSHAKE_IN_THE_CLEAR_CAP)


#define LIBSPDM_DEFAULT_CAPABILITY_RESPONSE_FLAG_VERSION_12 \
#define LIBSPDM_DEFAULT_CAPABILITY_RESPONSE_FLAG_VERSION_12 \
(SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHUNK_CAP | \
(SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHUNK_CAP | \
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP | \
SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ALIAS_CERT_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ALIAS_CERT_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHAL_CAP)
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHAL_CAP)


#define LIBSPDM_DEFAULT_CAPABILITY_RESPONSE_FLAG_VERSION_13 \
#define LIBSPDM_DEFAULT_CAPABILITY_RESPONSE_FLAG_VERSION_13 \
(LIBSPDM_DEFAULT_CAPABILITY_RESPONSE_FLAG_VERSION_11 | \
(LIBSPDM_DEFAULT_CAPABILITY_RESPONSE_FLAG_VERSION_11 | \
LIBSPDM_DEFAULT_CAPABILITY_RESPONSE_FLAG_VERSION_12 | \
LIBSPDM_DEFAULT_CAPABILITY_RESPONSE_FLAG_VERSION_12 | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_EP_INFO_CAP_NO_SIG | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_EP_INFO_CAP_NO_SIG | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEL_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEL_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_EVENT_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_EVENT_CAP | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MULTI_KEY_CAP_ONLY | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MULTI_KEY_CAP_ONLY | \
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_GET_KEY_PAIR_INFO_CAP)
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_GET_KEY_PAIR_INFO_CAP)


static size_t m_libspdm_local_buffer_size;
static size_t m_libspdm_local_buffer_size;
static uint8_t m_libspdm_local_buffer[LIBSPDM_MAX_MESSAGE_VCA_BUFFER_SIZE];
static uint8_t m_libspdm_local_buffer[LIBSPDM_MAX_MESSAGE_VCA_BUFFER_SIZE];


static libspdm_return_t send_message(
static libspdm_return_t send_message(
void *spdm_context, size_t request_size, const void *request, uint64_t timeout)
void *spdm_context, size_t request_size, const void *request, uint64_t timeout)
{
{
libspdm_test_context_t *spdm_test_context;
libspdm_test_context_t *spdm_test_context;


spdm_test_context = libspdm_get_test_context();
spdm_test_context = libspdm_get_test_context();
switch (spdm_test_context->case_id) {
switch (spdm_test_context->case_id) {
case 0x1:
case 0x1:
return LIBSPDM_STATUS_SEND_FAIL;
return LIBSPDM_STATUS_SEND_FAIL;
case 0x2:
case 0x2:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x3:
case 0x3:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x4:
case 0x4:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x5:
case 0x5:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x6:
case 0x6:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x7:
case 0x7:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x8:
case 0x8:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x9:
case 0x9:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0xa:
case 0xa:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0xb:
case 0xb:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0xc:
case 0xc:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0xd:
case 0xd:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0xe:
case 0xe:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0xf:
case 0xf:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x10:
case 0x10:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x11:
case 0x11:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x12:
case 0x12:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x13:
case 0x13:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x14:
case 0x14:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x15:
case 0x15:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x16:
case 0x16:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x17:
case 0x17:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x18:
case 0x18:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x19:
case 0x19:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x1a:
case 0x1a:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x1b:
case 0x1b:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x1c:
case 0x1c:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x1d:
case 0x1d:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x1E:
case 0x1E:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x1F:
case 0x1F:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x20: {
case 0x20: {
const uint8_t *ptr = (const uint8_t *)request;
const uint8_t *ptr = (const uint8_t *)request;


m_libspdm_local_buffer_size = 0;
m_libspdm_local_buffer_size = 0;
libspdm_copy_mem(m_libspdm_local_buffer, sizeof(m_libspdm_local_buffer), &ptr[1],
libspdm_copy_mem(m_libspdm_local_buffer, sizeof(m_libspdm_local_buffer), &ptr[1],
request_size - 1);
request_size - 1);
m_libspdm_local_buffer_size += (request_size - 1);
m_libspdm_local_buffer_size += (request_size - 1);
}
}
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x21:
case 0x21:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x22:
case 0x22:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x23:
case 0x23:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x24:
case 0x24:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;
case 0x25:
return LIBSPDM_STATUS_SUCCESS;
case 0x26:
return LIBSPDM_STATUS_SUCCESS;
case 0x27:
return LIBSPDM_STATUS_SUCCESS;
case 0x28:
return LIBSPDM_STATUS_SUCCESS;
case 0x29:
return LIBSPDM_STATUS_SUCCESS;
case 0x2A:
return LIBSPDM_STATUS_SUCCESS;
case 0x2B:
return LIBSPDM_STATUS_SUCCESS;
case 0x2C:
return LIBSPDM_STATUS_SUCCESS;
case 0x2D:
return LIBSPDM_STATUS_SUCCESS;
case 0x2E:
return LIBSPDM_STATUS_SUCCESS;
case 0x2F:
return LIBSPDM_STATUS_SUCCESS;
case 0x30:
return LIBSPDM_STATUS_SUCCESS;
case 0x31:
return LIBSPDM_STATUS_SUCCESS;
case 0x32:
return LIBSPDM_STATUS_SUCCESS;
case 0x33:
return LIBSPDM_STATUS_SUCCESS;
case 0x34:
return LIBSPDM_STATUS_SUCCESS;
default:
default:
return LIBSPDM_STATUS_SEND_FAIL;
return LIBSPDM_STATUS_SEND_FAIL;
}
}
}
}


static libspdm_return_t receive_message(
static libspdm_return_t receive_message(
void *spdm_context, size_t *response_size, void **response, uint64_t timeout)
void *spdm_context, size_t *response_size, void **response, uint64_t timeout)
{
{
libspdm_test_context_t *spdm_test_context;
libspdm_test_context_t *spdm_test_context;


spdm_test_context = libspdm_get_test_context();
spdm_test_context = libspdm_get_test_context();
switch (spdm_test_context->case_id) {
switch (spdm_test_context->case_id) {
case 0x1:
case 0x1:
return LIBSPDM_STATUS_RECEIVE_FAIL;
return LIBSPDM_STATUS_RECEIVE_FAIL;


case 0x2: {
case 0x2: {
spdm_capabilities_response_t *spdm_response;
spdm_capabilities_response_t *spdm_response;
size_t spdm_response_size;
size_t spdm_response_size;
size_t transport_header_size;
size_t transport_header_size;


spdm_response_size = sizeof(spdm_capabilities_response_t);
spdm_response_size = sizeof(spdm_capabilities_response_t);
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
spdm_response = (void *)((uint8_t *)*response + transport_header_size);
spdm_response = (void *)((uint8_t *)*response + transport_header_size);


libspdm_zero_mem(spdm_response, spdm_response_size);
libspdm_zero_mem(spdm_response, spdm_response_size);
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.request_response_code = SPDM_CAPABILITIES;
spdm_response->header.request_response_code = SPDM_CAPABILITIES;
spdm_response->header.param1 = 0;
spdm_response->header.param1 = 0;
spdm_response->header.param2 = 0;
spdm_response->header.param2 = 0;
spdm_response->ct_exponent = 0;
spdm_response->ct_exponent = 0;
spdm_response->flags = LIBSPDM_DEFAULT_CAPABILITY_FLAG;
spdm_response->flags = LIBSPDM_DEFAULT_CAPABILITY_FLAG;


libspdm_transport_test_encode_message(spdm_context, NULL, false,
libspdm_transport_test_encode_message(spdm_context, NULL, false,
false, spdm_response_size,
false, spdm_response_size,
spdm_response,
spdm_response,
response_size, response);
response_size, response);
}
}
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;


case 0x3: {
case 0x3: {
spdm_capabilities_response_t *spdm_response;
spdm_capabilities_response_t *spdm_response;
size_t spdm_response_size;
size_t spdm_response_size;
size_t transport_header_size;
size_t transport_header_size;


spdm_response_size = sizeof(spdm_capabilities_response_t);
spdm_response_size = sizeof(spdm_capabilities_response_t);
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
spdm_response = (void *)((uint8_t *)*response + transport_header_size);
spdm_response = (void *)((uint8_t *)*response + transport_header_size);


libspdm_zero_mem(spdm_response, spdm_response_size);
libspdm_zero_mem(spdm_response, spdm_response_size);
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.request_response_code = SPDM_CAPABILITIES;
spdm_response->header.request_response_code = SPDM_CAPABILITIES;
spdm_response->header.param1 = 0;
spdm_response->header.param1 = 0;
spdm_response->header.param2 = 0;
spdm_response->header.param2 = 0;
spdm_response->ct_exponent = 0;
spdm_response->ct_exponent = 0;
spdm_response->flags = LIBSPDM_DEFAULT_CAPABILITY_FLAG;
spdm_response->flags = LIBSPDM_DEFAULT_CAPABILITY_FLAG;


libspdm_transport_test_encode_message(spdm_context, NULL, false,
libspdm_transport_test_encode_message(spdm_context, NULL, false,
false, spdm_response_size,
false, spdm_response_size,
spdm_response,
spdm_response,
response_size, response);
response_size, response);
}
}
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;


case 0x4: {
case 0x4: {
spdm_error_response_t *spdm_response;
spdm_error_response_t *spdm_response;
size_t spdm_response_size;
size_t spdm_response_size;
size_t transport_header_size;
size_t transport_header_size;


spdm_response_size = sizeof(spdm_error_response_t);
spdm_response_size = sizeof(spdm_error_response_t);
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
spdm_response = (void *)((uint8_t *)*response + transport_header_size);
spdm_response = (void *)((uint8_t *)*response + transport_header_size);


libspdm_zero_mem(spdm_response, spdm_response_size);
libspdm_zero_mem(spdm_response, spdm_response_size);
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.request_response_code = SPDM_ERROR;
spdm_response->header.request_response_code = SPDM_ERROR;
spdm_response->header.param1 = SPDM_ERROR_CODE_INVALID_REQUEST;
spdm_response->header.param1 = SPDM_ERROR_CODE_INVALID_REQUEST;
spdm_response->header.param2 = 0;
spdm_response->header.param2 = 0;


libspdm_transport_test_encode_message(spdm_context, NULL, false,
libspdm_transport_test_encode_message(spdm_context, NULL, false,
false, spdm_response_size,
false, spdm_response_size,
spdm_response,
spdm_response,
response_size, response);
response_size, response);
}
}
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;


case 0x5: {
case 0x5: {
spdm_error_response_t *spdm_response;
spdm_error_response_t *spdm_response;
size_t spdm_response_size;
size_t spdm_response_size;
size_t transport_header_size;
size_t transport_header_size;


spdm_response_size = sizeof(spdm_error_response_t);
spdm_response_size = sizeof(spdm_error_response_t);
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
spdm_response = (void *)((uint8_t *)*response + transport_header_size);
spdm_response = (void *)((uint8_t *)*response + transport_header_size);


libspdm_zero_mem(spdm_response, spdm_response_size);
libspdm_zero_mem(spdm_response, spdm_response_size);
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.request_response_code = SPDM_ERROR;
spdm_response->header.request_response_code = SPDM_ERROR;
spdm_response->header.param1 = SPDM_ERROR_CODE_BUSY;
spdm_response->header.param1 = SPDM_ERROR_CODE_BUSY;
spdm_response->header.param2 = 0;
spdm_response->header.param2 = 0;


libspdm_transport_test_encode_message(spdm_context, NULL, false,
libspdm_transport_test_encode_message(spdm_context, NULL, false,
false, spdm_response_size,
false, spdm_response_size,
spdm_response,
spdm_response,
response_size, response);
response_size, response);
}
}
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;


case 0x6: {
case 0x6: {
static size_t sub_index1 = 0;
static size_t sub_index1 = 0;
if (sub_index1 == 0) {
if (sub_index1 == 0) {
spdm_error_response_t *spdm_response;
spdm_error_response_t *spdm_response;
size_t spdm_response_size;
size_t spdm_response_size;
size_t transport_header_size;
size_t transport_header_size;


spdm_response_size = sizeof(spdm_error_response_t);
spdm_response_size = sizeof(spdm_error_response_t);
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
spdm_response = (void *)((uint8_t *)*response + transport_header_size);
spdm_response = (void *)((uint8_t *)*response + transport_header_size);


libspdm_zero_mem(spdm_response, spdm_response_size);
libspdm_zero_mem(spdm_response, spdm_response_size);
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.request_response_code = SPDM_ERROR;
spdm_response->header.request_response_code = SPDM_ERROR;
spdm_response->header.param1 = SPDM_ERROR_CODE_BUSY;
spdm_response->header.param1 = SPDM_ERROR_CODE_BUSY;
spdm_response->header.param2 = 0;
spdm_response->header.param2 = 0;


libspdm_transport_test_encode_message(
libspdm_transport_test_encode_message(
spdm_context, NULL, false, false,
spdm_context, NULL, false, false,
spdm_response_size, spdm_response,
spdm_response_size, spdm_response,
response_size, response);
response_size, response);
} else if (sub_index1 == 1) {
} else if (sub_index1 == 1) {
spdm_capabilities_response_t *spdm_response;
spdm_capabilities_response_t *spdm_response;
size_t spdm_response_size;
size_t spdm_response_size;
size_t transport_header_size;
size_t transport_header_size;


spdm_response_size = sizeof(spdm_capabilities_response_t);
spdm_response_size = sizeof(spdm_capabilities_response_t);
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
spdm_response = (void *)((uint8_t *)*response + transport_header_size);
spdm_response = (void *)((uint8_t *)*response + transport_header_size);


libspdm_zero_mem(spdm_response, spdm_response_size);
libspdm_zero_mem(spdm_response, spdm_response_size);
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.request_response_code = SPDM_CAPABILITIES;
spdm_response->header.request_response_code = SPDM_CAPABILITIES;
spdm_response->header.param1 = 0;
spdm_response->header.param1 = 0;
spdm_response->header.param2 = 0;
spdm_response->header.param2 = 0;
spdm_response->ct_exponent = 0;
spdm_response->ct_exponent = 0;
spdm_response->flags = LIBSPDM_DEFAULT_CAPABILITY_FLAG;
spdm_response->flags = LIBSPDM_DEFAULT_CAPABILITY_FLAG;


libspdm_transport_test_encode_message(
libspdm_transport_test_encode_message(
spdm_context, NULL, false, false,
spdm_context, NULL, false, false,
spdm_response_size, spdm_response,
spdm_response_size, spdm_response,
response_size, response);
response_size, response);
}
}
sub_index1++;
sub_index1++;
}
}
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;


case 0x7: {
case 0x7: {
spdm_error_response_t *spdm_response;
spdm_error_response_t *spdm_response;
size_t spdm_response_size;
size_t spdm_response_size;
size_t transport_header_size;
size_t transport_header_size;


spdm_response_size = sizeof(spdm_error_response_t);
spdm_response_size = sizeof(spdm_error_response_t);
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
spdm_response = (void *)((uint8_t *)*response + transport_header_size);
spdm_response = (void *)((uint8_t *)*response + transport_header_size);


libspdm_zero_mem(spdm_response, spdm_response_size);
libspdm_zero_mem(spdm_response, spdm_response_size);
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.request_response_code = SPDM_ERROR;
spdm_response->header.request_response_code = SPDM_ERROR;
spdm_response->header.param1 = SPDM_ERROR_CODE_REQUEST_RESYNCH;
spdm_response->header.param1 = SPDM_ERROR_CODE_REQUEST_RESYNCH;
spdm_response->header.param2 = 0;
spdm_response->header.param2 = 0;


libspdm_transport_test_encode_message(spdm_context, NULL, false,
libspdm_transport_test_encode_message(spdm_context, NULL, false,
false, spdm_response_size,
false, spdm_response_size,
spdm_response,
spdm_response,
response_size, response);
response_size, response);
}
}
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;


case 0x8: {
case 0x8: {
spdm_error_response_data_response_not_ready_t *spdm_response;
spdm_error_response_data_response_not_ready_t *spdm_response;
size_t spdm_response_size;
size_t spdm_response_size;
size_t transport_header_size;
size_t transport_header_size;


spdm_response_size = sizeof(spdm_error_response_data_response_not_ready_t);
spdm_response_size = sizeof(spdm_error_response_data_response_not_ready_t);
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
spdm_response = (void *)((uint8_t *)*response + transport_header_size);
spdm_response = (void *)((uint8_t *)*response + transport_header_size);


libspdm_zero_mem(spdm_response, spdm_response_size);
libspdm_zero_mem(spdm_response, spdm_response_size);
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.request_response_code = SPDM_ERROR;
spdm_response->header.request_response_code = SPDM_ERROR;
spdm_response->header.param1 = SPDM_ERROR_CODE_RESPONSE_NOT_READY;
spdm_response->header.param1 = SPDM_ERROR_CODE_RESPONSE_NOT_READY;
spdm_response->header.param2 = 0;
spdm_response->header.param2 = 0;
spdm_response->extend_error_data.rd_exponent = 1;
spdm_response->extend_error_data.rd_exponent = 1;
spdm_response->extend_error_data.rd_tm = 2;
spdm_response->extend_error_data.rd_tm = 2;
spdm_response->extend_error_data.request_code = SPDM_GET_CAPABILITIES;
spdm_response->extend_error_data.request_code = SPDM_GET_CAPABILITIES;
spdm_response->extend_error_data.token = 0;
spdm_response->extend_error_data.token = 0;


libspdm_transport_test_encode_message(spdm_context, NULL, false,
libspdm_transport_test_encode_message(spdm_context, NULL, false,
false, spdm_response_size,
false, spdm_response_size,
spdm_response,
spdm_response,
response_size, response);
response_size, response);
}
}
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;


case 0x9:
case 0x9:
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;


case 0xa: {
case 0xa: {
spdm_capabilities_response_t *spdm_response;
spdm_capabilities_response_t *spdm_response;
size_t spdm_response_size;
size_t spdm_response_size;
size_t transport_header_size;
size_t transport_header_size;


spdm_response_size = sizeof(spdm_capabilities_response_t);
spdm_response_size = sizeof(spdm_capabilities_response_t);
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
spdm_response = (void *)((uint8_t *)*response + transport_header_size);
spdm_response = (void *)((uint8_t *)*response + transport_header_size);


libspdm_zero_mem(spdm_response, spdm_response_size);
libspdm_zero_mem(spdm_response, spdm_response_size);
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.request_response_code = SPDM_CAPABILITIES;
spdm_response->header.request_response_code = SPDM_CAPABILITIES;
spdm_response->header.param1 = 0;
spdm_response->header.param1 = 0;
spdm_response->header.param2 = 0;
spdm_response->header.param2 = 0;
spdm_response->ct_exponent = 0;
spdm_response->ct_exponent = 0;
spdm_response->flags =
spdm_response->flags =
(SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CACHE_CAP |
(SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CACHE_CAP |
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP |
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP |
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHAL_CAP |
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHAL_CAP |
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_CAP_SIG |
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_CAP_SIG |
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_FRESH_CAP);
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_FRESH_CAP);


libspdm_transport_test_encode_message(spdm_context, NULL, false,
libspdm_transport_test_encode_message(spdm_context, NULL, false,
false, spdm_response_size,
false, spdm_response_size,
spdm_response,
spdm_response,
response_size, response);
response_size, response);
}
}
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;


case 0xb: {
case 0xb: {
spdm_capabilities_response_t *spdm_response;
spdm_capabilities_response_t *spdm_response;
size_t spdm_response_size;
size_t spdm_response_size;
size_t transport_header_size;
size_t transport_header_size;


spdm_response_size = sizeof(spdm_capabilities_response_t);
spdm_response_size = sizeof(spdm_capabilities_response_t);
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
spdm_response = (void *)((uint8_t *)*response + transport_header_size);
spdm_response = (void *)((uint8_t *)*response + transport_header_size);


libspdm_zero_mem(spdm_response, spdm_response_size);
libspdm_zero_mem(spdm_response, spdm_response_size);
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.request_response_code = SPDM_CAPABILITIES;
spdm_response->header.request_response_code = SPDM_CAPABILITIES;
spdm_response->header.param1 = 0;
spdm_response->header.param1 = 0;
spdm_response->header.param2 = 0;
spdm_response->header.param2 = 0;
spdm_response->ct_exponent = 0;
spdm_response->ct_exponent = 0;
spdm_response->flags =
spdm_response->flags =
!(SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CACHE_CAP |
!(SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CACHE_CAP |
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP |
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP |
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHAL_CAP |
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHAL_CAP |
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_CAP_SIG |
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_CAP_SIG |
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_FRESH_CAP);
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_FRESH_CAP);


libspdm_transport_test_encode_message(spdm_context, NULL, false,
libspdm_transport_test_encode_message(spdm_context, NULL, false,
false, spdm_response_size,
false, spdm_response_size,
spdm_response,
spdm_response,
response_size, response);
response_size, response);
}
}
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;


case 0xc: {
case 0xc: {
spdm_capabilities_response_t *spdm_response;
spdm_capabilities_response_t *spdm_response;
size_t spdm_response_size;
size_t spdm_response_size;
size_t transport_header_size;
size_t transport_header_size;


spdm_response_size = sizeof(spdm_capabilities_response_t);
spdm_response_size = sizeof(spdm_capabilities_response_t);
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
spdm_response = (void *)((uint8_t *)*response + transport_header_size);
spdm_response = (void *)((uint8_t *)*response + transport_header_size);


libspdm_zero_mem(spdm_response, spdm_response_size);
libspdm_zero_mem(spdm_response, spdm_response_size);
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.request_response_code = SPDM_CAPABILITIES;
spdm_response->header.request_response_code = SPDM_CAPABILITIES;
spdm_response->header.param1 = 0;
spdm_response->header.param1 = 0;
spdm_response->header.param2 = 0;
spdm_response->header.param2 = 0;
spdm_response->ct_exponent = 0;
spdm_response->ct_exponent = 0;
spdm_response->flags = SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_FRESH_CAP |
spdm_response->flags = SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_FRESH_CAP |
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_CAP_NO_SIG;
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_CAP_NO_SIG;


libspdm_transport_test_encode_message(spdm_context, NULL, false,
libspdm_transport_test_encode_message(spdm_context, NULL, false,
false, spdm_response_size,
false, spdm_response_size,
spdm_response,
spdm_response,
response_size, response);
response_size, response);
}
}
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;


case 0xd: {
case 0xd: {
spdm_capabilities_response_t *spdm_response;
spdm_capabilities_response_t *spdm_response;
size_t spdm_response_size;
size_t spdm_response_size;
size_t transport_header_size;
size_t transport_header_size;


spdm_response_size = sizeof(spdm_capabilities_response_t);
spdm_response_size = sizeof(spdm_capabilities_response_t);
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
spdm_response = (void *)((uint8_t *)*response + transport_header_size);
spdm_response = (void *)((uint8_t *)*response + transport_header_size);


libspdm_zero_mem(spdm_response, spdm_response_size);
libspdm_zero_mem(spdm_response, spdm_response_size);
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.request_response_code = SPDM_CAPABILITIES;
spdm_response->header.request_response_code = SPDM_CAPABILITIES;
spdm_response->header.param1 = 0;
spdm_response->header.param1 = 0;
spdm_response->header.param2 = 0;
spdm_response->header.param2 = 0;


libspdm_transport_test_encode_message(
libspdm_transport_test_encode_message(
spdm_context, NULL, false, false,
spdm_context, NULL, false, false,
sizeof(spdm_message_header_t), spdm_response,
sizeof(spdm_message_header_t), spdm_response,
response_size, response);
response_size, response);
}
}
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;


case 0xe: {
case 0xe: {
spdm_capabilities_response_t *spdm_response;
spdm_capabilities_response_t *spdm_response;
size_t spdm_response_size;
size_t spdm_response_size;
size_t transport_header_size;
size_t transport_header_size;


spdm_response_size = sizeof(spdm_capabilities_response_t);
spdm_response_size = sizeof(spdm_capabilities_response_t);
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
spdm_response = (void *)((uint8_t *)*response + transport_header_size);
spdm_response = (void *)((uint8_t *)*response + transport_header_size);


libspdm_zero_mem(spdm_response, spdm_response_size);
libspdm_zero_mem(spdm_response, spdm_response_size);
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.request_response_code = SPDM_CAPABILITIES;
spdm_response->header.request_response_code = SPDM_CAPABILITIES;
spdm_response->header.param1 = 0;
spdm_response->header.param1 = 0;
spdm_response->header.param2 = 0;
spdm_response->header.param2 = 0;
spdm_response->ct_exponent = 0;
spdm_response->ct_exponent = 0;
spdm_response->flags = LIBSPDM_DEFAULT_CAPABILITY_FLAG;
spdm_response->flags = LIBSPDM_DEFAULT_CAPABILITY_FLAG;


libspdm_transport_test_encode_message(
libspdm_transport_test_encode_message(
spdm_context, NULL, false, false,
spdm_context, NULL, false, false,
sizeof(spdm_capabilities_response_t) + sizeof(uint8_t), spdm_response,
sizeof(spdm_capabilities_response_t) + sizeof(uint8_t), spdm_response,
response_size, response);
response_size, response);
}
}
return LIBSPDM_STATUS_INVALID_MSG_SIZE;
return LIBSPDM_STATUS_INVALID_MSG_SIZE;


case 0xf: {
case 0xf: {
spdm_capabilities_response_t *spdm_response;
spdm_capabilities_response_t *spdm_response;
size_t spdm_response_size;
size_t spdm_response_size;
size_t transport_header_size;
size_t transport_header_size;


spdm_response_size = sizeof(spdm_capabilities_response_t);
spdm_response_size = sizeof(spdm_capabilities_response_t);
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
spdm_response = (void *)((uint8_t *)*response + transport_header_size);
spdm_response = (void *)((uint8_t *)*response + transport_header_size);


libspdm_zero_mem(spdm_response, spdm_response_size);
libspdm_zero_mem(spdm_response, spdm_response_size);
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
spdm_response->header.request_response_code = SPDM_CAPABILITIES;
spdm_response->header.request_response_code = SPDM_CAPABILITIES;
spdm_response->header.param1 = 0;
spdm_response->header.param1 = 0;
spdm_response->header.param2 = 0;
spdm_response->header.param2 = 0;
spdm_response->ct_exponent = 0;
spdm_response->ct_exponent = 0;
spdm_response->flags = LIBSPDM_DEFAULT_CAPABILITY_FLAG;
spdm_response->flags = LIBSPDM_DEFAULT_CAPABILITY_FLAG;


libspdm_transport_test_encode_message(
libspdm_transport_test_encode_message(
spdm_context, NULL, false, false,
spdm_context, NULL, false, false,
sizeof(spdm_capabilities_response_t) - sizeof(uint8_t), spdm_response,
sizeof(spdm_capabilities_response_t) - sizeof(uint8_t), spdm_response,
response_size, response);
response_size, response);
}
}
return LIBSPDM_STATUS_INVALID_MSG_SIZE;
return LIBSPDM_STATUS_INVALID_MSG_SIZE;


case 0x10: {
case 0x10: {
spdm_capabilities_response_t *spdm_response;
spdm_capabilities_response_t *spdm_response;
size_t spdm_response_size;
size_t spdm_response_size;
size_t transport_header_size;
size_t transport_header_size;


spdm_response_size = sizeof(spdm_capabilities_response_t);
spdm_response_size = sizeof(spdm_capabilities_response_t);
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
spdm_response = (void *)((uint8_t *)*response + transport_header_size);
spdm_response = (void *)((uint8_t *)*response + transport_header_size);


libspdm_zero_mem(spdm_response, spdm_response_size);
libspdm_zero_mem(spdm_response, spdm_response_size);
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_11;
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_11;
spdm_response->header.request_response_code = SPDM_CAPABILITIES;
spdm_response->header.request_response_code = SPDM_CAPABILITIES;
spdm_response->header.param1 = 0;
spdm_response->header.param1 = 0;
spdm_response->header.param2 = 0;
spdm_response->header.param2 = 0;
spdm_response->ct_exponent = 0;
spdm_response->ct_exponent = 0;
spdm_response->flags = LIBSPDM_DEFAULT_CAPABILITY_RESPONSE_FLAG_VERSION_11;
spdm_response->flags = LIBSPDM_DEFAULT_CAPABILITY_RESPONSE_FLAG_VERSION_11;


libspdm_transport_test_encode_message(spdm_context, NULL, false,
libspdm_transport_test_encode_message(spdm_context, NULL, false,
false, spdm_response_size,
false, spdm_response_size,
spdm_response,
spdm_response,
response_size, response);
response_size, response);
}
}
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;


case 0x11: {
case 0x11: {
spdm_capabilities_response_t *spdm_response;
spdm_capabilities_response_t *spdm_response;
size_t spdm_response_size;
size_t spdm_response_size;
size_t transport_header_size;
size_t transport_header_size;


spdm_response_size = sizeof(spdm_capabilities_response_t);
spdm_response_size = sizeof(spdm_capabilities_response_t);
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
spdm_response = (void *)((uint8_t *)*response + transport_header_size);
spdm_response = (void *)((uint8_t *)*response + transport_header_size);


libspdm_zero_mem(spdm_response, spdm_response_size);
libspdm_zero_mem(spdm_response, spdm_response_size);
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_11;
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_11;
spdm_response->header.request_response_code = SPDM_CAPABILITIES;
spdm_response->header.request_response_code = SPDM_CAPABILITIES;
spdm_response->header.param1 = 0;
spdm_response->header.param1 = 0;
spdm_response->header.param2 = 0;
spdm_response->header.param2 = 0;
spdm_response->ct_exponent = 0;
spdm_response->ct_exponent = 0;
spdm_response->flags =
spdm_response->flags =
LIBSPDM_DEFAULT_CAPABILITY_RESPONSE_FLAG_VERSION_11 &
LIBSPDM_DEFAULT_CAPABILITY_RESPONSE_FLAG_VERSION_11 &
(0xFFFFFFFF ^
(0xFFFFFFFF ^
(SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_KEY_EX_CAP |
(SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_KEY_EX_CAP |
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_PSK_CAP |
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_PSK_CAP |
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_HANDSHAKE_IN_THE_CLEAR_CAP));
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_HANDSHAKE_IN_THE_CLEAR_CAP));


libspdm_transport_test_encode_message(spdm_context, NULL, false,
libspdm_transport_test_encode_message(spdm_context, NULL, false,
false, spdm_response_size,
false, spdm_response_size,
spdm_response,
spdm_response,
response_size, response);
response_size, response);
}
}
return LIBSPDM_STATUS_SUCCESS;
return LIBSPDM_STATUS_SUCCESS;


case 0x12: {
case 0x12: {
spdm_capabilities_response_t *spdm_response;
spdm_capabilities_response_t *spdm_response;
size_t spdm_response_size;
size_t spdm_response_size;
size_t transport_header_size;
size_t transport_header_size;


spdm_response_size = sizeof(spdm_capabilities_response_t);
spdm_response_size = sizeof(spdm_capabilities_response_t);
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE;
spdm_response = (void *)((uint8_t *)*response + transport_header_size);
spdm_response = (void *)((uint8_t *)*response + transport_header_size);


libspdm_zero_mem(spdm_response, spdm_response_size);
libspdm_zero_mem(spdm_response, spdm_response_size);
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_11;
spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_11;
spdm_response->header.request_response_code = SPDM_CAPABILITIES;
spdm_respons
spdm_response->header.param1 = 0;
spdm_response->header.param2 = 0;
spdm_response->ct_exponent = 0;
spdm_response->flags =
LIBSPDM_DEFAULT_CAPABILITY_RESPONSE_FLAG_VERSION_11 &
(0xFFFFFFFF ^
(SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MAC_CAP |
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_KEY_EX_CAP |
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_PSK_CAP |
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_HANDSHAKE_IN_THE_CLEAR_CAP));

libspdm_transport_test_encode_message(spdm_context, NULL, false,
false, spdm_response_size,
spdm_response,
response_size, response);
}
ret