Branch data Line data Source code
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 : :
11 : 64 : 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 [ - + ]: 64 : LIBSPDM_ASSERT(*response_size >= sizeof(spdm_error_response_t));
20 : 64 : *response_size = sizeof(spdm_error_response_t);
21 : 64 : spdm_response = response;
22 : :
23 : 64 : spdm_response->header.spdm_version = libspdm_get_connection_version (spdm_context);
24 : 64 : spdm_response->header.request_response_code = SPDM_ERROR;
25 : 64 : spdm_response->header.param1 = error_code;
26 : 64 : spdm_response->header.param2 = error_data;
27 : :
28 : 64 : return LIBSPDM_STATUS_SUCCESS;
29 : : }
30 : :
31 : 1 : 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 [ - + ]: 1 : LIBSPDM_ASSERT(*response_size >=
38 : : sizeof(spdm_error_response_t) + extended_error_data_size);
39 : :
40 : 1 : spdm_response = response;
41 : 1 : spdm_response->header.spdm_version = libspdm_get_connection_version (spdm_context);
42 : 1 : spdm_response->header.request_response_code = SPDM_ERROR;
43 : 1 : spdm_response->header.param1 = error_code;
44 : 1 : spdm_response->header.param2 = error_data;
45 : 1 : libspdm_copy_mem(spdm_response + 1, *response_size - (sizeof(spdm_error_response_t)),
46 : : extended_error_data, extended_error_data_size);
47 : 1 : *response_size =
48 : 1 : sizeof(spdm_error_response_t) + extended_error_data_size;
49 : 1 : return LIBSPDM_STATUS_SUCCESS;
50 : : }
51 : :
52 : : #endif /* LIBSPDM_ENABLE_CAPABILITY_ENCAP_CAP */
|