1
1
/**
2
2
* Copyright Notice:
3
- * Copyright 2021-2022 DMTF. All rights reserved.
3
+ * Copyright 2021-2025 DMTF. All rights reserved.
4
4
* License: BSD 3-Clause License. For full text see link: https://github.com/DMTF/libspdm/blob/main/LICENSE.md
5
5
**/
6
6
@@ -378,6 +378,51 @@ void libspdm_test_get_response_encapsulated_request_case6(void **State)
378
378
free (data );
379
379
}
380
380
381
+ void libspdm_test_get_response_encapsulated_request_case7 (void * * State )
382
+ {
383
+ libspdm_return_t status ;
384
+ libspdm_test_context_t * spdm_test_context ;
385
+ spdm_error_response_t * spdm_response_requester ;
386
+ libspdm_context_t * spdm_context ;
387
+ size_t response_size ;
388
+ uint8_t response [LIBSPDM_MAX_SPDM_MSG_SIZE ];
389
+ uint8_t m_local_certificate_chain [LIBSPDM_MAX_CERT_CHAIN_SIZE ];
390
+
391
+ spdm_test_context = * State ;
392
+ spdm_context = spdm_test_context -> spdm_context ;
393
+ spdm_test_context -> case_id = 0x7 ;
394
+
395
+ spdm_context -> connection_info .version = SPDM_MESSAGE_VERSION_13 <<
396
+ SPDM_VERSION_NUMBER_SHIFT_BIT ;
397
+ spdm_context -> response_state = LIBSPDM_RESPONSE_STATE_NORMAL ;
398
+ spdm_context -> connection_info .capability .flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCAP_CAP ;
399
+ spdm_context -> local_context .capability .flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ENCAP_CAP ;
400
+
401
+ spdm_context -> encap_context .current_request_op_code = 0 ;
402
+ spdm_context -> encap_context .request_id = 0 ;
403
+ spdm_context -> connection_info .connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED ;
404
+ spdm_context -> local_context .capability .flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP ;
405
+ spdm_context -> connection_info .algorithm .base_hash_algo = m_libspdm_use_hash_algo ;
406
+ spdm_context -> local_context .local_cert_chain_provision [0 ] = m_local_certificate_chain ;
407
+ spdm_context -> local_context .local_cert_chain_provision_size [0 ] =
408
+ sizeof (m_local_certificate_chain );
409
+ libspdm_set_mem (m_local_certificate_chain , sizeof (m_local_certificate_chain ), 0xFF );
410
+
411
+ response_size = sizeof (response );
412
+ status = libspdm_get_response_encapsulated_request (spdm_context ,
413
+ m_libspdm_encapsulated_request_t1_size ,
414
+ & m_libspdm_encapsulated_request_t1 ,
415
+ & response_size ,
416
+ response );
417
+
418
+ assert_int_equal (status , LIBSPDM_STATUS_SUCCESS );
419
+ assert_int_equal (response_size , sizeof (spdm_error_response_t ));
420
+ spdm_response_requester = (void * )response ;
421
+ assert_int_equal (spdm_response_requester -> header .request_response_code , SPDM_ERROR );
422
+ assert_int_equal (spdm_response_requester -> header .param1 , SPDM_ERROR_CODE_NO_PENDING_REQUESTS );
423
+ assert_int_equal (spdm_response_requester -> header .param2 , 0 );
424
+ }
425
+
381
426
void libspdm_test_get_response_encapsulated_response_ack_case1 (void * * State )
382
427
{
383
428
libspdm_return_t status ;
@@ -1047,7 +1092,7 @@ int libspdm_responder_encapsulated_response_test_main(void)
1047
1092
cmocka_unit_test (libspdm_test_get_response_encapsulated_request_case1 ),
1048
1093
/*Success Case current_request_op_code: SPDM_GET_CERTIFICATE */
1049
1094
cmocka_unit_test (libspdm_test_get_response_encapsulated_request_case2 ),
1050
- /*response_state : LIBSPDM_RESPONSE_STATE_NORMAL */
1095
+ /*response_state : LIBSPDM_RESPONSE_STATE_NORMAL with UnexpectedRequest error. */
1051
1096
cmocka_unit_test (libspdm_test_get_response_encapsulated_request_case3 ),
1052
1097
/*response_state : LIBSPDM_RESPONSE_STATE_NEED_RESYNC */
1053
1098
cmocka_unit_test (libspdm_test_get_response_encapsulated_request_case4 ),
@@ -1058,6 +1103,8 @@ int libspdm_responder_encapsulated_response_test_main(void)
1058
1103
#endif
1059
1104
/* Success Case current_request_op_code: SPDM_KEY_UPDATE */
1060
1105
cmocka_unit_test (libspdm_test_get_response_encapsulated_request_case6 ),
1106
+ /*response_state : LIBSPDM_RESPONSE_STATE_NORMAL with NoPendingRequests error. */
1107
+ cmocka_unit_test (libspdm_test_get_response_encapsulated_request_case7 ),
1061
1108
#if (LIBSPDM_ENABLE_CAPABILITY_MUT_AUTH_CAP ) && (LIBSPDM_SEND_GET_CERTIFICATE_SUPPORT )
1062
1109
/*Success Case current_request_op_code: SPDM_GET_DIGESTS*/
1063
1110
cmocka_unit_test (libspdm_test_get_response_encapsulated_response_ack_case1 ),
0 commit comments