Skip to content

Commit ceb8802

Browse files
Xiaojyao1
Xiao
authored andcommitted
Merge test_spdm_vendor_cmds into test_spdm_requester or test_spdm_responder
Signed-off-by: Xiao <[email protected]>
1 parent 347dd25 commit ceb8802

File tree

11 files changed

+357
-244
lines changed

11 files changed

+357
-244
lines changed

CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -952,7 +952,6 @@ else()
952952
ADD_SUBDIRECTORY(unit_test/test_spdm_crypt)
953953
ADD_SUBDIRECTORY(unit_test/test_spdm_fips)
954954
ADD_SUBDIRECTORY(unit_test/test_spdm_secured_message)
955-
ADD_SUBDIRECTORY(unit_test/test_spdm_vendor_cmds)
956955
endif()
957956

958957
if((NOT TOOLCHAIN STREQUAL "ARM_DS2022") AND (NOT TOOLCHAIN STREQUAL "RISCV_XPACK"))

unit_test/test_spdm_requester/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,15 @@ SET(src_test_spdm_requester
4242
get_csr.c
4343
chunk_get.c
4444
chunk_send.c
45+
vendor_request.c
4546
error_test/get_version_err.c
4647
error_test/get_capabilities_err.c
4748
error_test/negotiate_algorithms_err.c
4849
error_test/get_digests_err.c
4950
error_test/key_exchange_err.c
5051
error_test/get_measurements_err.c
5152
error_test/get_event_types_err.c
53+
error_test/vendor_request_err.c
5254
${LIBSPDM_DIR}/unit_test/spdm_unit_test_common/common.c
5355
${LIBSPDM_DIR}/unit_test/spdm_unit_test_common/algo.c
5456
${LIBSPDM_DIR}/unit_test/spdm_unit_test_common/support.c

unit_test/test_spdm_vendor_cmds/error_test/vendor_cmds_err.c renamed to unit_test/test_spdm_requester/error_test/vendor_request_err.c

Lines changed: 2 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/**
2-
* Copyright 2023 DMTF. All rights reserved.
2+
* Copyright Notice:
3+
* Copyright 2023-2024 DMTF. All rights reserved.
34
* License: BSD 3-Clause License. For full text see link: https://github.com/DMTF/libspdm/blob/main/LICENSE.md
45
**/
56

@@ -92,8 +93,6 @@ static libspdm_return_t libspdm_requester_vendor_cmds_err_test_send_message(
9293
m_libspdm_local_buffer_size += request_size;
9394
}
9495
return LIBSPDM_STATUS_SUCCESS;
95-
case 0x2:
96-
return LIBSPDM_STATUS_SUCCESS;
9796
default:
9897
return LIBSPDM_STATUS_SEND_FAIL;
9998
}
@@ -217,66 +216,6 @@ static void libspdm_test_requester_vendor_cmds_err_case1(void **state)
217216
printf("case 1 %d\n", response.data[0]);
218217
}
219218

