Line data Source code
1 : /**
2 : * Copyright Notice:
3 : * Copyright 2021-2026 DMTF. All rights reserved.
4 : * License: BSD 3-Clause License. For full text see link: https://github.com/DMTF/libspdm/blob/main/LICENSE.md
5 : **/
6 :
7 : #include "spdm_unit_test.h"
8 : #include "internal/libspdm_responder_lib.h"
9 :
10 : int libspdm_rsp_version_test(void);
11 : int libspdm_rsp_capabilities_test(void);
12 : int libspdm_rsp_algorithms_test(void);
13 :
14 : #if LIBSPDM_ENABLE_CAPABILITY_CERT_CAP
15 : int libspdm_rsp_digests_test(void);
16 : int libspdm_rsp_certificate_test(void);
17 : #endif /* LIBSPDM_ENABLE_CAPABILITY_CERT_CAP*/
18 :
19 : #if LIBSPDM_ENABLE_CAPABILITY_CHAL_CAP
20 : int libspdm_rsp_challenge_auth_test(void);
21 : #endif /* LIBSPDM_ENABLE_CAPABILITY_CERT_CAP*/
22 :
23 : #if LIBSPDM_ENABLE_CAPABILITY_MEAS_CAP
24 : int libspdm_rsp_measurements_test(void);
25 : #endif /* LIBSPDM_ENABLE_CAPABILITY_MEAS_CAP*/
26 :
27 : #if LIBSPDM_ENABLE_CAPABILITY_ENDPOINT_INFO_CAP
28 : int libspdm_rsp_endpoint_info_test(void);
29 : int libspdm_rsp_endpoint_info_error_test(void);
30 : #endif /* LIBSPDM_ENABLE_CAPABILITY_ENDPOINT_INFO_CAP*/
31 :
32 : #if LIBSPDM_ENABLE_CAPABILITY_MEL_CAP
33 : int libspdm_rsp_measurement_extension_log_test(void);
34 : int libspdm_rsp_measurement_extension_log_error_test(void);
35 : #endif /* LIBSPDM_ENABLE_CAPABILITY_MEL_CAP*/
36 :
37 : #if LIBSPDM_ENABLE_CAPABILITY_GET_KEY_PAIR_INFO_CAP
38 : int libspdm_rsp_key_pair_info_test(void);
39 : int libspdm_rsp_key_pair_info_error_test(void);
40 : #endif /* LIBSPDM_ENABLE_CAPABILITY_GET_KEY_PAIR_INFO_CAP */
41 :
42 : #if LIBSPDM_ENABLE_CAPABILITY_SET_KEY_PAIR_INFO_CAP
43 : int libspdm_rsp_set_key_pair_info_ack_test(void);
44 : int libspdm_rsp_set_key_pair_info_ack_error_test(void);
45 : #endif /* LIBSPDM_ENABLE_CAPABILITY_SET_KEY_PAIR_INFO_CAP*/
46 :
47 : #if LIBSPDM_RESPOND_IF_READY_SUPPORT
48 : #if (LIBSPDM_ENABLE_CAPABILITY_CERT_CAP || LIBSPDM_ENABLE_CAPABILITY_CHAL_CAP || \
49 : LIBSPDM_ENABLE_CAPABILITY_MEAS_CAP || LIBSPDM_ENABLE_CAPABILITY_KEY_EX_CAP || \
50 : LIBSPDM_ENABLE_CAPABILITY_PSK_CAP)
51 : int libspdm_rsp_respond_if_ready_test (void);
52 : #endif /* LIBSPDM_ENABLE_CAPABILITY_*_CAP */
53 : #endif /* LIBSPDM_RESPOND_IF_READY_SUPPORT */
54 :
55 : #if LIBSPDM_ENABLE_CAPABILITY_KEY_EX_CAP
56 : int libspdm_rsp_key_exchange_rsp_test(void);
57 : #endif /* LIBSPDM_ENABLE_CAPABILITY_KEY_EX_CAP*/
58 :
59 : int libspdm_rsp_finish_test(void);
60 :
61 : #if LIBSPDM_ENABLE_CAPABILITY_PSK_CAP
62 : int libspdm_rsp_psk_exchange_rsp_test(void);
63 : int libspdm_rsp_psk_finish_rsp_test(void);
64 : #endif /* LIBSPDM_ENABLE_CAPABILITY_PSK_CAP */
65 :
66 : #if (LIBSPDM_ENABLE_CAPABILITY_KEY_EX_CAP) || (LIBSPDM_ENABLE_CAPABILITY_PSK_CAP)
67 : int libspdm_rsp_heartbeat_ack_test(void);
68 : int libspdm_rsp_key_update_ack_test(void);
69 : int libspdm_rsp_end_session_ack_test(void);
70 : #endif /* (LIBSPDM_ENABLE_CAPABILITY_KEY_EX_CAP) || (LIBSPDM_ENABLE_CAPABILITY_PSK_CAP) */
71 :
72 : #if LIBSPDM_ENABLE_CAPABILITY_ENCAP_CAP
73 : #if LIBSPDM_ENABLE_CAPABILITY_MUT_AUTH_CAP
74 : #if LIBSPDM_SEND_GET_CERTIFICATE_SUPPORT
75 : int spdm_rsp_encap_get_digests_test(void);
76 : int spdm_rsp_encap_get_certificate_test(void);
77 : #endif /* LIBSPDM_SEND_GET_CERTIFICATE_SUPPORT */
78 : #if LIBSPDM_SEND_CHALLENGE_SUPPORT
79 : int libspdm_rsp_encap_challenge_test(void);
80 : #endif /* LIBSPDM_SEND_CHALLENGE_SUPPORT */
81 : #endif /* LIBSPDM_ENABLE_CAPABILITY_MUT_AUTH_CAP */
82 : int libspdm_rsp_encapsulated_request_test(void);
83 : int libspdm_rsp_encap_key_update_test(void);
84 : #if LIBSPDM_SEND_GET_ENDPOINT_INFO_SUPPORT
85 : int libspdm_rsp_encap_get_endpoint_info_test(void);
86 : int libspdm_rsp_encap_get_endpoint_info_error_test(void);
87 : #endif /* LIBSPDM_SEND_GET_ENDPOINT_INFO_SUPPORT */
88 : #if LIBSPDM_ENABLE_CAPABILITY_EVENT_CAP
89 : int libspdm_rsp_encap_send_event_test(void);
90 : int libspdm_rsp_encap_send_event_error_test(void);
91 : #endif /* LIBSPDM_ENABLE_CAPABILITY_EVENT_CAP */
92 : #endif /* LIBSPDM_ENABLE_CAPABILITY_ENCAP_CAP*/
93 :
94 : int libspdm_rsp_set_certificate_rsp_test(void);
95 : int libspdm_rsp_csr_test(void);
96 :
97 : #if LIBSPDM_ENABLE_CAPABILITY_CHUNK_CAP
98 : int libspdm_rsp_chunk_response_test(void);
99 : int libspdm_rsp_receive_send_test(void);
100 : int libspdm_rsp_chunk_send_ack_test(void);
101 : #endif /* LIBSPDM_ENABLE_CAPABILITY_CHUNK_CAP */
102 :
103 : #if LIBSPDM_ENABLE_CAPABILITY_EVENT_CAP
104 : int libspdm_rsp_supported_event_types_test(void);
105 : int libspdm_rsp_supported_event_types_error_test(void);
106 : int libspdm_rsp_subscribe_event_types_ack_test(void);
107 : int libspdm_rsp_subscribe_event_types_ack_error_test(void);
108 : #endif /* LIBSPDM_ENABLE_CAPABILITY_EVENT_CAP */
109 :
110 : #if LIBSPDM_EVENT_RECIPIENT_SUPPORT
111 : int libspdm_rsp_event_ack_test(void);
112 : int libspdm_rsp_event_ack_error_test(void);
113 : #endif /* LIBSPDM_EVENT_RECIPIENT_SUPPORT */
114 :
115 : #if LIBSPDM_ENABLE_VENDOR_DEFINED_MESSAGES
116 : int libspdm_rsp_vendor_defined_response_test(void);
117 : int libspdm_rsp_vendor_defined_response_error_test(void);
118 : #endif /* LIBSPDM_ENABLE_VENDOR_DEFINED_MESSAGES */
119 :
120 1 : int main(void)
121 : {
122 1 : int return_value = 0;
123 :
124 1 : if (libspdm_rsp_version_test() != 0) {
125 0 : return_value = 1;
126 : }
127 :
128 1 : if (libspdm_rsp_capabilities_test() != 0) {
129 0 : return_value = 1;
130 : }
131 :
132 1 : if (libspdm_rsp_algorithms_test() != 0) {
133 0 : return_value = 1;
134 : }
135 :
136 : #if LIBSPDM_ENABLE_CAPABILITY_CERT_CAP
137 1 : if (libspdm_rsp_digests_test() != 0) {
138 0 : return_value = 1;
139 : }
140 1 : if (libspdm_rsp_certificate_test() != 0) {
141 0 : return_value = 1;
142 : }
143 : #endif /* LIBSPDM_ENABLE_CAPABILITY_CERT_CAP*/
144 :
145 : #if LIBSPDM_ENABLE_CAPABILITY_CHAL_CAP
146 1 : if (libspdm_rsp_challenge_auth_test() != 0) {
147 0 : return_value = 1;
148 : }
149 : #endif /* LIBSPDM_ENABLE_CAPABILITY_CHAL_CAP*/
150 :
151 : #if LIBSPDM_ENABLE_CAPABILITY_MEAS_CAP
152 1 : if (libspdm_rsp_measurements_test() != 0) {
153 0 : return_value = 1;
154 : }
155 : #endif /* LIBSPDM_ENABLE_CAPABILITY_MEAS_CAP*/
156 :
157 : #if LIBSPDM_ENABLE_CAPABILITY_ENDPOINT_INFO_CAP
158 1 : if (libspdm_rsp_endpoint_info_test() != 0) {
159 0 : return_value = 1;
160 : }
161 1 : if (libspdm_rsp_endpoint_info_error_test() != 0) {
162 0 : return_value = 1;
163 : }
164 : #endif /* LIBSPDM_ENABLE_CAPABILITY_ENDPOINT_INFO_CAP*/
165 :
166 : #if LIBSPDM_ENABLE_CAPABILITY_MEL_CAP
167 1 : if (libspdm_rsp_measurement_extension_log_test() != 0) {
168 0 : return_value = 1;
169 : }
170 1 : if (libspdm_rsp_measurement_extension_log_error_test() != 0) {
171 0 : return_value = 1;
172 : }
173 : #endif /* LIBSPDM_ENABLE_CAPABILITY_MEL_CAP*/
174 :
175 : #if LIBSPDM_ENABLE_CAPABILITY_GET_KEY_PAIR_INFO_CAP
176 1 : if (libspdm_rsp_key_pair_info_test() != 0) {
177 0 : return_value = 1;
178 : }
179 1 : if (libspdm_rsp_key_pair_info_error_test() != 0) {
180 0 : return_value = 1;
181 : }
182 : #endif /* LIBSPDM_ENABLE_CAPABILITY_GET_KEY_PAIR_INFO_CAP */
183 :
184 : #if LIBSPDM_ENABLE_CAPABILITY_SET_KEY_PAIR_INFO_CAP
185 1 : if (libspdm_rsp_set_key_pair_info_ack_test() != 0) {
186 0 : return_value = 1;
187 : }
188 1 : if (libspdm_rsp_set_key_pair_info_ack_error_test() != 0) {
189 0 : return_value = 1;
190 : }
191 : #endif /* LIBSPDM_ENABLE_CAPABILITY_SET_KEY_PAIR_INFO_CAP*/
192 :
193 : #if LIBSPDM_RESPOND_IF_READY_SUPPORT
194 : #if (LIBSPDM_ENABLE_CAPABILITY_CERT_CAP || LIBSPDM_ENABLE_CAPABILITY_CHAL_CAP || \
195 : LIBSPDM_ENABLE_CAPABILITY_MEAS_CAP || LIBSPDM_ENABLE_CAPABILITY_KEY_EX_CAP || \
196 : LIBSPDM_ENABLE_CAPABILITY_PSK_CAP)
197 1 : if (libspdm_rsp_respond_if_ready_test() != 0) {
198 0 : return_value = 1;
199 : }
200 : #endif /* LIBSPDM_ENABLE_CAPABILITY_*_CAP */
201 : #endif /* LIBSPDM_RESPOND_IF_READY_SUPPORT */
202 :
203 : #if LIBSPDM_ENABLE_CAPABILITY_KEY_EX_CAP
204 1 : if (libspdm_rsp_key_exchange_rsp_test() != 0) {
205 0 : return_value = 1;
206 : }
207 : #endif /* LIBSPDM_ENABLE_CAPABILITY_KEY_EX_CAP*/
208 :
209 : #if LIBSPDM_ENABLE_CAPABILITY_KEY_EX_CAP
210 1 : if (libspdm_rsp_finish_test() != 0) {
211 0 : return_value = 1;
212 : }
213 : #endif /* LIBSPDM_ENABLE_CAPABILITY_KEY_EX_CAP*/
214 :
215 : #if LIBSPDM_ENABLE_CAPABILITY_PSK_CAP
216 1 : if (libspdm_rsp_psk_exchange_rsp_test() != 0) {
217 0 : return_value = 1;
218 : }
219 : #endif /* LIBSPDM_ENABLE_CAPABILITY_PSK_CAP*/
220 :
221 : #if LIBSPDM_ENABLE_CAPABILITY_PSK_CAP
222 1 : if (libspdm_rsp_psk_finish_rsp_test() != 0) {
223 0 : return_value = 1;
224 : }
225 : #endif /* LIBSPDM_ENABLE_CAPABILITY_PSK_CAP*/
226 :
227 : #if (LIBSPDM_ENABLE_CAPABILITY_KEY_EX_CAP) || (LIBSPDM_ENABLE_CAPABILITY_PSK_CAP)
228 1 : if (libspdm_rsp_heartbeat_ack_test() != 0) {
229 0 : return_value = 1;
230 : }
231 1 : if (libspdm_rsp_key_update_ack_test() != 0) {
232 0 : return_value = 1;
233 : }
234 1 : if (libspdm_rsp_end_session_ack_test() != 0) {
235 0 : return_value = 1;
236 : }
237 : #endif /* (LIBSPDM_ENABLE_CAPABILITY_KEY_EX_CAP) || (LIBSPDM_ENABLE_CAPABILITY_PSK_CAP) */
238 :
239 : #if LIBSPDM_ENABLE_CAPABILITY_ENCAP_CAP
240 : #if LIBSPDM_ENABLE_CAPABILITY_MUT_AUTH_CAP
241 : #if LIBSPDM_SEND_GET_CERTIFICATE_SUPPORT
242 1 : if (spdm_rsp_encap_get_digests_test() != 0) {
243 0 : return_value = 1;
244 : }
245 1 : if (spdm_rsp_encap_get_certificate_test() != 0) {
246 0 : return_value = 1;
247 : }
248 : #endif /* LIBSPDM_SEND_GET_CERTIFICATE_SUPPORT */
249 : #if LIBSPDM_SEND_CHALLENGE_SUPPORT
250 1 : if (libspdm_rsp_encap_challenge_test() != 0) {
251 0 : return_value = 1;
252 : }
253 : #endif /* LIBSPDM_SEND_CHALLENGE_SUPPORT */
254 : #endif /* LIBSPDM_ENABLE_CAPABILITY_MUT_AUTH_CAP */
255 1 : if (libspdm_rsp_encapsulated_request_test() != 0) {
256 0 : return_value = 1;
257 : }
258 1 : if (libspdm_rsp_encap_key_update_test() != 0) {
259 0 : return_value = 1;
260 : }
261 : #if (LIBSPDM_SEND_GET_ENDPOINT_INFO_SUPPORT) && (LIBSPDM_ENABLE_CAPABILITY_ENDPOINT_INFO_CAP)
262 1 : if (libspdm_rsp_encap_get_endpoint_info_test() != 0) {
263 0 : return_value = 1;
264 : }
265 1 : if (libspdm_rsp_encap_get_endpoint_info_error_test() != 0) {
266 0 : return_value = 1;
267 : }
268 : #endif /* LIBSPDM_SEND_GET_ENDPOINT_INFO_SUPPORT */
269 : #if LIBSPDM_ENABLE_CAPABILITY_EVENT_CAP
270 1 : if (libspdm_rsp_encap_send_event_test() != 0) {
271 0 : return_value = 1;
272 : }
273 1 : if (libspdm_rsp_encap_send_event_error_test() != 0) {
274 0 : return_value = 1;
275 : }
276 : #endif /* LIBSPDM_ENABLE_CAPABILITY_EVENT_CAP */
277 : #endif /* LIBSPDM_ENABLE_CAPABILITY_ENCAP_CAP*/
278 :
279 : #if LIBSPDM_ENABLE_CAPABILITY_SET_CERT_CAP
280 1 : if (libspdm_rsp_set_certificate_rsp_test() != 0) {
281 0 : return_value = 1;
282 : }
283 : #endif /* LIBSPDM_ENABLE_CAPABILITY_SET_CERT_CAP */
284 :
285 : #if LIBSPDM_ENABLE_CAPABILITY_CSR_CAP
286 1 : if (libspdm_rsp_csr_test() != 0) {
287 0 : return_value = 1;
288 : }
289 : #endif /*LIBSPDM_ENABLE_CAPABILITY_CSR_CAP*/
290 :
291 : #if LIBSPDM_ENABLE_CAPABILITY_CHUNK_CAP
292 1 : if (libspdm_rsp_chunk_response_test() != 0) {
293 0 : return_value = 1;
294 : }
295 :
296 1 : if (libspdm_rsp_receive_send_test() != 0) {
297 0 : return_value = 1;
298 : }
299 :
300 1 : if (libspdm_rsp_chunk_send_ack_test() != 0) {
301 0 : return_value = 1;
302 : }
303 : #endif /* LIBSPDM_ENABLE_CAPABILITY_CHUNK_CAP */
304 :
305 : #if LIBSPDM_ENABLE_CAPABILITY_EVENT_CAP
306 1 : if (libspdm_rsp_supported_event_types_test() != 0) {
307 0 : return_value = 1;
308 : }
309 1 : if (libspdm_rsp_supported_event_types_error_test() != 0) {
310 0 : return_value = 1;
311 : }
312 1 : if (libspdm_rsp_subscribe_event_types_ack_test() != 0) {
313 0 : return_value = 1;
314 : }
315 1 : if (libspdm_rsp_subscribe_event_types_ack_error_test() != 0) {
316 0 : return_value = 1;
317 : }
318 : #endif /* LIBSPDM_ENABLE_CAPABILITY_EVENT_CAP */
319 :
320 : #if LIBSPDM_EVENT_RECIPIENT_SUPPORT
321 1 : if (libspdm_rsp_event_ack_test() != 0) {
322 0 : return_value = 1;
323 : }
324 1 : if (libspdm_rsp_event_ack_error_test() != 0) {
325 0 : return_value = 1;
326 : }
327 : #endif /* LIBSPDM_EVENT_RECIPIENT_SUPPORT */
328 :
329 : #if LIBSPDM_ENABLE_VENDOR_DEFINED_MESSAGES
330 1 : if (libspdm_rsp_vendor_defined_response_test() != 0) {
331 0 : return_value = 1;
332 : }
333 1 : if (libspdm_rsp_vendor_defined_response_error_test() != 0) {
334 0 : return_value = 1;
335 : }
336 : #endif /* LIBSPDM_ENABLE_VENDOR_DEFINED_MESSAGES */
337 :
338 1 : return return_value;
339 : }
|