|
48 | 48 | SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ALIAS_CERT_CAP | \
|
49 | 49 | SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHAL_CAP)
|
50 | 50 |
|
| 51 | + #define LIBSPDM_DEFAULT_CAPABILITY_RESPONSE_FLAG_VERSION_13 \ |
| 52 | + (LIBSPDM_DEFAULT_CAPABILITY_RESPONSE_FLAG_VERSION_11 | \ |
| 53 | + LIBSPDM_DEFAULT_CAPABILITY_RESPONSE_FLAG_VERSION_12 | \ |
| 54 | + SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_EP_INFO_CAP_NO_SIG | \ |
| 55 | + SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEL_CAP | \ |
| 56 | + SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_EVENT_CAP | \ |
| 57 | + SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MULTI_KEY_CAP_ONLY | \ |
| 58 | + SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_GET_KEY_PAIR_INFO_CAP) |
| 59 | + |
51 | 60 | static size_t m_libspdm_local_buffer_size;
|
52 | 61 | static uint8_t m_libspdm_local_buffer[LIBSPDM_MAX_MESSAGE_VCA_BUFFER_SIZE];
|
53 | 62 |
|
@@ -134,6 +143,8 @@ static libspdm_return_t libspdm_requester_get_capabilities_test_send_message(
|
134 | 143 | return LIBSPDM_STATUS_SUCCESS;
|
135 | 144 | case 0x22:
|
136 | 145 | return LIBSPDM_STATUS_SUCCESS;
|
| 146 | + case 0x23: |
| 147 | + return LIBSPDM_STATUS_SUCCESS; |
137 | 148 | default:
|
138 | 149 | return LIBSPDM_STATUS_SEND_FAIL;
|
139 | 150 | }
|
@@ -973,6 +984,30 @@ static libspdm_return_t libspdm_requester_get_capabilities_test_receive_message(
|
973 | 984 | spdm_response->data_transfer_size = LIBSPDM_DATA_TRANSFER_SIZE;
|
974 | 985 | spdm_response->max_spdm_msg_size = LIBSPDM_MAX_SPDM_MSG_SIZE;
|
975 | 986 |
|
| 987 | + libspdm_transport_test_encode_message(spdm_context, NULL, false, |
| 988 | + false, spdm_response_size, |
| 989 | + spdm_response, |
| 990 | + response_size, response); |
| 991 | + } |
| 992 | + return LIBSPDM_STATUS_SUCCESS; |
| 993 | + case 0x23: { |
| 994 | + spdm_capabilities_response_t *spdm_response; |
| 995 | + size_t spdm_response_size; |
| 996 | + size_t transport_header_size; |
| 997 | + |
| 998 | + spdm_response_size = sizeof(spdm_capabilities_response_t); |
| 999 | + transport_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE; |
| 1000 | + spdm_response = (void *)((uint8_t *)*response + transport_header_size); |
| 1001 | + |
| 1002 | + libspdm_zero_mem(spdm_response, spdm_response_size); |
| 1003 | + spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_13; |
| 1004 | + spdm_response->header.request_response_code = SPDM_CAPABILITIES; |
| 1005 | + spdm_response->header.param1 = 0; |
| 1006 | + spdm_response->header.param2 = 0; |
| 1007 | + spdm_response->ct_exponent = 0; |
| 1008 | + spdm_response->flags = LIBSPDM_DEFAULT_CAPABILITY_RESPONSE_FLAG_VERSION_13; |
| 1009 | + spdm_response->data_transfer_size = LIBSPDM_DATA_TRANSFER_SIZE; |
| 1010 | + spdm_response->max_spdm_msg_size = LIBSPDM_MAX_SPDM_MSG_SIZE; |
976 | 1011 | libspdm_transport_test_encode_message(spdm_context, NULL, false,
|
977 | 1012 | false, spdm_response_size,
|
978 | 1013 | spdm_response,
|
@@ -1357,6 +1392,31 @@ static void libspdm_test_requester_get_capabilities_case33(void **state)
|
1357 | 1392 | * }
|
1358 | 1393 | */
|
1359 | 1394 |
|
| 1395 | +static void libspdm_test_requester_get_capabilities_case35(void **state) |
| 1396 | +{ |
| 1397 | + libspdm_return_t status; |
| 1398 | + libspdm_test_context_t *spdm_test_context; |
| 1399 | + libspdm_context_t *spdm_context; |
| 1400 | + |
| 1401 | + spdm_test_context = *state; |
| 1402 | + spdm_context = spdm_test_context->spdm_context; |
| 1403 | + spdm_test_context->case_id = 0x23; |
| 1404 | + spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_13 << |
| 1405 | + SPDM_VERSION_NUMBER_SHIFT_BIT; |
| 1406 | + spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_AFTER_VERSION; |
| 1407 | + spdm_context->local_context.capability.ct_exponent = 0; |
| 1408 | + |
| 1409 | + status = libspdm_get_capabilities(spdm_context); |
| 1410 | + assert_int_equal(status, LIBSPDM_STATUS_SUCCESS); |
| 1411 | + assert_int_equal(spdm_context->connection_info.capability.max_spdm_msg_size, |
| 1412 | + LIBSPDM_MAX_SPDM_MSG_SIZE); |
| 1413 | + assert_int_equal(spdm_context->connection_info.capability.data_transfer_size, |
| 1414 | + LIBSPDM_DATA_TRANSFER_SIZE); |
| 1415 | + assert_int_equal(spdm_context->connection_info.capability.ct_exponent, 0); |
| 1416 | + assert_int_equal(spdm_context->connection_info.capability.flags, |
| 1417 | + LIBSPDM_DEFAULT_CAPABILITY_RESPONSE_FLAG_VERSION_13); |
| 1418 | +} |
| 1419 | + |
1360 | 1420 | static libspdm_test_context_t m_libspdm_requester_get_capabilities_test_context = {
|
1361 | 1421 | LIBSPDM_TEST_CONTEXT_VERSION,
|
1362 | 1422 | true,
|
@@ -1401,6 +1461,7 @@ int libspdm_requester_get_capabilities_test_main(void)
|
1401 | 1461 | cmocka_unit_test(libspdm_test_requester_get_capabilities_case32),
|
1402 | 1462 | cmocka_unit_test(libspdm_test_requester_get_capabilities_case33),
|
1403 | 1463 | /* cmocka_unit_test(libspdm_test_requester_get_capabilities_case34), */
|
| 1464 | + cmocka_unit_test(libspdm_test_requester_get_capabilities_case35), |
1404 | 1465 | };
|
1405 | 1466 |
|
1406 | 1467 | libspdm_setup_test_context(
|
|
0 commit comments