220-
/**
221-
* Test 2: Sending a vendor defined request with one parameter NULL
222-
* Expected behavior: client returns a status of LIBSPDM_STATUS_INVALID_PARAMETER
223-
**/
224-
static void libspdm_test_requester_vendor_cmds_err_case2(void **state)
225-
{
226-
libspdm_return_t status;
227-
libspdm_test_context_t *spdm_test_context;
228-
libspdm_context_t *spdm_context;
229-
uint8_t request_buffer[255] = {0};
230-
libspdm_vendor_request_test request;
231-
libspdm_vendor_response_test response = {0};
232-
response.vendor_id_len = sizeof(response.vendor_id);
233-
response.data_len = sizeof(response.data);
234-
size_t response_len = 0;
235-
236-
spdm_test_context = *state;
237-
spdm_context = spdm_test_context->spdm_context;
238-
spdm_test_context->case_id = 0x1;
239-
spdm_context->connection_info.algorithm.base_hash_algo =
240-
SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SHA_256;
241-
request.header.spdm_version = SPDM_MESSAGE_VERSION_10;
242-
spdm_context->connection_info.version = request.header.spdm_version <<
243-
SPDM_VERSION_NUMBER_SHIFT_BIT;
244-
spdm_context->connection_info.connection_state =
245-
LIBSPDM_CONNECTION_STATE_NEGOTIATED;
246-
spdm_context->local_context.is_requester = true;
247-
248-
status = libspdm_register_vendor_callback_func(spdm_context,
249-
libspdm_vendor_response_func_err_test);
250-
assert_int_equal(status, LIBSPDM_STATUS_SUCCESS);
251-
252-
request.standard_id = 6;
253-
request.vendor_id_len = 2;
254-
request.vendor_id[0] = 0xAA;
255-
request.vendor_id[1] = 0xAA;
256-
request.data_len = sizeof(request.data);
257-
libspdm_set_mem(request.data, sizeof(request.data), 0xAA);
258-
259-
response_len = sizeof(response);
260-
261-
/* copy header of request structure to buffer */
262-
libspdm_copy_mem(request_buffer, 255, &request,
263-
sizeof(request.header) + 3 + request.vendor_id_len);
264-
/* copy the request data to the correct offset in the request_buffer */
265-
libspdm_copy_mem(request_buffer + sizeof(request.header) + 3 + request.vendor_id_len,
266-
request.data_len + 2, &request.data_len, request.data_len + 2);
267-
268-
/* requires correctly encoded spdm vendor request message */
269-
status = libspdm_get_vendor_defined_response(spdm_context, sizeof(request),
270-
request_buffer, &response_len, NULL);
271-
272-
assert_int_equal(status, LIBSPDM_STATUS_INVALID_PARAMETER);
273-
assert_int_equal(
274-
spdm_context->connection_info.version >> SPDM_VERSION_NUMBER_SHIFT_BIT,
275-
SPDM_MESSAGE_VERSION_10);
276-
277-
response.data_len = (uint16_t)response_len;
278-
}
279-
280219
libspdm_test_context_t m_libspdm_requester_vendor_cmds_err_test_context = {
281220
LIBSPDM_TEST_CONTEXT_VERSION,
282221
true,
@@ -288,7 +227,6 @@ int libspdm_requester_vendor_cmds_error_test_main(void)
288227
{
289228
const struct CMUnitTest spdm_requester_vendor_cmds_tests[] = {
290229
cmocka_unit_test(libspdm_test_requester_vendor_cmds_err_case1),
291-
cmocka_unit_test(libspdm_test_requester_vendor_cmds_err_case2)
292230
};
293231

294232
libspdm_setup_test_context(&m_libspdm_requester_vendor_cmds_err_test_context);

unit_test/test_spdm_requester/test_spdm_requester.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,11 @@ int libspdm_requester_get_event_types_test_main(void);
7373
int libspdm_requester_get_event_types_error_test_main(void);
7474
#endif /* LIBSPDM_EVENT_RECIPIENT_SUPPORT */
7575

76+
#if LIBSPDM_ENABLE_VENDOR_DEFINED_MESSAGES
77+
int libspdm_requester_vendor_cmds_test_main(void);
78+
int libspdm_requester_vendor_cmds_error_test_main(void);
79+
#endif /* LIBSPDM_ENABLE_VENDOR_DEFINED_MESSAGES */
80+
7681
int main(void)
7782
{
7883
int return_value = 0;
@@ -217,5 +222,14 @@ int main(void)
217222
}
218223
#endif /* LIBSPDM_EVENT_RECIPIENT_SUPPORT */
219224

225+
#if LIBSPDM_ENABLE_VENDOR_DEFINED_MESSAGES
226+
if (libspdm_requester_vendor_cmds_test_main() != 0) {
227+
return_value = 1;
228+
}
229+
if (libspdm_requester_vendor_cmds_error_test_main() != 0) {
230+
return_value = 1;
231+
}
232+
#endif /* LIBSPDM_ENABLE_VENDOR_DEFINED_MESSAGES */
233+
220234
return return_value;
221235
}

unit_test/test_spdm_vendor_cmds/vendor_cmds.c renamed to unit_test/test_spdm_requester/vendor_request.c

Lines changed: 2 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/**
2-
* Copyright 2023 DMTF. All rights reserved.
2+
* Copyright Notice:
3+
* Copyright 2023-2024 DMTF. All rights reserved.
34
* License: BSD 3-Clause License. For full text see link: https://github.com/DMTF/libspdm/blob/main/LICENSE.md
45
**/
56

@@ -102,8 +103,6 @@ static libspdm_return_t libspdm_requester_vendor_cmds_test_send_message(
102103
m_libspdm_local_buffer_size += request_size;
103104
}
104105
return LIBSPDM_STATUS_SUCCESS;
105-
case 0x2:
106-
return LIBSPDM_STATUS_SUCCESS;
107106
default:
108107
return LIBSPDM_STATUS_SEND_FAIL;
109108
}
@@ -220,80 +219,6 @@ static void libspdm_test_requester_vendor_cmds_case1(void **state)
220219
printf("case 1 %d\n", response.data[0]);
221220
}
222221

