1 /**
2 * Copyright Notice:
3 * Copyright 2021-2022 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 "internal/libspdm_requester_lib.h"
8
9 #if LIBSPDM_ENABLE_CAPABILITY_ENCAP_CAP
10
libspdm_generate_encap_error_response(const void * spdm_context,uint8_t error_code,uint8_t error_data,size_t * response_size,void * response)11 libspdm_return_t libspdm_generate_encap_error_response(const void *spdm_context,
12 uint8_t error_code,
13 uint8_t error_data,
14 size_t *response_size,
15 void *response)
16 {
17 spdm_error_response_t *spdm_response;
18
19 LIBSPDM_ASSERT(*response_size >= sizeof(spdm_error_response_t));
20 *response_size = sizeof(spdm_error_response_t);
21 spdm_response = response;
22
23 spdm_response->header.spdm_version = libspdm_get_connection_version (spdm_context);
24 spdm_response->header.request_response_code = SPDM_ERROR;
25 spdm_response->header.param1 = error_code;
26 spdm_response->header.param2 = error_data;
27
28 return LIBSPDM_STATUS_SUCCESS;
29 }
30
libspdm_generate_encap_extended_error_response(const void * spdm_context,uint8_t error_code,uint8_t error_data,size_t extended_error_data_size,const uint8_t * extended_error_data,size_t * response_size,void * response)31 libspdm_return_t libspdm_generate_encap_extended_error_response(
32 const void *spdm_context, uint8_t error_code, uint8_t error_data,
33 size_t extended_error_data_size, const uint8_t *extended_error_data,
34 size_t *response_size, void *response)
35 {
36 spdm_error_response_t *spdm_response;
37 LIBSPDM_ASSERT(*response_size >=
38 sizeof(spdm_error_response_t) + extended_error_data_size);
39
40 spdm_response = response;
41 spdm_response->header.spdm_version = libspdm_get_connection_version (spdm_context);
42 spdm_response->header.request_response_code = SPDM_ERROR;
43 spdm_response->header.param1 = error_code;
44 spdm_response->header.param2 = error_data;
45 libspdm_copy_mem(spdm_response + 1, *response_size - (sizeof(spdm_error_response_t)),
46 extended_error_data, extended_error_data_size);
47 *response_size =
48 sizeof(spdm_error_response_t) + extended_error_data_size;
49 return LIBSPDM_STATUS_SUCCESS;
50 }
51
52 #endif /* LIBSPDM_ENABLE_CAPABILITY_ENCAP_CAP */
53