@@ -86,6 +86,10 @@ libspdm_return_t libspdm_requester_encap_request_test_send_message(void *spdm_co
86
86
}
87
87
return LIBSPDM_STATUS_SUCCESS ;
88
88
}
89
+ case 0xb :
90
+ return LIBSPDM_STATUS_SUCCESS ;
91
+ case 0xc :
92
+ return LIBSPDM_STATUS_SUCCESS ;
89
93
default :
90
94
return LIBSPDM_STATUS_SEND_FAIL ;
91
95
}
@@ -568,6 +572,44 @@ libspdm_return_t libspdm_requester_encap_request_test_receive_message(
568
572
}
569
573
return LIBSPDM_STATUS_SUCCESS ;
570
574
575
+ case 0xB :
576
+ {
577
+ spdm_error_response_t * spdm_response ;
578
+
579
+ temp_buf_size = sizeof (spdm_error_response_t );
580
+ libspdm_zero_mem (temp_buf , LIBSPDM_RECEIVER_BUFFER_SIZE );
581
+ temp_buf_ptr = temp_buf + sizeof (libspdm_test_message_header_t );
582
+ spdm_response = (void * ) temp_buf_ptr ;
583
+ spdm_response -> header .spdm_version = SPDM_MESSAGE_VERSION_11 ;
584
+ spdm_response -> header .request_response_code = SPDM_ERROR ;
585
+ spdm_response -> header .param1 = SPDM_ERROR_CODE_UNEXPECTED_REQUEST ;
586
+ spdm_response -> header .param2 = 0 ;
587
+
588
+ libspdm_transport_test_encode_message (spdm_context , NULL , false, false,
589
+ temp_buf_size , temp_buf_ptr ,
590
+ response_size , response );
591
+ }
592
+ return LIBSPDM_STATUS_SUCCESS ;
593
+
594
+ case 0xC :
595
+ {
596
+ spdm_error_response_t * spdm_response ;
597
+
598
+ temp_buf_size = sizeof (spdm_error_response_t );
599
+ libspdm_zero_mem (temp_buf , LIBSPDM_RECEIVER_BUFFER_SIZE );
600
+ temp_buf_ptr = temp_buf + sizeof (libspdm_test_message_header_t );
601
+ spdm_response = (void * ) temp_buf_ptr ;
602
+ spdm_response -> header .spdm_version = SPDM_MESSAGE_VERSION_13 ;
603
+ spdm_response -> header .request_response_code = SPDM_ERROR ;
604
+ spdm_response -> header .param1 = SPDM_ERROR_CODE_NO_PENDING_REQUESTS ;
605
+ spdm_response -> header .param2 = 0 ;
606
+
607
+ libspdm_transport_test_encode_message (spdm_context , NULL , false, false,
608
+ temp_buf_size , temp_buf_ptr ,
609
+ response_size , response );
610
+ }
611
+ return LIBSPDM_STATUS_SUCCESS ;
612
+
571
613
default :
572
614
return LIBSPDM_STATUS_RECEIVE_FAIL ;
573
615
}
@@ -977,6 +1019,62 @@ void libspdm_test_requester_encap_request_case10(void **State)
977
1019
assert_int_equal (status , LIBSPDM_STATUS_SUCCESS );
978
1020
}
979
1021
1022
+ /**
1023
+ * Test 11: In a non-mutual-authentication context, Requester sends GET_ENCAPSULATED_REQUEST and
1024
+ * Responder replies with UnexpectedRequest.
1025
+ * Expected Behavior: return LIBSPDM_STATUS_SUCCESS as Responder did not have a pending request for
1026
+ * the Requester.
1027
+ **/
1028
+ void libspdm_test_requester_encap_request_case11 (void * * State )
1029
+ {
1030
+ libspdm_return_t status ;
1031
+ libspdm_test_context_t * spdm_test_context ;
1032
+ libspdm_context_t * spdm_context ;
1033
+
1034
+ spdm_test_context = * State ;
1035
+ spdm_context = spdm_test_context -> spdm_context ;
1036
+ spdm_test_context -> case_id = 0xB ;
1037
+
1038
+ spdm_context -> connection_info .version = SPDM_MESSAGE_VERSION_11 <<
1039
+ SPDM_VERSION_NUMBER_SHIFT_BIT ;
1040
+ spdm_context -> connection_info .connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED ;
1041
+ spdm_context -> local_context .capability .flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCAP_CAP ;
1042
+ spdm_context -> connection_info .capability .flags |=
1043
+ SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ENCAP_CAP ;
1044
+
1045
+ libspdm_register_get_encap_response_func (spdm_context , NULL );
1046
+ status = libspdm_encapsulated_request (spdm_context , NULL , 0 , NULL );
1047
+ assert_int_equal (status , LIBSPDM_STATUS_SUCCESS );
1048
+ }
1049
+
1050
+ /**
1051
+ * Test 12: In a non-mutual-authentication context, Requester sends GET_ENCAPSULATED_REQUEST and
1052
+ * Responder replies with NoPendingRequests.
1053
+ * Expected Behavior: return LIBSPDM_STATUS_SUCCESS as Responder did not have a pending request for
1054
+ * the Requester.
1055
+ **/
1056
+ void libspdm_test_requester_encap_request_case12 (void * * State )
1057
+ {
1058
+ libspdm_return_t status ;
1059
+ libspdm_test_context_t * spdm_test_context ;
1060
+ libspdm_context_t * spdm_context ;
1061
+
1062
+ spdm_test_context = * State ;
1063
+ spdm_context = spdm_test_context -> spdm_context ;
1064
+ spdm_test_context -> case_id = 0xC ;
1065
+
1066
+ spdm_context -> connection_info .version = SPDM_MESSAGE_VERSION_13 <<
1067
+ SPDM_VERSION_NUMBER_SHIFT_BIT ;
1068
+ spdm_context -> connection_info .connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED ;
1069
+ spdm_context -> local_context .capability .flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCAP_CAP ;
1070
+ spdm_context -> connection_info .capability .flags |=
1071
+ SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ENCAP_CAP ;
1072
+
1073
+ libspdm_register_get_encap_response_func (spdm_context , NULL );
1074
+ status = libspdm_encapsulated_request (spdm_context , NULL , 0 , NULL );
1075
+ assert_int_equal (status , LIBSPDM_STATUS_SUCCESS );
1076
+ }
1077
+
980
1078
int libspdm_requester_encap_request_test_main (void )
981
1079
{
982
1080
const struct CMUnitTest spdm_requester_encap_request_tests [] = {
@@ -999,6 +1097,8 @@ int libspdm_requester_encap_request_test_main(void)
999
1097
cmocka_unit_test (libspdm_test_requester_encap_request_case9 ),
1000
1098
/*Error response: GET_ENCAPSULATED_REQUEST message is encapsulated */
1001
1099
cmocka_unit_test (libspdm_test_requester_encap_request_case10 ),
1100
+ cmocka_unit_test (libspdm_test_requester_encap_request_case11 ),
1101
+ cmocka_unit_test (libspdm_test_requester_encap_request_case12 ),
1002
1102
};
1003
1103
1004
1104
libspdm_test_context_t test_context = {
0 commit comments