223-
/**
224-
* Test 2: Sending a vendor defined request using the internal response handler
225-
* Expected behavior: client returns a status of LIBSPDM_STATUS_SUCCESS and expected response
226-
**/
227-
static void libspdm_test_requester_vendor_cmds_case2(void **state)
228-
{
229-
libspdm_return_t status;
230-
libspdm_test_context_t *spdm_test_context;
231-
libspdm_context_t *spdm_context;
232-
uint8_t request_buffer[255] = {0};
233-
uint8_t response_buffer[255] = {0};
234-
libspdm_vendor_request_test request = {0};
235-
libspdm_vendor_response_test response = {0};
236-
size_t response_len = 0;
237-
response.vendor_id_len = sizeof(response.vendor_id);
238-
response.data_len = sizeof(response.data);
239-
240-
spdm_test_context = *state;
241-
spdm_context = spdm_test_context->spdm_context;
242-
spdm_test_context->case_id = 0x1;
243-
spdm_context->connection_info.algorithm.base_hash_algo =
244-
SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SHA_256;
245-
request.header.spdm_version = SPDM_MESSAGE_VERSION_10;
246-
spdm_context->connection_info.version = request.header.spdm_version <<
247-
SPDM_VERSION_NUMBER_SHIFT_BIT;
248-
spdm_context->connection_info.connection_state =
249-
LIBSPDM_CONNECTION_STATE_NEGOTIATED;
250-
spdm_context->local_context.is_requester = true;
251-
252-
status = libspdm_register_vendor_get_id_callback_func(spdm_context,
253-
libspdm_vendor_get_id_func_test);
254-
assert_int_equal(status, LIBSPDM_STATUS_SUCCESS);
255-
status = libspdm_register_vendor_callback_func(spdm_context,
256-
libspdm_vendor_response_func_test);
257-
assert_int_equal(status, LIBSPDM_STATUS_SUCCESS);
258-
259-
request.standard_id = 6;
260-
request.vendor_id_len = 2;
261-
request.vendor_id[0] = 0xAA;
262-
request.vendor_id[1] = 0xAA;
263-
request.data_len = sizeof(request.data);
264-
libspdm_set_mem(request.data, sizeof(request.data), 0xAA);
265-
266-
response_len = sizeof(response);
267-
268-
/* copy header of request structure to buffer */
269-
libspdm_copy_mem(request_buffer, 255, &request,
270-
sizeof(request.header) + 3 + request.vendor_id_len);
271-
/* copy the request data to the correct offset in the request_buffer */
272-
libspdm_copy_mem(request_buffer + sizeof(request.header) + 3 + request.vendor_id_len,
273-
request.data_len + 2, &request.data_len, request.data_len + 2);
274-
275-
/* requires correctly encoded spdm vendor request message */
276-
status = libspdm_get_vendor_defined_response(spdm_context, sizeof(request),
277-
request_buffer, &response_len, response_buffer);
278-
279-
/* copy to response data structure in the same way as for request */
280-
response.vendor_id_len = response_buffer[sizeof(response.header) + 2];
281-
response.data_len =
282-
*((uint16_t*)(response_buffer + sizeof(response.header) + 3 + response.vendor_id_len));
283-
/* copy header of response structure from buffer */
284-
libspdm_copy_mem(&response, sizeof(response), response_buffer,
285-
sizeof(response.header) + 3 + response.vendor_id_len);
286-
/* copy the response data from the correct offset in the response_buffer */
287-
libspdm_copy_mem(&response.data, response.data_len,
288-
response_buffer + sizeof(response.header) + 3 + response.vendor_id_len + 2,
289-
response.data_len);
290-
291-
assert_int_equal(status, LIBSPDM_STATUS_SUCCESS);
292-
assert_int_equal(
293-
spdm_context->connection_info.version >> SPDM_VERSION_NUMBER_SHIFT_BIT,
294-
SPDM_MESSAGE_VERSION_10);
295-
}
296-
297222
libspdm_test_context_t m_libspdm_requester_vendor_cmds_test_context = {
298223
LIBSPDM_TEST_CONTEXT_VERSION,
299224
true,
@@ -305,7 +230,6 @@ int libspdm_requester_vendor_cmds_test_main(void)
305230
{
306231
const struct CMUnitTest spdm_requester_vendor_cmds_tests[] = {
307232
cmocka_unit_test(libspdm_test_requester_vendor_cmds_case1),
308-
cmocka_unit_test(libspdm_test_requester_vendor_cmds_case2)
309233
};
310234

311235
libspdm_setup_test_context(&m_libspdm_requester_vendor_cmds_test_context);
@@ -315,5 +239,4 @@ int libspdm_requester_vendor_cmds_test_main(void)
315239
libspdm_unit_test_group_teardown);
316240
}
317241

318-
319242
#endif /* LIBSPDM_ENABLE_VENDOR_DEFINED_MESSAGES */

unit_test/test_spdm_responder/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,15 @@ SET(src_test_spdm_responder
3333
heartbeat.c
3434
key_update.c
3535
end_session.c
36+
vendor_response.c
3637
encap_get_certificate.c
3738
encap_get_digests.c
3839
encap_key_update.c
3940
encap_challenge.c
4041
encap_response.c
4142
supported_event_types.c
4243
error_test/supported_event_types_err.c
44+
error_test/vendor_response_err.c
4345
set_certificate_rsp.c
4446
csr.c
4547
receive_send.c

0 commit comments

Comments
 (0)