diff --git a/library/spdm_responder_lib/libspdm_rsp_psk_exchange.c b/library/spdm_responder_lib/libspdm_rsp_psk_exchange.c index 74f8d9fa43a..ed87b930118 100644 --- a/library/spdm_responder_lib/libspdm_rsp_psk_exchange.c +++ b/library/spdm_responder_lib/libspdm_rsp_psk_exchange.c @@ -196,6 +196,13 @@ libspdm_return_t libspdm_get_response_psk_exchange(libspdm_context_t *spdm_conte measurement_summary_hash_size = libspdm_get_measurement_summary_hash_size( spdm_context, false, spdm_request->header.param1); + if ((measurement_summary_hash_size == 0) && + (spdm_request->header.param1 != SPDM_PSK_EXCHANGE_REQUEST_NO_MEASUREMENT_SUMMARY_HASH)) { + return libspdm_generate_error_response(spdm_context, + SPDM_ERROR_CODE_INVALID_REQUEST, + 0, response_size, response); + } + hmac_size = libspdm_get_hash_size(spdm_context->connection_info.algorithm.base_hash_algo); if (request_size < sizeof(spdm_psk_exchange_request_t)) { @@ -319,13 +326,6 @@ libspdm_return_t libspdm_get_response_psk_exchange(libspdm_context_t *spdm_conte result = true; } - if ((measurement_summary_hash_size == 0) && - (spdm_request->header.param2 != SPDM_PSK_EXCHANGE_REQUEST_NO_MEASUREMENT_SUMMARY_HASH)) { - libspdm_free_session_id(spdm_context, session_id); - return libspdm_generate_error_response(spdm_context, - SPDM_ERROR_CODE_INVALID_REQUEST, - 0, response_size, response); - } if (!result) { libspdm_free_session_id(spdm_context, session_id); return libspdm_generate_error_response(spdm_context, diff --git a/unit_test/test_spdm_responder/psk_exchange.c b/unit_test/test_spdm_responder/psk_exchange.c index d724662621f..b5bb6d80906 100644 --- a/unit_test/test_spdm_responder/psk_exchange.c +++ b/unit_test/test_spdm_responder/psk_exchange.c @@ -1237,7 +1237,7 @@ void libspdm_test_responder_psk_exchange_case12(void **state) spdm_response = (void *)response; assert_int_equal(spdm_response->header.request_response_code, SPDM_ERROR); - assert_int_equal(spdm_response->header.param1, SPDM_ERROR_CODE_UNSPECIFIED); + assert_int_equal(spdm_response->header.param1, SPDM_ERROR_CODE_INVALID_REQUEST);