Skip to content

Commit 41bcdea

Browse files
Remove OpaqueDataFmt1 check from VCA
Fix #3052. Signed-off-by: Steven Bellock <[email protected]>
1 parent e64f2e4 commit 41bcdea

File tree

3 files changed

+20
-53
lines changed

3 files changed

+20
-53
lines changed

library/spdm_requester_lib/libspdm_req_negotiate_algorithms.c

+14-22
Original file line numberDiff line numberDiff line change
@@ -575,28 +575,20 @@ static libspdm_return_t libspdm_try_negotiate_algorithms(libspdm_context_t *spdm
575575
status = LIBSPDM_STATUS_NEGOTIATION_FAIL;
576576
goto receive_done;
577577
}
578-
if (spdm_response->header.spdm_version >= SPDM_MESSAGE_VERSION_12) {
579-
if ((spdm_context->connection_info.algorithm.other_params_support &
580-
SPDM_ALGORITHMS_OPAQUE_DATA_FORMAT_MASK) !=
581-
SPDM_ALGORITHMS_OPAQUE_DATA_FORMAT_1) {
582-
status = LIBSPDM_STATUS_NEGOTIATION_FAIL;
583-
goto receive_done;
584-
}
585-
if (spdm_response->header.spdm_version >= SPDM_MESSAGE_VERSION_13) {
586-
if (libspdm_is_capabilities_flag_supported(
587-
spdm_context, true, 0,
588-
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEL_CAP) &&
589-
(spdm_request->mel_specification != 0)) {
590-
if (spdm_context->connection_info.algorithm.mel_spec !=
591-
SPDM_MEL_SPECIFICATION_DMTF) {
592-
status = LIBSPDM_STATUS_INVALID_MSG_FIELD;
593-
goto receive_done;
594-
}
595-
} else {
596-
if (spdm_context->connection_info.algorithm.mel_spec != 0) {
597-
status = LIBSPDM_STATUS_INVALID_MSG_FIELD;
598-
goto receive_done;
599-
}
578+
if (spdm_response->header.spdm_version >= SPDM_MESSAGE_VERSION_13) {
579+
if (libspdm_is_capabilities_flag_supported(
580+
spdm_context, true, 0,
581+
SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEL_CAP) &&
582+
(spdm_request->mel_specification != 0)) {
583+
if (spdm_context->connection_info.algorithm.mel_spec !=
584+
SPDM_MEL_SPECIFICATION_DMTF) {
585+
status = LIBSPDM_STATUS_INVALID_MSG_FIELD;
586+
goto receive_done;
587+
}
588+
} else {
589+
if (spdm_context->connection_info.algorithm.mel_spec != 0) {
590+
status = LIBSPDM_STATUS_INVALID_MSG_FIELD;
591+
goto receive_done;
600592
}
601593
}
602594
}

library/spdm_responder_lib/libspdm_rsp_algorithms.c

-10
Original file line numberDiff line numberDiff line change
@@ -809,16 +809,6 @@ libspdm_return_t libspdm_get_response_algorithms(libspdm_context_t *spdm_context
809809
SPDM_ERROR_CODE_INVALID_REQUEST, 0,
810810
response_size, response);
811811
}
812-
if (spdm_response->header.spdm_version >= SPDM_MESSAGE_VERSION_12) {
813-
if ((spdm_context->connection_info.algorithm.other_params_support &
814-
SPDM_ALGORITHMS_OPAQUE_DATA_FORMAT_MASK) !=
815-
SPDM_ALGORITHMS_OPAQUE_DATA_FORMAT_1) {
816-
return libspdm_generate_error_response(
817-
spdm_context,
818-
SPDM_ERROR_CODE_INVALID_REQUEST, 0,
819-
response_size, response);
820-
}
821-
}
822812
}
823813

824814
if (spdm_request->header.spdm_version >= SPDM_MESSAGE_VERSION_13) {

unit_test/test_spdm_responder/algorithms.c

+6-21
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/**
22
* Copyright Notice:
3-
* Copyright 2021-2022 DMTF. All rights reserved.
3+
* Copyright 2021-2025 DMTF. All rights reserved.
44
* License: BSD 3-Clause License. For full text see link: https://github.com/DMTF/libspdm/blob/main/LICENSE.md
55
**/
66

@@ -2166,24 +2166,7 @@ void libspdm_test_responder_algorithms_case23(void **state)
21662166
spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_PSK_CAP;
21672167
spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_PSK_CAP;
21682168

2169-
/* Sub Case 1: other_params_support set Illegal OpaqueDataFmt */
2170-
m_libspdm_negotiate_algorithm_request18.spdm_request_version10.other_params_support = 0x04;
2171-
libspdm_reset_message_a(spdm_context);
2172-
2173-
response_size = sizeof(response);
2174-
status = libspdm_get_response_algorithms (spdm_context,
2175-
m_libspdm_negotiate_algorithm_request18_size,
2176-
&m_libspdm_negotiate_algorithm_request18,
2177-
&response_size,
2178-
response);
2179-
assert_int_equal (status, LIBSPDM_STATUS_SUCCESS);
2180-
assert_int_equal (response_size, sizeof(spdm_error_response_t));
2181-
spdm_response = (void *)response;
2182-
assert_int_equal (spdm_response->header.request_response_code, SPDM_ERROR);
2183-
assert_int_equal (spdm_response->header.param1, SPDM_ERROR_CODE_INVALID_REQUEST);
2184-
assert_int_equal (spdm_response->header.param2, 0);
2185-
2186-
/* Sub Case 2: other_params_support set OpaqueDataFmt1 */
2169+
/* Sub Case 1: other_params_support set OpaqueDataFmt1 */
21872170
m_libspdm_negotiate_algorithm_request18.spdm_request_version10.other_params_support =
21882171
SPDM_ALGORITHMS_OPAQUE_DATA_FORMAT_1;
21892172
spdm_context->local_context.algorithm.other_params_support =
@@ -2208,7 +2191,8 @@ void libspdm_test_responder_algorithms_case23(void **state)
22082191
assert_int_equal(spdm_context->connection_info.algorithm.other_params_support,
22092192
SPDM_ALGORITHMS_OPAQUE_DATA_FORMAT_1);
22102193

2211-
/* Sub Case 3: Populate reserved field for version 1.2, field values marked as Reserved shall be written as zero ( 0 )*/
2194+
/* Sub Case 2: Populate reserved field for version 1.2.
2195+
* Field values marked as Reserved shall be written as zero (0). */
22122196
spdm_context->local_context.algorithm.other_params_support =
22132197
SPDM_ALGORITHMS_OPAQUE_DATA_FORMAT_1 |
22142198
SPDM_ALGORITHMS_MULTI_KEY_CONN;
@@ -2231,7 +2215,8 @@ void libspdm_test_responder_algorithms_case23(void **state)
22312215
assert_int_equal(spdm_context->connection_info.algorithm.other_params_support,
22322216
SPDM_ALGORITHMS_OPAQUE_DATA_FORMAT_1);
22332217

2234-
/* Sub Case 4: OpaqueDataFmt. Supports both SPDM_ALGORITHMS_OPAQUE_DATA_FORMAT_0 and SPDM_ALGORITHMS_OPAQUE_DATA_FORMAT_1*/
2218+
/* Sub Case 3: OpaqueDataFmt. Supports both SPDM_ALGORITHMS_OPAQUE_DATA_FORMAT_0 and
2219+
* SPDM_ALGORITHMS_OPAQUE_DATA_FORMAT_1. */
22352220
m_libspdm_negotiate_algorithm_request18.spdm_request_version10.other_params_support =
22362221
SPDM_ALGORITHMS_OPAQUE_DATA_FORMAT_0 |
22372222
SPDM_ALGORITHMS_OPAQUE_DATA_FORMAT_1;

0 commit comments

Comments
 (0)