diff --git a/include/industry_standard/spdm.h b/include/industry_standard/spdm.h index 49be2b97878..f979fc041bf 100644 --- a/include/industry_standard/spdm.h +++ b/include/industry_standard/spdm.h @@ -16,6 +16,7 @@ /* Encompasses SPDM specification versions 1.0, 1.1, 1.2, 1.3, 1.4 */ #define SPDM_MAX_VERSION_COUNT 5 #define SPDM_MAX_SLOT_COUNT 8 +#define SPDM_MAX_BANK_COUNT 240 #define SPDM_MAX_OPAQUE_DATA_SIZE 1024 #define SPDM_MAX_CSR_TRACKING_TAG 7 /* MeasurementRecordLength is 3 bytes. */ diff --git a/include/internal/libspdm_common_lib.h b/include/internal/libspdm_common_lib.h index cb116703ba1..46b108ce7e0 100644 --- a/include/internal/libspdm_common_lib.h +++ b/include/internal/libspdm_common_lib.h @@ -99,13 +99,13 @@ typedef struct { libspdm_secured_message_version_t secured_message_version; /* My Certificate */ - const void *local_cert_chain_provision[SPDM_MAX_SLOT_COUNT]; - size_t local_cert_chain_provision_size[SPDM_MAX_SLOT_COUNT]; + const void *local_cert_chain_provision[LIBSPDM_MAX_BANK_COUNT][SPDM_MAX_SLOT_COUNT]; + size_t local_cert_chain_provision_size[LIBSPDM_MAX_BANK_COUNT][SPDM_MAX_SLOT_COUNT]; uint8_t local_supported_slot_mask; uint8_t cert_slot_reset_mask; - spdm_key_pair_id_t local_key_pair_id[SPDM_MAX_SLOT_COUNT]; - spdm_certificate_info_t local_cert_info[SPDM_MAX_SLOT_COUNT]; - spdm_key_usage_bit_mask_t local_key_usage_bit_mask[SPDM_MAX_SLOT_COUNT]; + spdm_key_pair_id_t local_key_pair_id[LIBSPDM_MAX_BANK_COUNT][SPDM_MAX_SLOT_COUNT]; + spdm_certificate_info_t local_cert_info[LIBSPDM_MAX_BANK_COUNT][SPDM_MAX_SLOT_COUNT]; + spdm_key_usage_bit_mask_t local_key_usage_bit_mask[LIBSPDM_MAX_BANK_COUNT][SPDM_MAX_SLOT_COUNT]; /* My raw public key (slot_id - 0xFF) */ const void *local_public_key_provision; size_t local_public_key_provision_size; @@ -148,6 +148,9 @@ typedef struct { /* Peer CertificateChain */ libspdm_peer_used_cert_chain_t peer_used_cert_chain[SPDM_MAX_SLOT_COUNT]; + /* The local certificate bank to use */ + uint8_t current_bank; + /* Specifies whether the cached negotiated state should be invalidated. (responder only) * This is a "sticky" bit wherein if it is set to 1 then it cannot be set to 0. */ uint8_t end_session_attributes; diff --git a/include/library/spdm_common_lib.h b/include/library/spdm_common_lib.h index 331a57425e6..1c491b750c5 100644 --- a/include/library/spdm_common_lib.h +++ b/include/library/spdm_common_lib.h @@ -76,6 +76,7 @@ typedef enum { LIBSPDM_DATA_LOCAL_KEY_PAIR_ID, LIBSPDM_DATA_LOCAL_CERT_INFO, LIBSPDM_DATA_LOCAL_KEY_USAGE_BIT_MASK, + LIBSPDM_DATA_LOCAL_CURRENT_BANK, LIBSPDM_DATA_MUT_AUTH_REQUESTED, LIBSPDM_DATA_HEARTBEAT_PERIOD, diff --git a/include/library/spdm_lib_config.h b/include/library/spdm_lib_config.h index 926191fe73f..12d0a4e2dff 100644 --- a/include/library/spdm_lib_config.h +++ b/include/library/spdm_lib_config.h @@ -86,6 +86,14 @@ #define LIBSPDM_ENABLE_CAPABILITY_ENDPOINT_INFO_CAP 1 #endif +/* SPDM 1.4 capabilities. */ +#ifndef LIBSPDM_MAX_BANK_COUNT +/* We support up to 240 (SPDM_MAX_BANK_COUNT) banks, deafult to 2 as that seems + * to be a reasonable starting point. + */ +#define LIBSPDM_MAX_BANK_COUNT 2 +#endif + /* Includes SPDM 1.3 features for CSR messages. If enabled then LIBSPDM_ENABLE_CAPABILITY_CSR_CAP * must also be enabled. */ diff --git a/library/spdm_common_lib/libspdm_com_context_data.c b/library/spdm_common_lib/libspdm_com_context_data.c index d6dd98d85cc..b96fa0ac296 100644 --- a/library/spdm_common_lib/libspdm_com_context_data.c +++ b/library/spdm_common_lib/libspdm_com_context_data.c @@ -156,6 +156,7 @@ libspdm_return_t libspdm_set_data(void *spdm_context, libspdm_data_type_t data_t uint8_t mut_auth_requested; uint8_t root_cert_index; uint16_t data16; + uint8_t data8; #if !(LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT) && LIBSPDM_CERT_PARSE_SUPPORT bool status; const uint8_t *cert_buffer; @@ -523,8 +524,22 @@ libspdm_return_t libspdm_set_data(void *spdm_context, libspdm_data_type_t data_t if (slot_id >= SPDM_MAX_SLOT_COUNT) { return LIBSPDM_STATUS_INVALID_PARAMETER; } - context->local_context.local_cert_chain_provision_size[slot_id] = data_size; - context->local_context.local_cert_chain_provision[slot_id] = data; + context->local_context.local_cert_chain_provision_size[context->connection_info.current_bank][slot_id] = + data_size; + context->local_context.local_cert_chain_provision[context->connection_info.current_bank][slot_id] = data; + break; + case LIBSPDM_DATA_LOCAL_CURRENT_BANK: + if (parameter->location != LIBSPDM_DATA_LOCATION_LOCAL) { + return LIBSPDM_STATUS_INVALID_PARAMETER; + } + if (data_size != sizeof(uint8_t)) { + return LIBSPDM_STATUS_INVALID_PARAMETER; + } + data8 = *(const uint8_t *)data; + if (data8 >= LIBSPDM_MAX_BANK_COUNT || data8 >= SPDM_MAX_BANK_COUNT) { + return LIBSPDM_STATUS_INVALID_PARAMETER; + } + context->connection_info.current_bank = data8; break; case LIBSPDM_DATA_LOCAL_SUPPORTED_SLOT_MASK: if (parameter->location != LIBSPDM_DATA_LOCATION_LOCAL) { @@ -546,7 +561,8 @@ libspdm_return_t libspdm_set_data(void *spdm_context, libspdm_data_type_t data_t if (data_size != sizeof(spdm_key_pair_id_t)) { return LIBSPDM_STATUS_INVALID_PARAMETER; } - context->local_context.local_key_pair_id[slot_id] = *(const spdm_key_pair_id_t *)data; + context->local_context.local_key_pair_id[context->connection_info.current_bank][slot_id] = + *(const spdm_key_pair_id_t *)data; break; case LIBSPDM_DATA_LOCAL_CERT_INFO: if (parameter->location != LIBSPDM_DATA_LOCATION_LOCAL) { @@ -559,7 +575,8 @@ libspdm_return_t libspdm_set_data(void *spdm_context, libspdm_data_type_t data_t if (data_size != sizeof(spdm_certificate_info_t)) { return LIBSPDM_STATUS_INVALID_PARAMETER; } - context->local_context.local_cert_info[slot_id] = *(const spdm_certificate_info_t *)data; + context->local_context.local_cert_info[context->connection_info.current_bank][slot_id] = + *(const spdm_certificate_info_t *)data; break; case LIBSPDM_DATA_LOCAL_KEY_USAGE_BIT_MASK: if (parameter->location != LIBSPDM_DATA_LOCATION_LOCAL) { @@ -572,7 +589,7 @@ libspdm_return_t libspdm_set_data(void *spdm_context, libspdm_data_type_t data_t if (data_size != sizeof(spdm_key_usage_bit_mask_t)) { return LIBSPDM_STATUS_INVALID_PARAMETER; } - context->local_context.local_key_usage_bit_mask[slot_id] = + context->local_context.local_key_usage_bit_mask[context->connection_info.current_bank][slot_id] = libspdm_read_uint16((const uint8_t *)data); break; case LIBSPDM_DATA_PEER_USED_CERT_CHAIN_BUFFER: @@ -1222,15 +1239,17 @@ bool libspdm_check_context (void *spdm_context) SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHUNK_CAP) != 0) && (context->local_context.capability.max_spdm_msg_size != 0)) { for (index = 0; index < SPDM_MAX_SLOT_COUNT; index++) { - if ((context->local_context.local_cert_chain_provision_size[index] != 0) && - (context->local_context.local_cert_chain_provision_size[index] + + if ((context->local_context.local_cert_chain_provision_size[context->connection_info.current_bank][index] != + 0) && + (context->local_context.local_cert_chain_provision_size[context->connection_info.current_bank][index] + sizeof(spdm_certificate_response_t) > context->local_context.capability.max_spdm_msg_size)) { LIBSPDM_DEBUG((LIBSPDM_DEBUG_ERROR, "max_spdm_msg_size (%d) must be greater than or " - "equal to local_cert_chain_provision_size[%zu] (%zu).\n", + "equal to local_cert_chain_provision_size[context->connection_info.current_bank][%zu] (%zu).\n", context->local_context.capability.max_spdm_msg_size, index, - context->local_context.local_cert_chain_provision_size[index])); + context->local_context.local_cert_chain_provision_size[context->connection_info. + current_bank][index])); return false; } } diff --git a/library/spdm_common_lib/libspdm_com_crypto_service.c b/library/spdm_common_lib/libspdm_com_crypto_service.c index 66455fc05c9..b768a94baa3 100644 --- a/library/spdm_common_lib/libspdm_com_crypto_service.c +++ b/library/spdm_common_lib/libspdm_com_crypto_service.c @@ -27,7 +27,7 @@ uint8_t libspdm_slot_id_to_key_pair_id ( } } LIBSPDM_ASSERT(slot_id < SPDM_MAX_SLOT_COUNT); - return context->local_context.local_key_pair_id[slot_id]; + return context->local_context.local_key_pair_id[context->connection_info.current_bank][slot_id]; } #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT @@ -73,11 +73,14 @@ void libspdm_get_local_cert_chain_buffer(void *spdm_context, context = spdm_context; - LIBSPDM_ASSERT(context->local_context.local_cert_chain_provision[slot_id] != NULL); - LIBSPDM_ASSERT(context->local_context.local_cert_chain_provision_size != 0); + LIBSPDM_ASSERT(context->local_context.local_cert_chain_provision[context->connection_info.current_bank][slot_id] != + NULL); + LIBSPDM_ASSERT(context->local_context.local_cert_chain_provision_size[context->connection_info.current_bank] != 0); - *cert_chain_buffer = context->local_context.local_cert_chain_provision[slot_id]; - *cert_chain_buffer_size = context->local_context.local_cert_chain_provision_size[slot_id]; + *cert_chain_buffer = + context->local_context.local_cert_chain_provision[context->connection_info.current_bank][slot_id]; + *cert_chain_buffer_size = + context->local_context.local_cert_chain_provision_size[context->connection_info.current_bank][slot_id]; } bool libspdm_get_local_cert_chain_data(void *spdm_context, @@ -591,8 +594,9 @@ bool libspdm_generate_cert_chain_hash(libspdm_context_t *spdm_context, LIBSPDM_ASSERT(slot_id < SPDM_MAX_SLOT_COUNT); return libspdm_hash_all( spdm_context->connection_info.algorithm.base_hash_algo, - spdm_context->local_context.local_cert_chain_provision[slot_id], - spdm_context->local_context.local_cert_chain_provision_size[slot_id], hash); + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][slot_id], + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][slot_id], + hash); } bool libspdm_generate_public_key_hash(libspdm_context_t *spdm_context, @@ -611,7 +615,8 @@ uint8_t libspdm_get_cert_slot_mask(libspdm_context_t *spdm_context) slot_mask = 0; for (index = 0; index < SPDM_MAX_SLOT_COUNT; index++) { - if (spdm_context->local_context.local_cert_chain_provision[index] != NULL) { + if (spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][index] != + NULL) { slot_mask |= (1 << index); } } @@ -626,7 +631,8 @@ uint8_t libspdm_get_cert_slot_count(libspdm_context_t *spdm_context) slot_count = 0; for (index = 0; index < SPDM_MAX_SLOT_COUNT; index++) { - if (spdm_context->local_context.local_cert_chain_provision[index] != NULL) { + if (spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][index] != + NULL) { slot_count++; } } diff --git a/library/spdm_requester_lib/libspdm_req_encap_certificate.c b/library/spdm_requester_lib/libspdm_req_encap_certificate.c index 15f6330c235..533fbea955b 100644 --- a/library/spdm_requester_lib/libspdm_req_encap_certificate.c +++ b/library/spdm_requester_lib/libspdm_req_encap_certificate.c @@ -88,13 +88,14 @@ libspdm_return_t libspdm_get_encap_response_certificate(void *spdm_context, response_size, response); } - if (context->local_context.local_cert_chain_provision[slot_id] == NULL) { + if (context->local_context.local_cert_chain_provision[context->connection_info.current_bank][slot_id] == NULL) { return libspdm_generate_encap_error_response( context, SPDM_ERROR_CODE_UNSPECIFIED, 0, response_size, response); } - cert_chain_size = context->local_context.local_cert_chain_provision_size[slot_id]; + cert_chain_size = + context->local_context.local_cert_chain_provision_size[context->connection_info.current_bank][slot_id]; if ((spdm_request->header.spdm_version >= SPDM_MESSAGE_VERSION_14) && (!use_large_cert_chain) && (cert_chain_size > SPDM_MAX_CERTIFICATE_CHAIN_SIZE)) { @@ -160,7 +161,8 @@ libspdm_return_t libspdm_get_encap_response_certificate(void *spdm_context, spdm_response->header.param2 = 0; if ((spdm_request->header.spdm_version >= SPDM_MESSAGE_VERSION_13) && context->connection_info.multi_key_conn_req) { - spdm_response->header.param2 = context->local_context.local_cert_info[slot_id]; + spdm_response->header.param2 = + context->local_context.local_cert_info[context->connection_info.current_bank][slot_id]; } if (use_large_cert_chain) { spdm_response->header.param1 |= SPDM_CERTIFICATE_RESPONSE_LARGE_CERT_CHAIN; @@ -179,7 +181,7 @@ libspdm_return_t libspdm_get_encap_response_certificate(void *spdm_context, libspdm_copy_mem((uint8_t *)spdm_response + rsp_msg_header_size, response_capacity - rsp_msg_header_size, (const uint8_t *)context->local_context - .local_cert_chain_provision[slot_id] + offset, length); + .local_cert_chain_provision[context->connection_info.current_bank][slot_id] + offset, length); /* Cache*/ diff --git a/library/spdm_requester_lib/libspdm_req_encap_challenge_auth.c b/library/spdm_requester_lib/libspdm_req_encap_challenge_auth.c index e8dc0174dab..e28c2690421 100644 --- a/library/spdm_requester_lib/libspdm_req_encap_challenge_auth.c +++ b/library/spdm_requester_lib/libspdm_req_encap_challenge_auth.c @@ -1,6 +1,6 @@ /** * Copyright Notice: - * Copyright 2021-2025 DMTF. All rights reserved. + * Copyright 2021-2026 DMTF. All rights reserved. * License: BSD 3-Clause License. For full text see link: https://github.com/DMTF/libspdm/blob/main/LICENSE.md **/ @@ -86,7 +86,7 @@ libspdm_return_t libspdm_get_encap_response_challenge_auth( if ((spdm_request->header.spdm_version >= SPDM_MESSAGE_VERSION_13) && context->connection_info.multi_key_conn_req && (slot_id != 0xFF)) { - if ((context->local_context.local_key_usage_bit_mask[slot_id] & + if ((context->local_context.local_key_usage_bit_mask[context->connection_info.current_bank][slot_id] & SPDM_KEY_USAGE_BIT_MASK_CHALLENGE_USE) == 0) { return libspdm_generate_encap_error_response( context, SPDM_ERROR_CODE_INVALID_REQUEST, 0, diff --git a/library/spdm_requester_lib/libspdm_req_encap_digests.c b/library/spdm_requester_lib/libspdm_req_encap_digests.c index 4ad0a0c9ca4..22e1ebf29d3 100644 --- a/library/spdm_requester_lib/libspdm_req_encap_digests.c +++ b/library/spdm_requester_lib/libspdm_req_encap_digests.c @@ -101,16 +101,18 @@ libspdm_return_t libspdm_get_encap_response_digest(void *spdm_context, slot_index = 0; for (index = 0; index < SPDM_MAX_SLOT_COUNT; index++) { if (context->local_context - .local_cert_chain_provision[index] != NULL) { + .local_cert_chain_provision[context->connection_info.current_bank][index] != NULL) { spdm_response->header.param2 |= (1 << index); result = libspdm_generate_cert_chain_hash(context, index, &digest[hash_size * slot_index]); if ((spdm_request->header.spdm_version >= SPDM_MESSAGE_VERSION_13) && context->connection_info.multi_key_conn_req) { - key_pair_id[slot_index] = context->local_context.local_key_pair_id[index]; - cert_info[slot_index] = context->local_context.local_cert_info[index]; + key_pair_id[slot_index] = + context->local_context.local_key_pair_id[context->connection_info.current_bank][index]; + cert_info[slot_index] = + context->local_context.local_cert_info[context->connection_info.current_bank][index]; key_usage_bit_mask[slot_index] = - context->local_context.local_key_usage_bit_mask[index]; + context->local_context.local_key_usage_bit_mask[context->connection_info.current_bank][index]; } slot_index++; if (!result) { diff --git a/library/spdm_requester_lib/libspdm_req_encap_endpoint_info.c b/library/spdm_requester_lib/libspdm_req_encap_endpoint_info.c index 40ac8925def..da486faf236 100644 --- a/library/spdm_requester_lib/libspdm_req_encap_endpoint_info.c +++ b/library/spdm_requester_lib/libspdm_req_encap_endpoint_info.c @@ -1,6 +1,6 @@ /** * Copyright Notice: - * Copyright 2025 DMTF. All rights reserved. + * Copyright 2025-2026 DMTF. All rights reserved. * License: BSD 3-Clause License. For full text see link: https://github.com/DMTF/libspdm/blob/main/LICENSE.md **/ @@ -126,7 +126,8 @@ libspdm_return_t libspdm_get_encap_response_endpoint_info(void *spdm_context, } if (slot_id != 0xF) { - if (context->local_context.local_cert_chain_provision[slot_id] == NULL) { + if (context->local_context.local_cert_chain_provision[context->connection_info.current_bank][slot_id] == + NULL) { return libspdm_generate_encap_error_response( context, SPDM_ERROR_CODE_INVALID_REQUEST, 0, response_size, response); @@ -140,7 +141,7 @@ libspdm_return_t libspdm_get_encap_response_endpoint_info(void *spdm_context, } if (context->connection_info.multi_key_conn_req && slot_id != 0xF) { - if ((context->local_context.local_key_usage_bit_mask[slot_id] & + if ((context->local_context.local_key_usage_bit_mask[context->connection_info.current_bank][slot_id] & SPDM_KEY_USAGE_BIT_MASK_ENDPOINT_INFO_USE) == 0) { return libspdm_generate_encap_error_response( context, SPDM_ERROR_CODE_INVALID_REQUEST, diff --git a/library/spdm_requester_lib/libspdm_req_encap_request.c b/library/spdm_requester_lib/libspdm_req_encap_request.c index 769e3c08e02..7be3c989cd8 100644 --- a/library/spdm_requester_lib/libspdm_req_encap_request.c +++ b/library/spdm_requester_lib/libspdm_req_encap_request.c @@ -1,6 +1,6 @@ /** * Copyright Notice: - * Copyright 2021-2025 DMTF. All rights reserved. + * Copyright 2021-2026 DMTF. All rights reserved. * License: BSD 3-Clause License. For full text see link: https://github.com/DMTF/libspdm/blob/main/LICENSE.md **/ @@ -434,7 +434,8 @@ libspdm_return_t libspdm_encapsulated_request(libspdm_context_t *spdm_context, if ((spdm_encapsulated_response_ack_response->header.spdm_version >= SPDM_MESSAGE_VERSION_13) && spdm_context->connection_info.multi_key_conn_req) { - if ((spdm_context->local_context.local_key_usage_bit_mask[*req_slot_id_param + if ((spdm_context->local_context.local_key_usage_bit_mask[spdm_context->connection_info. + current_bank][*req_slot_id_param ] & SPDM_KEY_USAGE_BIT_MASK_KEY_EX_USE) == 0) { libspdm_release_receiver_buffer (spdm_context); return LIBSPDM_STATUS_INVALID_MSG_FIELD; diff --git a/library/spdm_requester_lib/libspdm_req_key_exchange.c b/library/spdm_requester_lib/libspdm_req_key_exchange.c index dbaaa5121aa..e591cffce2c 100644 --- a/library/spdm_requester_lib/libspdm_req_key_exchange.c +++ b/library/spdm_requester_lib/libspdm_req_key_exchange.c @@ -628,7 +628,9 @@ static libspdm_return_t libspdm_try_send_receive_key_exchange( if ((spdm_request->header.spdm_version >= SPDM_MESSAGE_VERSION_13) && spdm_context->connection_info.multi_key_conn_req && (*req_slot_id_param != 0xf)) { - if ((spdm_context->local_context.local_key_usage_bit_mask[*req_slot_id_param] & + if ((spdm_context->local_context.local_key_usage_bit_mask[spdm_context->connection_info.current_bank][* + req_slot_id_param] + & SPDM_KEY_USAGE_BIT_MASK_KEY_EX_USE) == 0) { status = LIBSPDM_STATUS_INVALID_MSG_FIELD; goto receive_done; diff --git a/library/spdm_responder_lib/libspdm_rsp_certificate.c b/library/spdm_responder_lib/libspdm_rsp_certificate.c index 120d7fc8f0f..ec00989126a 100644 --- a/library/spdm_responder_lib/libspdm_rsp_certificate.c +++ b/library/spdm_responder_lib/libspdm_rsp_certificate.c @@ -121,13 +121,15 @@ libspdm_return_t libspdm_get_response_certificate(libspdm_context_t *spdm_contex response_size, response); } - if (spdm_context->local_context.local_cert_chain_provision[slot_id] == NULL) { + if (spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][slot_id] == + NULL) { return libspdm_generate_error_response( spdm_context, SPDM_ERROR_CODE_INVALID_REQUEST, 0, response_size, response); } - cert_chain_size = spdm_context->local_context.local_cert_chain_provision_size[slot_id]; + cert_chain_size = + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][slot_id]; if ((spdm_request->header.spdm_version >= SPDM_MESSAGE_VERSION_14) && (!use_large_cert_chain) && (cert_chain_size > SPDM_MAX_CERTIFICATE_CHAIN_SIZE)) { @@ -193,7 +195,8 @@ libspdm_return_t libspdm_get_response_certificate(libspdm_context_t *spdm_contex spdm_response->header.param2 = 0; if ((spdm_request->header.spdm_version >= SPDM_MESSAGE_VERSION_13) && spdm_context->connection_info.multi_key_conn_rsp) { - spdm_response->header.param2 = spdm_context->local_context.local_cert_info[slot_id]; + spdm_response->header.param2 = + spdm_context->local_context.local_cert_info[spdm_context->connection_info.current_bank][slot_id]; } if (use_large_cert_chain) { spdm_response->header.param1 |= SPDM_CERTIFICATE_RESPONSE_LARGE_CERT_CHAIN; @@ -219,7 +222,7 @@ libspdm_return_t libspdm_get_response_certificate(libspdm_context_t *spdm_contex libspdm_copy_mem((uint8_t *)spdm_response + rsp_msg_header_size, response_capacity - rsp_msg_header_size, (const uint8_t *)spdm_context->local_context - .local_cert_chain_provision[slot_id] + offset, length); + .local_cert_chain_provision[spdm_context->connection_info.current_bank][slot_id] + offset, length); if (session_info == NULL) { /* Log to transcript. */ diff --git a/library/spdm_responder_lib/libspdm_rsp_challenge_auth.c b/library/spdm_responder_lib/libspdm_rsp_challenge_auth.c index d4622476f67..af6286b5f25 100644 --- a/library/spdm_responder_lib/libspdm_rsp_challenge_auth.c +++ b/library/spdm_responder_lib/libspdm_rsp_challenge_auth.c @@ -101,7 +101,9 @@ libspdm_return_t libspdm_get_response_challenge_auth(libspdm_context_t *spdm_con } if (slot_id != 0xFF) { - if (spdm_context->local_context.local_cert_chain_provision[slot_id] == NULL) { + if (spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][slot_id] + == + NULL) { return libspdm_generate_error_response( spdm_context, SPDM_ERROR_CODE_INVALID_REQUEST, 0, response_size, response); @@ -117,7 +119,7 @@ libspdm_return_t libspdm_get_response_challenge_auth(libspdm_context_t *spdm_con if ((spdm_request->header.spdm_version >= SPDM_MESSAGE_VERSION_13) && spdm_context->connection_info.multi_key_conn_rsp && (slot_id != 0xFF)) { - if ((spdm_context->local_context.local_key_usage_bit_mask[slot_id] & + if ((spdm_context->local_context.local_key_usage_bit_mask[spdm_context->connection_info.current_bank][slot_id] & SPDM_KEY_USAGE_BIT_MASK_CHALLENGE_USE) == 0) { return libspdm_generate_error_response( spdm_context, SPDM_ERROR_CODE_INVALID_REQUEST, diff --git a/library/spdm_responder_lib/libspdm_rsp_digests.c b/library/spdm_responder_lib/libspdm_rsp_digests.c index 511438a640d..8b8dd14bdaa 100644 --- a/library/spdm_responder_lib/libspdm_rsp_digests.c +++ b/library/spdm_responder_lib/libspdm_rsp_digests.c @@ -1,6 +1,6 @@ /** * Copyright Notice: - * Copyright 2021-2024 DMTF. All rights reserved. + * Copyright 2021-2026 DMTF. All rights reserved. * License: BSD 3-Clause License. For full text see link: https://github.com/DMTF/libspdm/blob/main/LICENSE.md **/ @@ -100,7 +100,7 @@ libspdm_return_t libspdm_get_response_digests(libspdm_context_t *spdm_context, s no_local_cert_chain = true; for (index = 0; index < SPDM_MAX_SLOT_COUNT; index++) { if (spdm_context->local_context - .local_cert_chain_provision[index] != NULL) { + .local_cert_chain_provision[spdm_context->connection_info.current_bank][index] != NULL) { no_local_cert_chain = false; } } @@ -146,16 +146,19 @@ libspdm_return_t libspdm_get_response_digests(libspdm_context_t *spdm_context, s slot_index = 0; for (index = 0; index < SPDM_MAX_SLOT_COUNT; index++) { if (spdm_context->local_context - .local_cert_chain_provision[index] != NULL) { + .local_cert_chain_provision[spdm_context->connection_info.current_bank][index] != NULL) { spdm_response->header.param2 |= (1 << index); result = libspdm_generate_cert_chain_hash(spdm_context, index, &digest[hash_size * slot_index]); if ((spdm_request->header.spdm_version >= SPDM_MESSAGE_VERSION_13) && spdm_context->connection_info.multi_key_conn_rsp) { - key_pair_id[slot_index] = spdm_context->local_context.local_key_pair_id[index]; - cert_info[slot_index] = spdm_context->local_context.local_cert_info[index]; + key_pair_id[slot_index] = + spdm_context->local_context.local_key_pair_id[spdm_context->connection_info.current_bank][index]; + cert_info[slot_index] = + spdm_context->local_context.local_cert_info[spdm_context->connection_info.current_bank][index]; key_usage_bit_mask[slot_index] = - spdm_context->local_context.local_key_usage_bit_mask[index]; + spdm_context->local_context.local_key_usage_bit_mask[spdm_context->connection_info.current_bank][ + index]; } slot_index++; if (!result) { diff --git a/library/spdm_responder_lib/libspdm_rsp_endpoint_info.c b/library/spdm_responder_lib/libspdm_rsp_endpoint_info.c index 8fe13378e71..46b8bd864df 100644 --- a/library/spdm_responder_lib/libspdm_rsp_endpoint_info.c +++ b/library/spdm_responder_lib/libspdm_rsp_endpoint_info.c @@ -1,6 +1,6 @@ /** * Copyright Notice: - * Copyright 2025 DMTF. All rights reserved. + * Copyright 2025-2026 DMTF. All rights reserved. * License: BSD 3-Clause License. For full text see link: https://github.com/DMTF/libspdm/blob/main/LICENSE.md **/ @@ -142,7 +142,9 @@ libspdm_return_t libspdm_get_response_endpoint_info(libspdm_context_t *spdm_cont } if (slot_id != 0xF) { - if (spdm_context->local_context.local_cert_chain_provision[slot_id] == NULL) { + if (spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][ + slot_id] + == NULL) { return libspdm_generate_error_response( spdm_context, SPDM_ERROR_CODE_INVALID_REQUEST, 0, response_size, response); @@ -156,7 +158,9 @@ libspdm_return_t libspdm_get_response_endpoint_info(libspdm_context_t *spdm_cont } if (spdm_context->connection_info.multi_key_conn_rsp && slot_id != 0xF) { - if ((spdm_context->local_context.local_key_usage_bit_mask[slot_id] & + if ((spdm_context->local_context.local_key_usage_bit_mask[spdm_context->connection_info.current_bank][ + slot_id] + & SPDM_KEY_USAGE_BIT_MASK_ENDPOINT_INFO_USE) == 0) { return libspdm_generate_error_response( spdm_context, SPDM_ERROR_CODE_INVALID_REQUEST, diff --git a/library/spdm_responder_lib/libspdm_rsp_key_exchange.c b/library/spdm_responder_lib/libspdm_rsp_key_exchange.c index 9fad5ed7b4e..e94b9fcbcf6 100644 --- a/library/spdm_responder_lib/libspdm_rsp_key_exchange.c +++ b/library/spdm_responder_lib/libspdm_rsp_key_exchange.c @@ -302,7 +302,9 @@ libspdm_return_t libspdm_get_response_key_exchange(libspdm_context_t *spdm_conte SPDM_ERROR_CODE_INVALID_REQUEST, 0, response_size, response); } - if (spdm_context->local_context.local_cert_chain_provision[slot_id] == NULL) { + if (spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][slot_id] + == + NULL) { return libspdm_generate_error_response(spdm_context, SPDM_ERROR_CODE_INVALID_REQUEST, 0, response_size, response); @@ -322,7 +324,9 @@ libspdm_return_t libspdm_get_response_key_exchange(libspdm_context_t *spdm_conte if (spdm_request->header.spdm_version >= SPDM_MESSAGE_VERSION_13) { if (spdm_context->connection_info.multi_key_conn_rsp && (slot_id != 0xff)) { - if ((spdm_context->local_context.local_key_usage_bit_mask[slot_id] & + if ((spdm_context->local_context.local_key_usage_bit_mask[spdm_context->connection_info.current_bank][ + slot_id] + & SPDM_KEY_USAGE_BIT_MASK_KEY_EX_USE) == 0) { return libspdm_generate_error_response( spdm_context, SPDM_ERROR_CODE_INVALID_REQUEST, 0, response_size, response); diff --git a/library/spdm_responder_lib/libspdm_rsp_measurements.c b/library/spdm_responder_lib/libspdm_rsp_measurements.c index 36c07be887f..2363112ba70 100644 --- a/library/spdm_responder_lib/libspdm_rsp_measurements.c +++ b/library/spdm_responder_lib/libspdm_rsp_measurements.c @@ -432,7 +432,7 @@ libspdm_return_t libspdm_get_response_measurements(libspdm_context_t *spdm_conte } if (slot_id_param != 0xF) { if (spdm_context->local_context - .local_cert_chain_provision[slot_id_param] == NULL) { + .local_cert_chain_provision[spdm_context->connection_info.current_bank][slot_id_param] == NULL) { libspdm_reset_message_m(spdm_context, session_info); return libspdm_generate_error_response( spdm_context, SPDM_ERROR_CODE_INVALID_REQUEST, @@ -451,7 +451,8 @@ libspdm_return_t libspdm_get_response_measurements(libspdm_context_t *spdm_conte if ((spdm_request->header.spdm_version >= SPDM_MESSAGE_VERSION_13) && spdm_context->connection_info.multi_key_conn_rsp && (slot_id_param != 0xF)) { - if ((spdm_context->local_context.local_key_usage_bit_mask[slot_id_param] & + if ((spdm_context->local_context.local_key_usage_bit_mask[spdm_context->connection_info.current_bank][ + slot_id_param] & SPDM_KEY_USAGE_BIT_MASK_MEASUREMENT_USE) == 0) { return libspdm_generate_error_response( spdm_context, SPDM_ERROR_CODE_INVALID_REQUEST, diff --git a/unit_test/fuzzing/test_requester/test_spdm_requester_challenge/challenge.c b/unit_test/fuzzing/test_requester/test_spdm_requester_challenge/challenge.c index 53c7147cc16..73bf50f0fca 100644 --- a/unit_test/fuzzing/test_requester/test_spdm_requester_challenge/challenge.c +++ b/unit_test/fuzzing/test_requester/test_spdm_requester_challenge/challenge.c @@ -46,6 +46,7 @@ libspdm_return_t libspdm_device_receive_message(void *spdm_context, size_t *resp uint8_t *ptr; uint8_t hash_data[LIBSPDM_MAX_HASH_SIZE]; size_t sig_size; + libspdm_context_t *context = spdm_context; spdm_test_context = libspdm_get_test_context(); test_message_header_size = LIBSPDM_TEST_TRANSPORT_HEADER_SIZE; @@ -62,9 +63,12 @@ libspdm_return_t libspdm_device_receive_message(void *spdm_context, size_t *resp m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - ((libspdm_context_t *)spdm_context)->local_context.local_cert_chain_provision_size[0] = + ((libspdm_context_t *)spdm_context)->local_context.local_cert_chain_provision_size[context->connection_info. + current_bank][0] = data_size; - ((libspdm_context_t *)spdm_context)->local_context.local_cert_chain_provision[0] = data; + ((libspdm_context_t *)spdm_context)->local_context.local_cert_chain_provision[context->connection_info.current_bank] + [0] + = data; ((libspdm_context_t *)spdm_context)->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; ((libspdm_context_t *)spdm_context)->connection_info.algorithm.base_hash_algo = @@ -77,8 +81,10 @@ libspdm_return_t libspdm_device_receive_message(void *spdm_context, size_t *resp ptr = (void *)(spdm_response + 1); libspdm_hash_all( m_libspdm_use_hash_algo, - ((libspdm_context_t *)spdm_context)->local_context.local_cert_chain_provision[0], - ((libspdm_context_t *)spdm_context)->local_context.local_cert_chain_provision_size[0], ptr); + ((libspdm_context_t *)spdm_context)->local_context.local_cert_chain_provision[context->connection_info. + current_bank][0], + ((libspdm_context_t *)spdm_context)->local_context.local_cert_chain_provision_size[context->connection_info. + current_bank][0], ptr); free(data); ptr += libspdm_get_hash_size(m_libspdm_use_hash_algo); libspdm_get_random_number(SPDM_NONCE_SIZE, ptr); diff --git a/unit_test/fuzzing/test_requester/test_spdm_requester_encap_certificate/encap_certificate.c b/unit_test/fuzzing/test_requester/test_spdm_requester_encap_certificate/encap_certificate.c index 8f9d4668ddd..b86f935a9e0 100644 --- a/unit_test/fuzzing/test_requester/test_spdm_requester_encap_certificate/encap_certificate.c +++ b/unit_test/fuzzing/test_requester/test_spdm_requester_encap_certificate/encap_certificate.c @@ -51,8 +51,9 @@ void libspdm_test_requester_encap_certificate(void **State) &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[slot_id] = data; - spdm_context->local_context.local_cert_chain_provision_size[slot_id] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][slot_id] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][slot_id] = + data_size; response_size = sizeof(response); libspdm_get_encap_response_certificate(spdm_context, request_size, diff --git a/unit_test/fuzzing/test_requester/test_spdm_requester_encap_challenge_auth/encap_challenge_auth.c b/unit_test/fuzzing/test_requester/test_spdm_requester_encap_challenge_auth/encap_challenge_auth.c index a4858e19c4c..c5f773944fd 100644 --- a/unit_test/fuzzing/test_requester/test_spdm_requester_encap_challenge_auth/encap_challenge_auth.c +++ b/unit_test/fuzzing/test_requester/test_spdm_requester_encap_challenge_auth/encap_challenge_auth.c @@ -51,8 +51,9 @@ void libspdm_test_requester_encap_challenge(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_secret_lib_challenge_opaque_data_size = 0; libspdm_reset_message_c(spdm_context); diff --git a/unit_test/fuzzing/test_requester/test_spdm_requester_encap_digests/encap_digests.c b/unit_test/fuzzing/test_requester/test_spdm_requester_encap_digests/encap_digests.c index cefdd613e93..7a2e2e83c15 100644 --- a/unit_test/fuzzing/test_requester/test_spdm_requester_encap_digests/encap_digests.c +++ b/unit_test/fuzzing/test_requester/test_spdm_requester_encap_digests/encap_digests.c @@ -33,8 +33,9 @@ void libspdm_test_requester_encap_digests(void **State) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - spdm_context->local_context.local_cert_chain_provision[0] = m_local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = + m_local_certificate_chain; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(m_local_certificate_chain); libspdm_set_mem(m_local_certificate_chain, sizeof(m_local_certificate_chain), (uint8_t)(0xFF)); diff --git a/unit_test/fuzzing/test_requester/test_spdm_requester_finish/finish.c b/unit_test/fuzzing/test_requester/test_spdm_requester_finish/finish.c index 2593cab5ae2..854e902c4ff 100644 --- a/unit_test/fuzzing/test_requester/test_spdm_requester_finish/finish.c +++ b/unit_test/fuzzing/test_requester/test_spdm_requester_finish/finish.c @@ -313,8 +313,10 @@ void libspdm_test_send_receive_finish_case3(void **State) libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_req_asym_algo, &data, &data_size, &hash, &hash_size); - spdm_context->local_context.local_cert_chain_provision_size[req_slot_id_param] = data_size; - spdm_context->local_context.local_cert_chain_provision[req_slot_id_param] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][ + req_slot_id_param] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][req_slot_id_param] + = data; session_id = 0xFFFFFFFF; session_info = &spdm_context->session_info[0]; diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_certificate/certificate.c b/unit_test/fuzzing/test_responder/test_spdm_responder_certificate/certificate.c index a5f20fef67e..c61166f1878 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_certificate/certificate.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_certificate/certificate.c @@ -46,8 +46,8 @@ void libspdm_test_responder_certificate_case1(void **State) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = data_size; response_size = sizeof(response); @@ -85,8 +85,8 @@ void libspdm_test_responder_certificate_case2(void **State) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = data_size; response_size = sizeof(response); @@ -172,8 +172,8 @@ void libspdm_test_responder_certificate_case5(void **State) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = data_size; response_size = sizeof(response); diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_challenge_auth/challenge_auth.c b/unit_test/fuzzing/test_responder/test_spdm_responder_challenge_auth/challenge_auth.c index 893ffd94a44..3b8a17d24ef 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_challenge_auth/challenge_auth.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_challenge_auth/challenge_auth.c @@ -50,8 +50,9 @@ void libspdm_test_responder_challenge_case1(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_secret_lib_challenge_opaque_data_size = 0; libspdm_reset_message_c(spdm_context); @@ -90,8 +91,9 @@ void libspdm_test_responder_challenge_case2(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_secret_lib_challenge_opaque_data_size = 0; libspdm_reset_message_c(spdm_context); @@ -129,8 +131,9 @@ void libspdm_test_responder_challenge_case3(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_secret_lib_challenge_opaque_data_size = 0; libspdm_reset_message_c(spdm_context); @@ -172,8 +175,9 @@ void libspdm_test_responder_challenge_case4(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_secret_lib_challenge_opaque_data_size = 0; g_start_basic_mut_auth = true; @@ -213,8 +217,9 @@ void libspdm_test_responder_challenge_case5(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_secret_lib_challenge_opaque_data_size = 0; libspdm_reset_message_c(spdm_context); @@ -257,8 +262,9 @@ void libspdm_test_responder_challenge_case6(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_secret_lib_challenge_opaque_data_size = 0; response_size = sizeof(response); @@ -296,8 +302,9 @@ void libspdm_test_responder_challenge_case7(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_secret_lib_challenge_opaque_data_size = 0; libspdm_reset_message_c(spdm_context); @@ -336,8 +343,9 @@ void libspdm_test_responder_challenge_case8(void **State) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_secret_lib_challenge_opaque_data_size = 0; libspdm_reset_message_c(spdm_context); @@ -347,7 +355,7 @@ void libspdm_test_responder_challenge_case8(void **State) #endif for (uint8_t i = 0; i < SPDM_MAX_SLOT_COUNT; i++) { - spdm_context->local_context.local_key_usage_bit_mask[i] = + spdm_context->local_context.local_key_usage_bit_mask[spdm_context->connection_info.current_bank][i] = SPDM_KEY_USAGE_BIT_MASK_KEY_EX_USE | SPDM_KEY_USAGE_BIT_MASK_MEASUREMENT_USE; } diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_digests/digests.c b/unit_test/fuzzing/test_responder/test_spdm_responder_digests/digests.c index ad8510738a4..482a2fc472f 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_digests/digests.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_digests/digests.c @@ -33,9 +33,9 @@ void libspdm_test_responder_digests_case1(void **State) SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - spdm_context->local_context.local_cert_chain_provision[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = m_local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(m_local_certificate_chain); libspdm_set_mem(m_local_certificate_chain, sizeof(m_local_certificate_chain), (uint8_t)(0xFF)); diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_encap_challenge/encap_challenge.c b/unit_test/fuzzing/test_responder/test_spdm_responder_encap_challenge/encap_challenge.c index e5ba0315e40..db7506bd5f2 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_encap_challenge/encap_challenge.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_encap_challenge/encap_challenge.c @@ -88,13 +88,18 @@ void libspdm_test_responder_encap_challenge_case1(void **State) #endif spdm_context->encap_context.req_slot_id = 0; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; ptr = (void *)(spdm_response + 1); libspdm_hash_all(m_libspdm_use_hash_algo, - (spdm_context)->local_context.local_cert_chain_provision[0], - (spdm_context)->local_context.local_cert_chain_provision_size[0], ptr); + (spdm_context)->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank] + [ + 0], + (spdm_context)->local_context.local_cert_chain_provision_size[spdm_context->connection_info. + current_bank][ + 0], ptr); ptr += libspdm_get_hash_size(m_libspdm_use_hash_algo); libspdm_get_random_number(SPDM_NONCE_SIZE, ptr); @@ -139,8 +144,9 @@ void libspdm_test_get_encap_request_challenge_case2(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; libspdm_reset_message_c(spdm_context); diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_encap_get_certificate/encap_get_certificate.c b/unit_test/fuzzing/test_responder/test_spdm_responder_encap_get_certificate/encap_get_certificate.c index 02d137b9eba..71cefd3629c 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_encap_get_certificate/encap_get_certificate.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_encap_get_certificate/encap_get_certificate.c @@ -258,8 +258,9 @@ void libspdm_test_get_encap_request_get_certificate_case2(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; libspdm_reset_message_b(spdm_context); diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_encap_get_digests/encap_get_digests.c b/unit_test/fuzzing/test_responder/test_spdm_responder_encap_get_digests/encap_get_digests.c index 5d69709f3e4..d7f05ec16c4 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_encap_get_digests/encap_get_digests.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_encap_get_digests/encap_get_digests.c @@ -36,8 +36,9 @@ void libspdm_test_responder_encap_get_digests_case1(void **State) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - spdm_context->local_context.local_cert_chain_provision[0] = m_local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = + m_local_certificate_chain; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(m_local_certificate_chain); libspdm_set_mem(m_local_certificate_chain, sizeof(m_local_certificate_chain), (uint8_t)(0xFF)); @@ -74,8 +75,9 @@ void libspdm_test_get_encap_request_get_digest_case2(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; libspdm_reset_message_b(spdm_context); diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_encap_key_update/encap_key_update.c b/unit_test/fuzzing/test_responder/test_spdm_responder_encap_key_update/encap_key_update.c index 9591de58d99..6e6a052094b 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_encap_key_update/encap_key_update.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_encap_key_update/encap_key_update.c @@ -164,8 +164,9 @@ void libspdm_test_get_encap_request_key_update_case1(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; libspdm_reset_message_b(spdm_context); @@ -215,8 +216,9 @@ void libspdm_test_get_encap_request_key_update_case2(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; libspdm_reset_message_b(spdm_context); diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_encap_response/encap_response.c b/unit_test/fuzzing/test_responder/test_spdm_responder_encap_response/encap_response.c index 1d4b46c7f12..061376a8a57 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_encap_response/encap_response.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_encap_response/encap_response.c @@ -49,8 +49,9 @@ void libspdm_test_get_response_encapsulated_request_case1(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; libspdm_reset_message_b(spdm_context); @@ -84,8 +85,9 @@ void libspdm_test_get_response_encapsulated_request_case2(void **State) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - spdm_context->local_context.local_cert_chain_provision[0] = local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = + local_certificate_chain; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(local_certificate_chain); libspdm_set_mem(local_certificate_chain, sizeof(local_certificate_chain), (uint8_t)(0xFF)); @@ -118,8 +120,9 @@ void libspdm_test_get_response_encapsulated_request_case3(void **State) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - spdm_context->local_context.local_cert_chain_provision[0] = local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = + local_certificate_chain; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(local_certificate_chain); libspdm_set_mem(local_certificate_chain, sizeof(local_certificate_chain), (uint8_t)(0xFF)); @@ -153,8 +156,9 @@ void libspdm_test_get_response_encapsulated_request_case4(void **State) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - spdm_context->local_context.local_cert_chain_provision[0] = local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = + local_certificate_chain; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(local_certificate_chain); libspdm_set_mem(local_certificate_chain, sizeof(local_certificate_chain), (uint8_t)(0xFF)); @@ -221,8 +225,9 @@ void libspdm_test_get_response_encapsulated_response_ack_case1(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; libspdm_reset_message_b(spdm_context); @@ -290,14 +295,16 @@ void libspdm_test_get_response_encapsulated_response_ack_case3(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - spdm_context->local_context.local_cert_chain_provision[0] = local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = + local_certificate_chain; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(local_certificate_chain); libspdm_set_mem(local_certificate_chain, sizeof(local_certificate_chain), (uint8_t)(0xFF)); @@ -386,8 +393,9 @@ void libspdm_test_get_response_encapsulated_response_ack_case6(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; libspdm_reset_message_b(spdm_context); diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_end_session/end_session.c b/unit_test/fuzzing/test_responder/test_spdm_responder_end_session/end_session.c index 4a070fca001..023958723e6 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_end_session/end_session.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_end_session/end_session.c @@ -56,8 +56,8 @@ void libspdm_test_responder_end_session(void **State) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = data_size; libspdm_reset_message_a(spdm_context); diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_finish_rsp/finish_rsp.c b/unit_test/fuzzing/test_responder/test_spdm_responder_finish_rsp/finish_rsp.c index 7267693f483..daecdb380b6 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_finish_rsp/finish_rsp.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_finish_rsp/finish_rsp.c @@ -93,8 +93,9 @@ void libspdm_test_responder_finish_case1(void **State) m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -312,8 +313,9 @@ void libspdm_test_responder_finish_case7(void **State) m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -393,8 +395,9 @@ void libspdm_test_responder_finish_case8(void **State) m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); g_key_exchange_start_mut_auth = SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED; diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_heartbeat_ack/heartbeat_ack.c b/unit_test/fuzzing/test_responder/test_spdm_responder_heartbeat_ack/heartbeat_ack.c index 5615b2d6291..d68f0f08620 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_heartbeat_ack/heartbeat_ack.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_heartbeat_ack/heartbeat_ack.c @@ -57,8 +57,8 @@ void libspdm_test_responder_heartbeat_case1(void **State) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = data_size1; libspdm_reset_message_a(spdm_context); @@ -171,8 +171,8 @@ void libspdm_test_responder_heartbeat_case4(void **State) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = data_size1; libspdm_reset_message_a(spdm_context); diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_if_ready/respond_if_ready.c b/unit_test/fuzzing/test_responder/test_spdm_responder_if_ready/respond_if_ready.c index 8c3d7786b32..ac2c3f8ccac 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_if_ready/respond_if_ready.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_if_ready/respond_if_ready.c @@ -49,9 +49,9 @@ void libspdm_test_responder_respond_if_ready(void **State) spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - spdm_context->local_context.local_cert_chain_provision[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(local_certificate_chain); libspdm_set_mem(local_certificate_chain, sizeof(local_certificate_chain), (uint8_t)(0xFF)); @@ -106,9 +106,9 @@ void libspdm_test_responder_respond_if_ready_case2(void **State) spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - spdm_context->local_context.local_cert_chain_provision[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(local_certificate_chain); libspdm_set_mem(local_certificate_chain, sizeof(local_certificate_chain), (uint8_t)(0xFF)); @@ -163,9 +163,9 @@ void libspdm_test_responder_respond_if_ready_case3(void **State) spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - spdm_context->local_context.local_cert_chain_provision[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(local_certificate_chain); libspdm_set_mem(local_certificate_chain, sizeof(local_certificate_chain), (uint8_t)(0xFF)); diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_key_exchange/key_exchange.c b/unit_test/fuzzing/test_responder/test_spdm_responder_key_exchange/key_exchange.c index 6f78986de85..6a08d5cd694 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_key_exchange/key_exchange.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_key_exchange/key_exchange.c @@ -77,8 +77,9 @@ void libspdm_test_responder_key_exchange_case1(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_reset_message_a(spdm_context); @@ -146,8 +147,9 @@ void libspdm_test_responder_key_exchange_case2(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_reset_message_a(spdm_context); ptr = spdm_test_key_exchange_request->exchange_data; @@ -209,8 +211,9 @@ void libspdm_test_responder_key_exchange_case3(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_reset_message_a(spdm_context); @@ -273,8 +276,9 @@ void libspdm_test_responder_key_exchange_case4(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_register_cert_chain_buffer(spdm_context, m_cert_chain_buffer, sizeof(m_cert_chain_buffer)); @@ -354,8 +358,9 @@ void libspdm_test_responder_key_exchange_case5(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_reset_message_a(spdm_context); @@ -422,8 +427,9 @@ void libspdm_test_responder_key_exchange_case6(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_reset_message_a(spdm_context); @@ -489,8 +495,9 @@ void libspdm_test_responder_key_exchange_case7(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_reset_message_a(spdm_context); diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_measurements/measurements.c b/unit_test/fuzzing/test_responder/test_spdm_responder_measurements/measurements.c index 0c6154831e9..3a6b86441d0 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_measurements/measurements.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_measurements/measurements.c @@ -129,8 +129,9 @@ void libspdm_test_responder_measurements_case3(void **State) &data_size, NULL, NULL); for (int i = 1; i < SPDM_MAX_SLOT_COUNT; i++) { - spdm_context->local_context.local_cert_chain_provision_size[i] = data_size; - spdm_context->local_context.local_cert_chain_provision[i] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][i] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][i] = data; } response_size = sizeof(response); @@ -178,8 +179,9 @@ void libspdm_test_responder_measurements_case4(void **State) &data_size, NULL, NULL); for (int i = 1; i < SPDM_MAX_SLOT_COUNT; i++) { - spdm_context->local_context.local_cert_chain_provision_size[i] = data_size; - spdm_context->local_context.local_cert_chain_provision[i] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][i] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][i] = data; } session_id = 0xFFFFFFFF; diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_psk_exchange_rsp/psk_exchange_rsp.c b/unit_test/fuzzing/test_responder/test_spdm_responder_psk_exchange_rsp/psk_exchange_rsp.c index 68c83a89c53..fc96157646d 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_psk_exchange_rsp/psk_exchange_rsp.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_psk_exchange_rsp/psk_exchange_rsp.c @@ -71,8 +71,9 @@ void libspdm_test_responder_psk_exchange_case1(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_reset_message_a(spdm_context); @@ -136,8 +137,9 @@ void libspdm_test_responder_psk_exchange_case2(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_reset_message_a(spdm_context); @@ -189,8 +191,9 @@ void libspdm_test_responder_psk_exchange_case3(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_reset_message_a(spdm_context); @@ -264,8 +267,9 @@ void libspdm_test_responder_psk_exchange_case4(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_reset_message_a(spdm_context); @@ -341,8 +345,9 @@ void libspdm_test_responder_psk_exchange_case5(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_reset_message_a(spdm_context); @@ -415,8 +420,9 @@ void libspdm_test_responder_psk_exchange_case6(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_reset_message_a(spdm_context); @@ -491,8 +497,9 @@ void libspdm_test_responder_psk_exchange_case7(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_reset_message_a(spdm_context); diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_psk_finish_rsp/psk_finish_rsp.c b/unit_test/fuzzing/test_responder/test_spdm_responder_psk_finish_rsp/psk_finish_rsp.c index 65658c76568..771f2c43b68 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_psk_finish_rsp/psk_finish_rsp.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_psk_finish_rsp/psk_finish_rsp.c @@ -73,8 +73,9 @@ void libspdm_test_responder_psk_finish_rsp_case1(void **State) m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -143,8 +144,9 @@ void libspdm_test_responder_psk_finish_rsp_case2(void **State) m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -231,8 +233,9 @@ void libspdm_test_responder_psk_finish_rsp_case3(void **State) m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); diff --git a/unit_test/test_spdm_requester/challenge.c b/unit_test/test_spdm_requester/challenge.c index 9500ac882d8..cc9cbac5918 100644 --- a/unit_test/test_spdm_requester/challenge.c +++ b/unit_test/test_spdm_requester/challenge.c @@ -146,6 +146,7 @@ static libspdm_return_t receive_message( void *spdm_context, size_t *response_size, void **response, uint64_t timeout) { libspdm_test_context_t *spdm_test_context; + libspdm_context_t *context = spdm_context; spdm_test_context = libspdm_get_test_context(); switch (spdm_test_context->case_id) { @@ -166,9 +167,9 @@ static libspdm_return_t receive_message( m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); ((libspdm_context_t *)spdm_context) - ->local_context.local_cert_chain_provision_size[0] = data_size; + ->local_context.local_cert_chain_provision_size[context->connection_info.current_bank][0] = data_size; ((libspdm_context_t *)spdm_context) - ->local_context.local_cert_chain_provision[0] = data; + ->local_context.local_cert_chain_provision[context->connection_info.current_bank][0] = data; ((libspdm_context_t *)spdm_context) ->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; ((libspdm_context_t *)spdm_context) @@ -188,10 +189,10 @@ static libspdm_return_t receive_message( libspdm_hash_all( m_libspdm_use_hash_algo, ((libspdm_context_t *)spdm_context) - ->local_context.local_cert_chain_provision[0], + ->local_context.local_cert_chain_provision[context->connection_info.current_bank][0], ((libspdm_context_t *)spdm_context) ->local_context - .local_cert_chain_provision_size[0], + .local_cert_chain_provision_size[context->connection_info.current_bank][0], ptr); free(data); ptr += libspdm_get_hash_size(m_libspdm_use_hash_algo); @@ -246,9 +247,9 @@ static libspdm_return_t receive_message( m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); ((libspdm_context_t *)spdm_context) - ->local_context.local_cert_chain_provision_size[0] = data_size; + ->local_context.local_cert_chain_provision_size[context->connection_info.current_bank][0] = data_size; ((libspdm_context_t *)spdm_context) - ->local_context.local_cert_chain_provision[0] = data; + ->local_context.local_cert_chain_provision[context->connection_info.current_bank][0] = data; ((libspdm_context_t *)spdm_context) ->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; ((libspdm_context_t *)spdm_context) @@ -268,10 +269,10 @@ static libspdm_return_t receive_message( libspdm_hash_all( m_libspdm_use_hash_algo, ((libspdm_context_t *)spdm_context) - ->local_context.local_cert_chain_provision[0], + ->local_context.local_cert_chain_provision[context->connection_info.current_bank][0], ((libspdm_context_t *)spdm_context) ->local_context - .local_cert_chain_provision_size[0], + .local_cert_chain_provision_size[context->connection_info.current_bank][0], ptr); free(data); ptr += libspdm_get_hash_size(m_libspdm_use_hash_algo); @@ -384,9 +385,9 @@ static libspdm_return_t receive_message( &data_size, NULL, NULL); ((libspdm_context_t *)spdm_context) ->local_context - .local_cert_chain_provision_size[0] = data_size; + .local_cert_chain_provision_size[context->connection_info.current_bank][0] = data_size; ((libspdm_context_t *)spdm_context) - ->local_context.local_cert_chain_provision[0] = data; + ->local_context.local_cert_chain_provision[context->connection_info.current_bank][0] = data; ((libspdm_context_t *)spdm_context) ->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; ((libspdm_context_t *)spdm_context) @@ -408,10 +409,10 @@ static libspdm_return_t receive_message( m_libspdm_use_hash_algo, ((libspdm_context_t *)spdm_context) ->local_context - .local_cert_chain_provision[0], + .local_cert_chain_provision[context->connection_info.current_bank][0], ((libspdm_context_t *)spdm_context) ->local_context - .local_cert_chain_provision_size[0], + .local_cert_chain_provision_size[context->connection_info.current_bank][0], ptr); free(data); ptr += libspdm_get_hash_size(m_libspdm_use_hash_algo); @@ -536,9 +537,9 @@ static libspdm_return_t receive_message( &data_size, NULL, NULL); ((libspdm_context_t *)spdm_context) ->local_context - .local_cert_chain_provision_size[0] = data_size; + .local_cert_chain_provision_size[context->connection_info.current_bank][0] = data_size; ((libspdm_context_t *)spdm_context) - ->local_context.local_cert_chain_provision[0] = data; + ->local_context.local_cert_chain_provision[context->connection_info.current_bank][0] = data; ((libspdm_context_t *)spdm_context) ->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; ((libspdm_context_t *)spdm_context) @@ -560,10 +561,10 @@ static libspdm_return_t receive_message( m_libspdm_use_hash_algo, ((libspdm_context_t *)spdm_context) ->local_context - .local_cert_chain_provision[0], + .local_cert_chain_provision[context->connection_info.current_bank][0], ((libspdm_context_t *)spdm_context) ->local_context - .local_cert_chain_provision_size[0], + .local_cert_chain_provision_size[context->connection_info.current_bank][0], ptr); free(data); ptr += libspdm_get_hash_size(m_libspdm_use_hash_algo); @@ -616,9 +617,12 @@ static libspdm_return_t receive_message( m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[0] = + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[context->connection_info. + current_bank][0] = data_size; - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[0] = data; + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[context->connection_info. + current_bank] + [0] = data; ((libspdm_context_t*)spdm_context)->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; ((libspdm_context_t*)spdm_context)->connection_info.algorithm.base_hash_algo = @@ -638,9 +642,15 @@ static libspdm_return_t receive_message( spdm_response->header.param2 = (1 << 0); Ptr = (void *)(spdm_response + 1); libspdm_hash_all (m_libspdm_use_hash_algo, - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[ + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[context-> + connection_info. + current_bank][ 0], - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[ + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[context-> + connection_info + . + current_bank] + [ 0], Ptr); free(data); @@ -710,9 +720,12 @@ static libspdm_return_t receive_message( m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[0] = + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[context->connection_info. + current_bank][0] = data_size; - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[0] = data; + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[context->connection_info. + current_bank] + [0] = data; ((libspdm_context_t*)spdm_context)->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; ((libspdm_context_t*)spdm_context)->connection_info.algorithm.base_hash_algo = @@ -732,9 +745,15 @@ static libspdm_return_t receive_message( spdm_response->header.param2 = (1 << 0); Ptr = (void *)(spdm_response + 1); libspdm_hash_all (m_libspdm_use_hash_algo, - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[ + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[context-> + connection_info. + current_bank][ 0], - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[ + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[context-> + connection_info + . + current_bank] + [ 0], Ptr); free(data); @@ -784,9 +803,12 @@ static libspdm_return_t receive_message( m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[0] = + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[context->connection_info. + current_bank][0] = data_size; - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[0] = data; + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[context->connection_info. + current_bank] + [0] = data; ((libspdm_context_t*)spdm_context)->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; ((libspdm_context_t*)spdm_context)->connection_info.algorithm.base_hash_algo = @@ -806,9 +828,15 @@ static libspdm_return_t receive_message( spdm_response->header.param2 = (1 << 0); Ptr = (void *)(spdm_response + 1); libspdm_hash_all (m_libspdm_use_hash_algo, - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[ + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[context-> + connection_info. + current_bank][ 0], - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[ + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[context-> + connection_info + . + current_bank] + [ 0], Ptr); free(data); @@ -858,9 +886,12 @@ static libspdm_return_t receive_message( m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[0] = + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[context->connection_info. + current_bank][0] = data_size; - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[0] = data; + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[context->connection_info. + current_bank] + [0] = data; ((libspdm_context_t*)spdm_context)->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; ((libspdm_context_t*)spdm_context)->connection_info.algorithm.base_hash_algo = @@ -880,9 +911,15 @@ static libspdm_return_t receive_message( spdm_response->header.param2 = (1 << 1); /*wrong slot number*/ Ptr = (void *)(spdm_response + 1); libspdm_hash_all (m_libspdm_use_hash_algo, - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[ + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[context-> + connection_info. + current_bank][ 0], - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[ + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[context-> + connection_info + . + current_bank] + [ 0], Ptr); free(data); @@ -932,9 +969,12 @@ static libspdm_return_t receive_message( m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[0] = + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[context->connection_info. + current_bank][0] = data_size; - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[0] = data; + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[context->connection_info. + current_bank] + [0] = data; ((libspdm_context_t*)spdm_context)->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; ((libspdm_context_t*)spdm_context)->connection_info.algorithm.base_hash_algo = @@ -954,9 +994,15 @@ static libspdm_return_t receive_message( spdm_response->header.param2 = (1 << 0); Ptr = (void *)(spdm_response + 1); libspdm_hash_all (m_libspdm_use_hash_algo, - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[ + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[context-> + connection_info. + current_bank][ 0], - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[ + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[context-> + connection_info + . + current_bank] + [ 0], Ptr); free(data); @@ -1006,9 +1052,12 @@ static libspdm_return_t receive_message( m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[0] = + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[context->connection_info. + current_bank][0] = data_size; - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[0] = data; + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[context->connection_info. + current_bank] + [0] = data; ((libspdm_context_t*)spdm_context)->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; ((libspdm_context_t*)spdm_context)->connection_info.algorithm.base_hash_algo = @@ -1028,9 +1077,15 @@ static libspdm_return_t receive_message( spdm_response->header.param2 = (1 << 0); Ptr = (void *)(spdm_response + 1); libspdm_hash_all (m_libspdm_use_hash_algo, - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[ + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[context-> + connection_info. + current_bank][ 0], - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[ + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[context-> + connection_info + . + current_bank] + [ 0], Ptr); free(data); @@ -1083,9 +1138,12 @@ static libspdm_return_t receive_message( m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[0] = + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[context->connection_info. + current_bank][0] = data_size; - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[0] = data; + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[context->connection_info. + current_bank] + [0] = data; ((libspdm_context_t*)spdm_context)->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; ((libspdm_context_t*)spdm_context)->connection_info.algorithm.base_hash_algo = @@ -1105,9 +1163,15 @@ static libspdm_return_t receive_message( spdm_response->header.param2 = (1 << 0); Ptr = (void *)(spdm_response + 1); libspdm_hash_all (m_libspdm_use_hash_algo, - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[ + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[context-> + connection_info. + current_bank][ 0], - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[ + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[context-> + connection_info + . + current_bank] + [ 0], Ptr); free(data); @@ -1159,9 +1223,12 @@ static libspdm_return_t receive_message( m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[0] = + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[context->connection_info. + current_bank][0] = data_size; - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[0] = data; + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[context->connection_info. + current_bank] + [0] = data; ((libspdm_context_t*)spdm_context)->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; ((libspdm_context_t*)spdm_context)->connection_info.algorithm.base_hash_algo = @@ -1181,9 +1248,15 @@ static libspdm_return_t receive_message( spdm_response->header.param2 = (1 << 0); Ptr = (void *)(spdm_response + 1); libspdm_hash_all (m_libspdm_use_hash_algo, - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[ + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[context-> + connection_info. + current_bank][ 0], - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[ + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[context-> + connection_info + . + current_bank] + [ 0], Ptr); free(data); @@ -1271,9 +1344,12 @@ static libspdm_return_t receive_message( m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[0] = + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[context->connection_info. + current_bank][0] = data_size; - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[0] = data; + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[context->connection_info. + current_bank] + [0] = data; ((libspdm_context_t*)spdm_context)->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; ((libspdm_context_t*)spdm_context)->connection_info.algorithm.base_hash_algo = @@ -1293,9 +1369,15 @@ static libspdm_return_t receive_message( spdm_response->header.param2 = 0x71; /*multiple slot numbers */ ptr = (void *)(spdm_response + 1); libspdm_hash_all (m_libspdm_use_hash_algo, - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[ + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[context-> + connection_info. + current_bank][ 0], - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[ + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[context-> + connection_info + . + current_bank] + [ 0], ptr); free(data); @@ -1341,9 +1423,11 @@ static libspdm_return_t receive_message( m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - ((libspdm_context_t *)spdm_context)->local_context.local_cert_chain_provision_size[0] = + ((libspdm_context_t *)spdm_context)->local_context.local_cert_chain_provision_size[context->connection_info. + current_bank][0] = data_size; - ((libspdm_context_t *)spdm_context)->local_context.local_cert_chain_provision[0] = data; + ((libspdm_context_t *)spdm_context)->local_context.local_cert_chain_provision[context->connection_info. + current_bank][0] = data; ((libspdm_context_t *)spdm_context)->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; ((libspdm_context_t *)spdm_context)->connection_info.algorithm.base_hash_algo = @@ -1362,9 +1446,9 @@ static libspdm_return_t receive_message( ptr = (void *)(spdm_response + 1); libspdm_hash_all(m_libspdm_use_hash_algo, ((libspdm_context_t *)spdm_context) - ->local_context.local_cert_chain_provision[0], + ->local_context.local_cert_chain_provision[context->connection_info.current_bank][0], ((libspdm_context_t *)spdm_context) - ->local_context.local_cert_chain_provision_size[0], + ->local_context.local_cert_chain_provision_size[context->connection_info.current_bank][0], ptr); free(data); ptr += libspdm_get_hash_size(m_libspdm_use_hash_algo); @@ -1425,9 +1509,9 @@ static libspdm_return_t receive_message( &data_size, NULL, NULL); } ((libspdm_context_t *)spdm_context) - ->local_context.local_cert_chain_provision_size[slot_id] = data_size; + ->local_context.local_cert_chain_provision_size[context->connection_info.current_bank][slot_id] = data_size; ((libspdm_context_t *)spdm_context) - ->local_context.local_cert_chain_provision[slot_id] = data; + ->local_context.local_cert_chain_provision[context->connection_info.current_bank][slot_id] = data; ((libspdm_context_t *)spdm_context) ->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; ((libspdm_context_t *)spdm_context) @@ -1447,10 +1531,10 @@ static libspdm_return_t receive_message( libspdm_hash_all( m_libspdm_use_hash_algo, ((libspdm_context_t *)spdm_context) - ->local_context.local_cert_chain_provision[slot_id], + ->local_context.local_cert_chain_provision[context->connection_info.current_bank][slot_id], ((libspdm_context_t *)spdm_context) ->local_context - .local_cert_chain_provision_size[slot_id], + .local_cert_chain_provision_size[context->connection_info.current_bank][slot_id], ptr); free(data); ptr += libspdm_get_hash_size(m_libspdm_use_hash_algo); @@ -1587,9 +1671,12 @@ static libspdm_return_t receive_message( m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[0] = + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[context->connection_info. + current_bank][0] = data_size; - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[0] = data; + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[context->connection_info. + current_bank] + [0] = data; ((libspdm_context_t*)spdm_context)->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; ((libspdm_context_t*)spdm_context)->connection_info.algorithm.base_hash_algo = @@ -1610,9 +1697,15 @@ static libspdm_return_t receive_message( spdm_response->header.param2 = (1 << 0); Ptr = (void *)(spdm_response + 1); libspdm_hash_all (m_libspdm_use_hash_algo, - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[ + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[context-> + connection_info. + current_bank][ 0], - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[ + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[context-> + connection_info + . + current_bank] + [ 0], Ptr); free(data); @@ -1671,9 +1764,12 @@ static libspdm_return_t receive_message( m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[0] = + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[context->connection_info. + current_bank][0] = data_size; - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[0] = data; + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[context->connection_info. + current_bank] + [0] = data; ((libspdm_context_t*)spdm_context)->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; ((libspdm_context_t*)spdm_context)->connection_info.algorithm.base_hash_algo = @@ -1734,9 +1830,15 @@ static libspdm_return_t receive_message( spdm_response->header.param2 = (1 << 0); Ptr = (void *)(spdm_response + 1); libspdm_hash_all (m_libspdm_use_hash_algo, - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[ + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision[context-> + connection_info. + current_bank][ 0], - ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[ + ((libspdm_context_t*)spdm_context)->local_context.local_cert_chain_provision_size[context-> + connection_info + . + current_bank] + [ 0], Ptr); free(data); @@ -1786,9 +1888,9 @@ static libspdm_return_t receive_message( m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); ((libspdm_context_t *)spdm_context) - ->local_context.local_cert_chain_provision_size[0] = data_size; + ->local_context.local_cert_chain_provision_size[context->connection_info.current_bank][0] = data_size; ((libspdm_context_t *)spdm_context) - ->local_context.local_cert_chain_provision[0] = data; + ->local_context.local_cert_chain_provision[context->connection_info.current_bank][0] = data; ((libspdm_context_t *)spdm_context) ->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; ((libspdm_context_t *)spdm_context) @@ -1809,10 +1911,10 @@ static libspdm_return_t receive_message( libspdm_hash_all( m_libspdm_use_hash_algo, ((libspdm_context_t *)spdm_context) - ->local_context.local_cert_chain_provision[slot_id], + ->local_context.local_cert_chain_provision[context->connection_info.current_bank][slot_id], ((libspdm_context_t *)spdm_context) ->local_context - .local_cert_chain_provision_size[slot_id], + .local_cert_chain_provision_size[context->connection_info.current_bank][slot_id], ptr); free(data); ptr += libspdm_get_hash_size(m_libspdm_use_hash_algo); @@ -1867,9 +1969,9 @@ static libspdm_return_t receive_message( m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); ((libspdm_context_t *)spdm_context) - ->local_context.local_cert_chain_provision_size[0] = data_size; + ->local_context.local_cert_chain_provision_size[context->connection_info.current_bank][0] = data_size; ((libspdm_context_t *)spdm_context) - ->local_context.local_cert_chain_provision[0] = data; + ->local_context.local_cert_chain_provision[context->connection_info.current_bank][0] = data; ((libspdm_context_t *)spdm_context) ->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; ((libspdm_context_t *)spdm_context) @@ -1890,10 +1992,10 @@ static libspdm_return_t receive_message( libspdm_hash_all( m_libspdm_use_hash_algo, ((libspdm_context_t *)spdm_context) - ->local_context.local_cert_chain_provision[slot_id], + ->local_context.local_cert_chain_provision[context->connection_info.current_bank][slot_id], ((libspdm_context_t *)spdm_context) ->local_context - .local_cert_chain_provision_size[slot_id], + .local_cert_chain_provision_size[context->connection_info.current_bank][slot_id], ptr); free(data); ptr += libspdm_get_hash_size(m_libspdm_use_hash_algo); diff --git a/unit_test/test_spdm_requester/chunk_get.c b/unit_test/test_spdm_requester/chunk_get.c index f36fd312143..7acb71739e4 100644 --- a/unit_test/test_spdm_requester/chunk_get.c +++ b/unit_test/test_spdm_requester/chunk_get.c @@ -167,8 +167,9 @@ void libspdm_requester_chunk_get_test_case3_build_challenge_response( m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; *response_size = sizeof(spdm_challenge_auth_response_t) + @@ -184,8 +185,8 @@ void libspdm_requester_chunk_get_test_case3_build_challenge_response( ptr = (void*) (spdm_response + 1); libspdm_hash_all( m_libspdm_use_hash_algo, - spdm_context->local_context.local_cert_chain_provision[0], - spdm_context->local_context.local_cert_chain_provision_size[0], + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0], + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0], ptr); free(data); data = NULL; diff --git a/unit_test/test_spdm_requester/encap_certificate.c b/unit_test/test_spdm_requester/encap_certificate.c index 28dda602741..c39eacc6ed2 100644 --- a/unit_test/test_spdm_requester/encap_certificate.c +++ b/unit_test/test_spdm_requester/encap_certificate.c @@ -62,8 +62,9 @@ static void req_encap_certificate_case1(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT spdm_context->transcript.message_m.buffer_size = @@ -136,8 +137,9 @@ static void req_encap_certificate_case3(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; /* This tests considers only offset = 0, other tests vary offset value*/ m_spdm_get_certificate_request3.offset = 0; @@ -213,8 +215,9 @@ static void req_encap_certificate_case4(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; /* This tests considers only length = 0, other tests vary length value*/ m_spdm_get_certificate_request3.length = 0; @@ -298,8 +301,9 @@ static void req_encap_certificate_case5(void **state) m_libspdm_use_hash_algo, SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_RSASSA_2048, test_cases[i], &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; m_spdm_get_certificate_request3.offset = (uint16_t)(LIBSPDM_MIN(data_size - 1, 0xFFFF)); TEST_DEBUG_PRINT("data_size: %u\n", data_size); @@ -349,8 +353,8 @@ static void req_encap_certificate_case5(void **state) TEST_DEBUG_PRINT("\n"); - spdm_context->local_context.local_cert_chain_provision[0] = NULL; - spdm_context->local_context.local_cert_chain_provision_size[0] = 0; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = NULL; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = 0; free(data); } } @@ -385,8 +389,9 @@ static void req_encap_certificate_case6(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; /* This tests considers only length = 1*/ m_spdm_get_certificate_request3.length = 1; @@ -469,8 +474,9 @@ static void req_encap_certificate_case7(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT spdm_context->transcript.message_mut_b.buffer_size = 0; diff --git a/unit_test/test_spdm_requester/encap_challenge_auth.c b/unit_test/test_spdm_requester/encap_challenge_auth.c index 65a9c29bff4..2c9cc8c8499 100644 --- a/unit_test/test_spdm_requester/encap_challenge_auth.c +++ b/unit_test/test_spdm_requester/encap_challenge_auth.c @@ -82,8 +82,9 @@ static void req_encap_challenge_auth_case1(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_secret_lib_challenge_opaque_data_size = 0; libspdm_reset_message_mut_c(spdm_context); @@ -160,8 +161,9 @@ static void req_encap_challenge_auth_case3(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_secret_lib_challenge_opaque_data_size = 0; libspdm_reset_message_c(spdm_context); @@ -214,8 +216,9 @@ static void req_encap_challenge_auth_case4(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_secret_lib_challenge_opaque_data_size = 0; libspdm_reset_message_c(spdm_context); @@ -268,8 +271,9 @@ static void req_encap_challenge_auth_case5(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_secret_lib_challenge_opaque_data_size = 0; libspdm_reset_message_c(spdm_context); @@ -401,8 +405,9 @@ static void req_encap_challenge_auth_case7(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_reset_message_mut_c(spdm_context); #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT @@ -496,8 +501,9 @@ static void req_encap_challenge_auth_case8(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_reset_message_mut_c(spdm_context); #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT @@ -509,7 +515,7 @@ static void req_encap_challenge_auth_case8(void **state) * SlotID fields in CHALLENGE and CHALLENGE_AUTH shall not specify this certificate slot. */ slot_id = 0; m_spdm_challenge_request5.header.param1 = slot_id; - spdm_context->local_context.local_key_usage_bit_mask[slot_id] = + spdm_context->local_context.local_key_usage_bit_mask[spdm_context->connection_info.current_bank][slot_id] = SPDM_KEY_USAGE_BIT_MASK_KEY_EX_USE | SPDM_KEY_USAGE_BIT_MASK_MEASUREMENT_USE; diff --git a/unit_test/test_spdm_requester/encap_digests.c b/unit_test/test_spdm_requester/encap_digests.c index d090200bf54..d32b5a3bf49 100644 --- a/unit_test/test_spdm_requester/encap_digests.c +++ b/unit_test/test_spdm_requester/encap_digests.c @@ -49,8 +49,9 @@ static void req_encap_digests_case1(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - spdm_context->local_context.local_cert_chain_provision[0] = m_local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = + m_local_certificate_chain; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(m_local_certificate_chain); libspdm_set_mem(m_local_certificate_chain, sizeof(m_local_certificate_chain), (uint8_t)(0xFF)); @@ -106,8 +107,9 @@ static void req_encap_digests_case3(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - spdm_context->local_context.local_cert_chain_provision[0] = m_local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = + m_local_certificate_chain; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(m_local_certificate_chain); libspdm_set_mem(m_local_certificate_chain, sizeof(m_local_certificate_chain), (uint8_t)(0xFF)); @@ -157,8 +159,9 @@ static void req_encap_digests_case4(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - spdm_context->local_context.local_cert_chain_provision[0] = m_local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = + m_local_certificate_chain; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(m_local_certificate_chain); libspdm_set_mem(m_local_certificate_chain, sizeof(m_local_certificate_chain), (uint8_t)(0xFF)); @@ -207,8 +210,9 @@ static void req_encap_digests_case5(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - spdm_context->local_context.local_cert_chain_provision[0] = m_local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = + m_local_certificate_chain; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(m_local_certificate_chain); libspdm_set_mem(m_local_certificate_chain, sizeof(m_local_certificate_chain), (uint8_t)(0xFF)); @@ -308,10 +312,10 @@ static void req_encap_digests_case6(void **state) hash_size = libspdm_get_hash_size(m_libspdm_use_hash_algo); for (uint8_t index = 0; index < SPDM_MAX_SLOT_COUNT; index++) { - spdm_context->local_context.local_cert_chain_provision[index] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][index] = &m_local_certificate_chain[hash_size * index]; spdm_context->local_context - .local_cert_chain_provision_size[index] = hash_size; + .local_cert_chain_provision_size[spdm_context->connection_info.current_bank][index] = hash_size; } libspdm_set_mem(m_local_certificate_chain, sizeof(m_local_certificate_chain), (uint8_t)(0xFF)); @@ -359,13 +363,17 @@ static void req_encap_digests_case6(void **state) slot_count); for (uint8_t index = 0; index < SPDM_MAX_SLOT_COUNT; index++) { assert_memory_equal((void *)&key_pair_id[index], - (void *)&spdm_context->local_context.local_key_pair_id[index], + (void *)&spdm_context->local_context.local_key_pair_id[spdm_context->connection_info. + current_bank][ + index], sizeof(spdm_key_pair_id_t)); assert_memory_equal((void *)&cert_info[index], - (void *)&spdm_context->local_context.local_cert_info[index], + (void *)&spdm_context->local_context.local_cert_info[spdm_context->connection_info. + current_bank][index], sizeof(spdm_certificate_info_t)); assert_memory_equal((void *)&key_usage_bit_mask[index], - (void *)&spdm_context->local_context.local_key_usage_bit_mask[index], + (void *)&spdm_context->local_context.local_key_usage_bit_mask[spdm_context->connection_info. + current_bank][index], sizeof(spdm_key_usage_bit_mask_t)); } } diff --git a/unit_test/test_spdm_requester/encap_endpoint_info.c b/unit_test/test_spdm_requester/encap_endpoint_info.c index 0586eae5a96..6f33a4e35f8 100644 --- a/unit_test/test_spdm_requester/encap_endpoint_info.c +++ b/unit_test/test_spdm_requester/encap_endpoint_info.c @@ -104,8 +104,9 @@ static void req_encap_endpoint_info_case1(void **state) m_libspdm_use_req_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT spdm_context->connection_info.peer_used_cert_chain[0].buffer_size = data_size; libspdm_copy_mem(spdm_context->connection_info.peer_used_cert_chain[0].buffer, @@ -214,8 +215,9 @@ static void req_encap_endpoint_info_case2(void **state) libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_req_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision_size[1] = data_size; - spdm_context->local_context.local_cert_chain_provision[1] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][1] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][1] = data; #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT spdm_context->connection_info.peer_used_cert_chain[1].buffer_size = data_size; libspdm_copy_mem(spdm_context->connection_info.peer_used_cert_chain[1].buffer, @@ -467,8 +469,9 @@ static void req_encap_endpoint_info_case5(void **state) m_libspdm_use_req_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT spdm_context->connection_info.peer_used_cert_chain[0].buffer_size = data_size; libspdm_copy_mem(spdm_context->connection_info.peer_used_cert_chain[0].buffer, diff --git a/unit_test/test_spdm_requester/error_test/encap_endpoint_info_err.c b/unit_test/test_spdm_requester/error_test/encap_endpoint_info_err.c index 85a305b39d1..bf50230546f 100644 --- a/unit_test/test_spdm_requester/error_test/encap_endpoint_info_err.c +++ b/unit_test/test_spdm_requester/error_test/encap_endpoint_info_err.c @@ -404,7 +404,7 @@ void libspdm_test_requester_encap_endpoint_info_err_case6(void **state) /** * Test 7: Error case, signature was required - * but local_cert_chain_provision[slot_id] == NULL + * but local_cert_chain_provision[context->connection_info.current_bank][slot_id] == NULL * Expected Behavior: generate an ERROR_RESPONSE with code SPDM_ERROR_CODE_INVALID_REQUEST **/ void libspdm_test_requester_encap_endpoint_info_err_case7(void **state) @@ -429,10 +429,10 @@ void libspdm_test_requester_encap_endpoint_info_err_case7(void **state) session_info = NULL; - /* no initialization for spdm_context->local_context.local_cert_chain_provision */ + /* no initialization for spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank] */ for (int i = 0; i < SPDM_MAX_SLOT_COUNT; i++) { - spdm_context->local_context.local_cert_chain_provision_size[i] = 0; - spdm_context->local_context.local_cert_chain_provision[i] = NULL; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][i] = 0; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][i] = NULL; } libspdm_reset_message_encap_e(spdm_context, session_info); @@ -517,7 +517,7 @@ void libspdm_test_requester_encap_endpoint_info_err_case8(void **state) /** * Test 9: Error case, signature was required, multi_key_conn_rsp is set - * but local_key_usage_bit_mask[slot_id] not meet requirement + * but local_key_usage_bit_mask[context->connection_info.current_bank][slot_id] not meet requirement * Expected Behavior: generate an ERROR_RESPONSE with code SPDM_ERROR_CODE_INVALID_REQUEST **/ void libspdm_test_requester_encap_endpoint_info_err_case9(void **state) @@ -550,8 +550,9 @@ void libspdm_test_requester_encap_endpoint_info_err_case9(void **state) &data_size, NULL, NULL); for (int i = 0; i < SPDM_MAX_SLOT_COUNT; i++) { - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT spdm_context->connection_info.peer_used_cert_chain[0].buffer_size = data_size; libspdm_copy_mem(spdm_context->connection_info.peer_used_cert_chain[0].buffer, @@ -574,9 +575,9 @@ void libspdm_test_requester_encap_endpoint_info_err_case9(void **state) session_info = NULL; spdm_context->connection_info.multi_key_conn_rsp = true; - /* no initialization for spdm_context->local_context.local_key_usage_bit_mask */ + /* no initialization for spdm_context->local_context.local_key_usage_bit_mask[spdm_context->connection_info.current_bank] */ for (int i = 0; i < SPDM_MAX_SLOT_COUNT; i++) { - spdm_context->local_context.local_key_usage_bit_mask[i] = 0; + spdm_context->local_context.local_key_usage_bit_mask[spdm_context->connection_info.current_bank][i] = 0; } libspdm_reset_message_encap_e(spdm_context, session_info); @@ -670,12 +671,12 @@ int libspdm_req_encap_endpoint_info_error_test(void) cmocka_unit_test(libspdm_test_requester_encap_endpoint_info_err_case5), /* Request contains invalid slot_id */ cmocka_unit_test(libspdm_test_requester_encap_endpoint_info_err_case6), - /* Signature was required but local_cert_chain_provision[slot_id] == NULL */ + /* Signature was required but local_cert_chain_provision[context->connection_info.current_bank][slot_id] == NULL */ cmocka_unit_test(libspdm_test_requester_encap_endpoint_info_err_case7), /* Signature was required, slot_id == 0xF but local_public_key_provision == NULL */ cmocka_unit_test(libspdm_test_requester_encap_endpoint_info_err_case8), /* Signature was required, multi_key_conn_rsp is set but - * local_key_usage_bit_mask[slot_id] not meet requirement + * local_key_usage_bit_mask[context->connection_info.current_bank][slot_id] not meet requirement */ cmocka_unit_test(libspdm_test_requester_encap_endpoint_info_err_case9), /* Invalid sub_code */ diff --git a/unit_test/test_spdm_requester/finish.c b/unit_test/test_spdm_requester/finish.c index 1cde15dae49..723fc1e2f59 100644 --- a/unit_test/test_spdm_requester/finish.c +++ b/unit_test/test_spdm_requester/finish.c @@ -2906,9 +2906,9 @@ static void req_finish_case16(void **state) m_libspdm_use_req_asym_algo, &data, &data_size, &hash, &hash_size); spdm_context->local_context. - local_cert_chain_provision_size[req_slot_id_param] = data_size; + local_cert_chain_provision_size[spdm_context->connection_info.current_bank][req_slot_id_param] = data_size; spdm_context->local_context. - local_cert_chain_provision[req_slot_id_param] = data; + local_cert_chain_provision[spdm_context->connection_info.current_bank][req_slot_id_param] = data; session_id = 0xFFFFFFFF; session_info = &spdm_context->session_info[0]; @@ -3007,9 +3007,9 @@ static void req_finish_case17(void **state) m_libspdm_use_req_asym_algo, &data, &data_size, &hash, &hash_size); spdm_context->local_context. - local_cert_chain_provision_size[req_slot_id_param] = data_size; + local_cert_chain_provision_size[spdm_context->connection_info.current_bank][req_slot_id_param] = data_size; spdm_context->local_context. - local_cert_chain_provision[req_slot_id_param] = data; + local_cert_chain_provision[spdm_context->connection_info.current_bank][req_slot_id_param] = data; session_id = 0xFFFFFFFF; session_info = &spdm_context->session_info[0]; @@ -3104,9 +3104,9 @@ static void req_finish_case18(void **state) m_libspdm_use_req_asym_algo, &data, &data_size, &hash, &hash_size); spdm_context->local_context. - local_cert_chain_provision_size[req_slot_id_param] = data_size; + local_cert_chain_provision_size[spdm_context->connection_info.current_bank][req_slot_id_param] = data_size; spdm_context->local_context. - local_cert_chain_provision[req_slot_id_param] = data; + local_cert_chain_provision[spdm_context->connection_info.current_bank][req_slot_id_param] = data; session_id = 0xFFFFFFFF; session_info = &spdm_context->session_info[0]; @@ -3210,9 +3210,9 @@ static void req_finish_case20(void **state) m_libspdm_use_req_asym_algo, &data, &data_size, &hash, &hash_size); spdm_context->local_context. - local_cert_chain_provision_size[req_slot_id_param] = data_size; + local_cert_chain_provision_size[spdm_context->connection_info.current_bank][req_slot_id_param] = data_size; spdm_context->local_context. - local_cert_chain_provision[req_slot_id_param] = data; + local_cert_chain_provision[spdm_context->connection_info.current_bank][req_slot_id_param] = data; session_id = 0xFFFFFFFF; session_info = &spdm_context->session_info[0]; @@ -3394,9 +3394,9 @@ static void req_finish_case22(void **state) m_libspdm_use_req_asym_algo, &data, &data_size, &hash, &hash_size); spdm_context->local_context. - local_cert_chain_provision_size[req_slot_id_param] = data_size; + local_cert_chain_provision_size[spdm_context->connection_info.current_bank][req_slot_id_param] = data_size; spdm_context->local_context. - local_cert_chain_provision[req_slot_id_param] = data; + local_cert_chain_provision[spdm_context->connection_info.current_bank][req_slot_id_param] = data; session_id = 0xFFFFFFFF; session_info = &spdm_context->session_info[0]; diff --git a/unit_test/test_spdm_requester/get_certificate.c b/unit_test/test_spdm_requester/get_certificate.c index 0a19389ab2a..58c07d12051 100644 --- a/unit_test/test_spdm_requester/get_certificate.c +++ b/unit_test/test_spdm_requester/get_certificate.c @@ -193,6 +193,7 @@ static libspdm_return_t receive_message( void *spdm_context, size_t *response_size, void **response, uint64_t timeout) { libspdm_test_context_t *spdm_test_context; + libspdm_context_t *context = spdm_context; spdm_test_context = libspdm_get_test_context(); switch (spdm_test_context->case_id) { @@ -1788,9 +1789,9 @@ static libspdm_return_t receive_message( &data_size, NULL, NULL); } ((libspdm_context_t *)spdm_context) - ->local_context.local_cert_chain_provision_size[slot_id] = data_size; + ->local_context.local_cert_chain_provision_size[context->connection_info.current_bank][slot_id] = data_size; ((libspdm_context_t *)spdm_context) - ->local_context.local_cert_chain_provision[slot_id] = data; + ->local_context.local_cert_chain_provision[context->connection_info.current_bank][slot_id] = data; ((libspdm_context_t *)spdm_context) ->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; ((libspdm_context_t *)spdm_context) @@ -1810,10 +1811,10 @@ static libspdm_return_t receive_message( libspdm_hash_all( m_libspdm_use_hash_algo, ((libspdm_context_t *)spdm_context) - ->local_context.local_cert_chain_provision[slot_id], + ->local_context.local_cert_chain_provision[context->connection_info.current_bank][slot_id], ((libspdm_context_t *)spdm_context) ->local_context - .local_cert_chain_provision_size[slot_id], + .local_cert_chain_provision_size[context->connection_info.current_bank][slot_id], ptr); free(data); ptr += libspdm_get_hash_size(m_libspdm_use_hash_algo); diff --git a/unit_test/test_spdm_requester/get_digests.c b/unit_test/test_spdm_requester/get_digests.c index 841d247675a..9272dd2ccba 100644 --- a/unit_test/test_spdm_requester/get_digests.c +++ b/unit_test/test_spdm_requester/get_digests.c @@ -20,9 +20,9 @@ static uint8_t m_libspdm_local_buffer[LIBSPDM_MAX_MESSAGE_M1M2_BUFFER_SIZE]; static bool m_get_digest; -static spdm_key_usage_bit_mask_t m_local_key_usage_bit_mask[SPDM_MAX_SLOT_COUNT]; -static spdm_certificate_info_t m_local_cert_info[SPDM_MAX_SLOT_COUNT]; -static spdm_key_pair_id_t m_local_key_pair_id[SPDM_MAX_SLOT_COUNT]; +static spdm_key_usage_bit_mask_t m_local_key_usage_bit_mask[LIBSPDM_MAX_BANK_COUNT][SPDM_MAX_SLOT_COUNT]; +static spdm_certificate_info_t m_local_cert_info[LIBSPDM_MAX_BANK_COUNT][SPDM_MAX_SLOT_COUNT]; +static spdm_key_pair_id_t m_local_key_pair_id[LIBSPDM_MAX_BANK_COUNT][SPDM_MAX_SLOT_COUNT]; static libspdm_return_t send_message( void *spdm_context, size_t request_size, const void *request, uint64_t timeout) @@ -101,6 +101,7 @@ static libspdm_return_t receive_message( void *spdm_context, size_t *response_size, void **response, uint64_t timeout) { libspdm_test_context_t *spdm_test_context; + libspdm_context_t *context = spdm_context; spdm_test_context = libspdm_get_test_context(); switch (spdm_test_context->case_id) { @@ -1029,9 +1030,9 @@ static libspdm_return_t receive_message( libspdm_hash_all(m_libspdm_use_hash_algo, m_libspdm_local_certificate_chain, sizeof(m_libspdm_local_certificate_chain), &digest[hash_size * index]); - key_pair_id[index] = m_local_key_pair_id[index]; - cert_info[index] = m_local_cert_info[index]; - key_usage_bit_mask[index] = m_local_key_usage_bit_mask[index]; + key_pair_id[index] = m_local_key_pair_id[context->connection_info.current_bank][index]; + cert_info[index] = m_local_cert_info[context->connection_info.current_bank][index]; + key_usage_bit_mask[index] = m_local_key_usage_bit_mask[context->connection_info.current_bank][index]; spdm_response->header.param1 |= (1 << index); spdm_response->header.param2 |= (1 << index); @@ -1084,9 +1085,9 @@ static libspdm_return_t receive_message( /* Set Digest KeyUsageMask and CertificateInfo to 0*/ libspdm_zero_mem (digest, hash_size * slot_count); - key_pair_id[0] = m_local_key_pair_id[0]; - cert_info[0] = m_local_cert_info[0]; - key_usage_bit_mask[0] = m_local_key_usage_bit_mask[0]; + key_pair_id[0] = m_local_key_pair_id[context->connection_info.current_bank][0]; + cert_info[0] = m_local_cert_info[context->connection_info.current_bank][0]; + key_usage_bit_mask[0] = m_local_key_usage_bit_mask[context->connection_info.current_bank][0]; spdm_response->header.param1 |= (1 << 0); spdm_response->header.param2 |= (1 << 0); @@ -1139,18 +1140,18 @@ static libspdm_return_t receive_message( libspdm_zero_mem (digest, hash_size * slot_count); libspdm_hash_all(m_libspdm_use_hash_algo, m_libspdm_local_certificate_chain, sizeof(m_libspdm_local_certificate_chain), &digest[hash_size * 0]); - key_pair_id[0] = m_local_key_pair_id[0]; - cert_info[0] = m_local_cert_info[0]; - key_usage_bit_mask[0] = m_local_key_usage_bit_mask[0]; + key_pair_id[0] = m_local_key_pair_id[context->connection_info.current_bank][0]; + cert_info[0] = m_local_cert_info[context->connection_info.current_bank][0]; + key_usage_bit_mask[0] = m_local_key_usage_bit_mask[context->connection_info.current_bank][0]; spdm_response->header.param1 |= (1 << 0); spdm_response->header.param2 |= (1 << 0); libspdm_hash_all(m_libspdm_use_hash_algo, m_libspdm_local_certificate_chain, sizeof(m_libspdm_local_certificate_chain), &digest[hash_size * 1]); - key_pair_id[1] = m_local_key_pair_id[1]; - cert_info[1] = m_local_cert_info[1]; - key_usage_bit_mask[1] = m_local_key_usage_bit_mask[1]; + key_pair_id[1] = m_local_key_pair_id[context->connection_info.current_bank][1]; + cert_info[1] = m_local_cert_info[context->connection_info.current_bank][1]; + key_usage_bit_mask[1] = m_local_key_usage_bit_mask[context->connection_info.current_bank][1]; spdm_response->header.param1 |= (1 << 1); spdm_response->header.param2 |= (1 << 1); @@ -1751,37 +1752,39 @@ static void req_get_digests_case27(void **state) spdm_context->connection_info.multi_key_conn_rsp = true; libspdm_reset_message_d(spdm_context); - m_local_key_pair_id[0] = 0x00; - m_local_cert_info[0] = SPDM_CERTIFICATE_INFO_CERT_MODEL_DEVICE_CERT; - m_local_key_usage_bit_mask[0] = SPDM_KEY_USAGE_BIT_MASK_KEY_EX_USE; + m_local_key_pair_id[spdm_context->connection_info.current_bank][0] = 0x00; + m_local_cert_info[spdm_context->connection_info.current_bank][0] = SPDM_CERTIFICATE_INFO_CERT_MODEL_DEVICE_CERT; + m_local_key_usage_bit_mask[spdm_context->connection_info.current_bank][0] = SPDM_KEY_USAGE_BIT_MASK_KEY_EX_USE; - m_local_key_pair_id[1] = 0x01; - m_local_cert_info[1] = SPDM_CERTIFICATE_INFO_CERT_MODEL_ALIAS_CERT; - m_local_key_usage_bit_mask[1] = SPDM_KEY_USAGE_BIT_MASK_CHALLENGE_USE; + m_local_key_pair_id[spdm_context->connection_info.current_bank][1] = 0x01; + m_local_cert_info[spdm_context->connection_info.current_bank][1] = SPDM_CERTIFICATE_INFO_CERT_MODEL_ALIAS_CERT; + m_local_key_usage_bit_mask[spdm_context->connection_info.current_bank][1] = SPDM_KEY_USAGE_BIT_MASK_CHALLENGE_USE; - m_local_key_pair_id[2] = 0x02; - m_local_cert_info[2] = SPDM_CERTIFICATE_INFO_CERT_MODEL_GENERIC_CERT; - m_local_key_usage_bit_mask[2] = SPDM_KEY_USAGE_BIT_MASK_MEASUREMENT_USE; + m_local_key_pair_id[spdm_context->connection_info.current_bank][2] = 0x02; + m_local_cert_info[spdm_context->connection_info.current_bank][2] = SPDM_CERTIFICATE_INFO_CERT_MODEL_GENERIC_CERT; + m_local_key_usage_bit_mask[spdm_context->connection_info.current_bank][2] = SPDM_KEY_USAGE_BIT_MASK_MEASUREMENT_USE; - m_local_key_pair_id[3] = 0x03; - m_local_cert_info[3] = SPDM_CERTIFICATE_INFO_CERT_MODEL_DEVICE_CERT; - m_local_key_usage_bit_mask[3] = SPDM_KEY_USAGE_BIT_MASK_ENDPOINT_INFO_USE; + m_local_key_pair_id[spdm_context->connection_info.current_bank][3] = 0x03; + m_local_cert_info[spdm_context->connection_info.current_bank][3] = SPDM_CERTIFICATE_INFO_CERT_MODEL_DEVICE_CERT; + m_local_key_usage_bit_mask[spdm_context->connection_info.current_bank][3] = + SPDM_KEY_USAGE_BIT_MASK_ENDPOINT_INFO_USE; - m_local_key_pair_id[4] = 0x04; - m_local_cert_info[4] = SPDM_CERTIFICATE_INFO_CERT_MODEL_DEVICE_CERT; - m_local_key_usage_bit_mask[4] = SPDM_KEY_USAGE_BIT_MASK_STANDARDS_KEY_USE; + m_local_key_pair_id[spdm_context->connection_info.current_bank][4] = 0x04; + m_local_cert_info[spdm_context->connection_info.current_bank][4] = SPDM_CERTIFICATE_INFO_CERT_MODEL_DEVICE_CERT; + m_local_key_usage_bit_mask[spdm_context->connection_info.current_bank][4] = + SPDM_KEY_USAGE_BIT_MASK_STANDARDS_KEY_USE; - m_local_key_pair_id[5] = 0x05; - m_local_cert_info[5] = SPDM_CERTIFICATE_INFO_CERT_MODEL_GENERIC_CERT; - m_local_key_usage_bit_mask[5] = SPDM_KEY_USAGE_BIT_MASK_VENDOR_KEY_USE; + m_local_key_pair_id[spdm_context->connection_info.current_bank][5] = 0x05; + m_local_cert_info[spdm_context->connection_info.current_bank][5] = SPDM_CERTIFICATE_INFO_CERT_MODEL_GENERIC_CERT; + m_local_key_usage_bit_mask[spdm_context->connection_info.current_bank][5] = SPDM_KEY_USAGE_BIT_MASK_VENDOR_KEY_USE; - m_local_key_pair_id[6] = 0x06; - m_local_cert_info[6] = SPDM_CERTIFICATE_INFO_CERT_MODEL_GENERIC_CERT; - m_local_key_usage_bit_mask[6] = SPDM_KEY_USAGE_BIT_MASK_VENDOR_KEY_USE; + m_local_key_pair_id[spdm_context->connection_info.current_bank][6] = 0x06; + m_local_cert_info[spdm_context->connection_info.current_bank][6] = SPDM_CERTIFICATE_INFO_CERT_MODEL_GENERIC_CERT; + m_local_key_usage_bit_mask[spdm_context->connection_info.current_bank][6] = SPDM_KEY_USAGE_BIT_MASK_VENDOR_KEY_USE; - m_local_key_pair_id[7] = 0x07; - m_local_cert_info[7] = SPDM_CERTIFICATE_INFO_CERT_MODEL_GENERIC_CERT; - m_local_key_usage_bit_mask[7] = SPDM_KEY_USAGE_BIT_MASK_VENDOR_KEY_USE; + m_local_key_pair_id[spdm_context->connection_info.current_bank][7] = 0x07; + m_local_cert_info[spdm_context->connection_info.current_bank][7] = SPDM_CERTIFICATE_INFO_CERT_MODEL_GENERIC_CERT; + m_local_key_usage_bit_mask[spdm_context->connection_info.current_bank][7] = SPDM_KEY_USAGE_BIT_MASK_VENDOR_KEY_USE; slot_count = SPDM_MAX_SLOT_COUNT; additional_size = sizeof(spdm_key_pair_id_t) + sizeof(spdm_certificate_info_t) + @@ -1796,13 +1799,13 @@ static void req_get_digests_case27(void **state) sizeof(spdm_digest_response_t) + (additional_size + hash_size) * slot_count); for (uint8_t index = 0; index < SPDM_MAX_SLOT_COUNT; index++) { - assert_memory_equal((void *)&m_local_key_pair_id[index], + assert_memory_equal((void *)&m_local_key_pair_id[spdm_context->connection_info.current_bank][index], (void *)&spdm_context->connection_info.peer_key_pair_id[index], sizeof(spdm_key_pair_id_t)); - assert_memory_equal((void *)&m_local_cert_info[index], + assert_memory_equal((void *)&m_local_cert_info[spdm_context->connection_info.current_bank][index], (void *)&spdm_context->connection_info.peer_cert_info[index], sizeof(spdm_key_pair_id_t)); - assert_memory_equal((void *)&m_local_key_usage_bit_mask[index], + assert_memory_equal((void *)&m_local_key_usage_bit_mask[spdm_context->connection_info.current_bank][index], (void *)&spdm_context->connection_info.peer_key_usage_bit_mask[index], sizeof(spdm_key_pair_id_t)); } @@ -1846,18 +1849,19 @@ static void req_get_digests_case28(void **state) libspdm_reset_message_d(spdm_context); /* Sub Case 1: Set KeyUsageMask to 0*/ - m_local_key_pair_id[0] = 0x00; - m_local_cert_info[0] = SPDM_CERTIFICATE_INFO_CERT_MODEL_DEVICE_CERT; - m_local_key_usage_bit_mask[0] = 0; + m_local_key_pair_id[spdm_context->connection_info.current_bank][0] = 0x00; + m_local_cert_info[spdm_context->connection_info.current_bank][0] = SPDM_CERTIFICATE_INFO_CERT_MODEL_DEVICE_CERT; + m_local_key_usage_bit_mask[spdm_context->connection_info.current_bank][0] = 0; libspdm_zero_mem(total_digest_buffer, sizeof(total_digest_buffer)); status = libspdm_get_digest(spdm_context, NULL, &slot_mask, &total_digest_buffer); assert_int_equal(status, LIBSPDM_STATUS_INVALID_MSG_FIELD); /* Sub Case 2: Set CertificateInfo to SPDM_CERTIFICATE_INFO_CERT_MODEL_GENERIC_CERT*/ - m_local_key_pair_id[0] = 0x00; - m_local_cert_info[0] = SPDM_CERTIFICATE_INFO_CERT_MODEL_GENERIC_CERT; - m_local_key_usage_bit_mask[0] = SPDM_KEY_USAGE_BIT_MASK_ENDPOINT_INFO_USE; + m_local_key_pair_id[spdm_context->connection_info.current_bank][0] = 0x00; + m_local_cert_info[spdm_context->connection_info.current_bank][0] = SPDM_CERTIFICATE_INFO_CERT_MODEL_GENERIC_CERT; + m_local_key_usage_bit_mask[spdm_context->connection_info.current_bank][0] = + SPDM_KEY_USAGE_BIT_MASK_ENDPOINT_INFO_USE; libspdm_zero_mem(total_digest_buffer, sizeof(total_digest_buffer)); status = libspdm_get_digest(spdm_context, NULL, &slot_mask, &total_digest_buffer); @@ -1898,15 +1902,17 @@ static void req_get_digests_case29(void **state) spdm_context->connection_info.multi_key_conn_rsp = true; libspdm_reset_message_d(spdm_context); - m_local_key_pair_id[0] = 0x00; - m_local_cert_info[0] = SPDM_CERTIFICATE_INFO_CERT_MODEL_DEVICE_CERT; - m_local_key_usage_bit_mask[0] = SPDM_KEY_USAGE_BIT_MASK_ENDPOINT_INFO_USE; + m_local_key_pair_id[spdm_context->connection_info.current_bank][0] = 0x00; + m_local_cert_info[spdm_context->connection_info.current_bank][0] = SPDM_CERTIFICATE_INFO_CERT_MODEL_DEVICE_CERT; + m_local_key_usage_bit_mask[spdm_context->connection_info.current_bank][0] = + SPDM_KEY_USAGE_BIT_MASK_ENDPOINT_INFO_USE; /* CertModel:Value of 0 indicates either that the certificate slot does not contain any certificates or that the corresponding * MULTI_KEY_CONN_REQ or MULTI_KEY_CONN_RSP is false. */ - m_local_key_pair_id[1] = 0x01; - m_local_cert_info[1] = SPDM_CERTIFICATE_INFO_CERT_MODEL_NONE; - m_local_key_usage_bit_mask[1] = SPDM_KEY_USAGE_BIT_MASK_ENDPOINT_INFO_USE; + m_local_key_pair_id[spdm_context->connection_info.current_bank][1] = 0x01; + m_local_cert_info[spdm_context->connection_info.current_bank][1] = SPDM_CERTIFICATE_INFO_CERT_MODEL_NONE; + m_local_key_usage_bit_mask[spdm_context->connection_info.current_bank][1] = + SPDM_KEY_USAGE_BIT_MASK_ENDPOINT_INFO_USE; libspdm_zero_mem(total_digest_buffer, sizeof(total_digest_buffer)); status = libspdm_get_digest(spdm_context, NULL, &slot_mask, &total_digest_buffer); diff --git a/unit_test/test_spdm_requester/get_encapsulated_request.c b/unit_test/test_spdm_requester/get_encapsulated_request.c index 5e191fa5e41..350ce2d2522 100644 --- a/unit_test/test_spdm_requester/get_encapsulated_request.c +++ b/unit_test/test_spdm_requester/get_encapsulated_request.c @@ -1042,8 +1042,9 @@ static void req_get_encapsulated_request_case8(void **State) &hash, &hash_size)) { assert(false); } - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_reset_message_a(spdm_context); spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; @@ -1103,8 +1104,9 @@ static void req_get_encapsulated_request_case9(void **State) &hash, &hash_size)) { assert(false); } - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_reset_message_a(spdm_context); spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; @@ -1239,8 +1241,9 @@ static void req_get_encapsulated_request_case13(void **State) m_libspdm_use_req_asym_algo, &data, &data_size, &hash, &hash_size); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_reset_message_a(spdm_context); libspdm_reset_message_encap_e(spdm_context, NULL); @@ -1293,8 +1296,8 @@ static void req_get_encapsulated_request_case14(void **State) spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCAP_CAP; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP; - spdm_context->local_context.local_cert_chain_provision[0] = NULL; - spdm_context->local_context.local_cert_chain_provision_size[0] = 0; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = NULL; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = 0; if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, @@ -1352,8 +1355,8 @@ static void req_get_encapsulated_request_case15(void **State) spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCAP_CAP; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP; - spdm_context->local_context.local_cert_chain_provision[0] = NULL; - spdm_context->local_context.local_cert_chain_provision_size[0] = 0; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = NULL; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = 0; if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, diff --git a/unit_test/test_spdm_responder/certificate.c b/unit_test/test_spdm_responder/certificate.c index 4195335aa10..33cf8dd5642 100644 --- a/unit_test/test_spdm_responder/certificate.c +++ b/unit_test/test_spdm_responder/certificate.c @@ -69,8 +69,9 @@ static void rsp_certificate_case1(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT spdm_context->transcript.message_m.buffer_size = @@ -130,8 +131,9 @@ static void rsp_certificate_case3(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; response_size = sizeof(response); status = libspdm_get_response_certificate( @@ -174,8 +176,9 @@ static void rsp_certificate_case4(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; response_size = sizeof(response); status = libspdm_get_response_certificate( @@ -220,8 +223,9 @@ static void rsp_certificate_case5(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; response_size = sizeof(response); status = libspdm_get_response_certificate( @@ -270,8 +274,9 @@ static void rsp_certificate_case6(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; response_size = sizeof(response); @@ -322,8 +327,9 @@ static void rsp_certificate_case7(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; /* This tests considers only offset = 0, other tests vary offset value*/ m_libspdm_get_certificate_request3.offset = 0; @@ -396,8 +402,9 @@ static void rsp_certificate_case8(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; /* This tests considers only length = 1, other tests vary length value*/ m_libspdm_get_certificate_request3.length = 1; @@ -489,8 +496,9 @@ static void rsp_certificate_case9(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; /* Setting up offset values at the boundary of certificate length*/ test_sizes[0] += (uint16_t)(test_sizes[0] + data_size); @@ -596,8 +604,9 @@ static void rsp_certificate_case10(void **state) m_libspdm_use_hash_algo, SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_RSASSA_2048, test_cases[i], &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; m_libspdm_get_certificate_request3.offset = (uint16_t)(LIBSPDM_MIN(data_size - 1, 0xFFFF)); TEST_LIBSPDM_DEBUG_PRINT("data_size: %u\n", data_size); @@ -650,8 +659,8 @@ static void rsp_certificate_case10(void **state) TEST_LIBSPDM_DEBUG_PRINT("\n"); - spdm_context->local_context.local_cert_chain_provision[0] = NULL; - spdm_context->local_context.local_cert_chain_provision_size[0] = 0; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = NULL; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = 0; free(data); } } @@ -700,8 +709,9 @@ static void rsp_certificate_case11(void **state) libspdm_read_responder_public_certificate_chain_by_size( m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, test_cases[i], &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; TEST_LIBSPDM_DEBUG_PRINT("data_size: %u\n", data_size); TEST_LIBSPDM_DEBUG_PRINT("m_libspdm_get_certificate_request3.offset: %u\n", @@ -786,8 +796,9 @@ static void rsp_certificate_case12(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; /* This tests considers only length = 1*/ m_libspdm_get_certificate_request3.length = 1; @@ -876,8 +887,9 @@ static void rsp_certificate_case13(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT /*filling buffer B with arbitrary data*/ @@ -953,8 +965,9 @@ static void rsp_certificate_case14(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT session_info->session_transcript.message_m.buffer_size = @@ -1023,8 +1036,9 @@ static void rsp_certificate_case15(void **state) &data_size, NULL, NULL); assert_true(ret); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; spdm_cert_request = (spdm_get_certificate_request_t *) request; @@ -1083,8 +1097,9 @@ static void rsp_certificate_case16(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; m_libspdm_get_certificate_request3.offset = 0; m_libspdm_get_certificate_request3.length = 0; @@ -1130,8 +1145,9 @@ static void rsp_certificate_case17(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; response_size = sizeof(response); status = libspdm_get_response_certificate( @@ -1226,8 +1242,9 @@ static void rsp_certificate_case19(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; /* Responder needs to be reset before certificate can be retrieved from specified SlotID. */ m_libspdm_get_certificate_request5.header.param1 = slot_id; diff --git a/unit_test/test_spdm_responder/challenge_auth.c b/unit_test/test_spdm_responder/challenge_auth.c index 9c99f54038d..5c64282de72 100644 --- a/unit_test/test_spdm_responder/challenge_auth.c +++ b/unit_test/test_spdm_responder/challenge_auth.c @@ -90,8 +90,9 @@ static void rsp_challenge_auth_case1(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_secret_lib_challenge_opaque_data_size = 0; libspdm_reset_message_c(spdm_context); @@ -168,8 +169,9 @@ static void rsp_challenge_auth_case3(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_secret_lib_challenge_opaque_data_size = 0; libspdm_reset_message_c(spdm_context); @@ -224,8 +226,9 @@ static void rsp_challenge_auth_case4(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_secret_lib_challenge_opaque_data_size = 0; libspdm_reset_message_c(spdm_context); @@ -282,8 +285,9 @@ static void rsp_challenge_auth_case5(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_secret_lib_challenge_opaque_data_size = 0; libspdm_reset_message_c(spdm_context); @@ -344,8 +348,9 @@ static void rsp_challenge_auth_case6(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_secret_lib_challenge_opaque_data_size = 0; libspdm_reset_message_c(spdm_context); @@ -398,8 +403,9 @@ static void rsp_challenge_auth_case7(void **state) { m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_secret_lib_challenge_opaque_data_size = 0; libspdm_reset_message_c(spdm_context); @@ -452,8 +458,9 @@ static void rsp_challenge_auth_case8(void **state) { m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_secret_lib_challenge_opaque_data_size = 0; libspdm_reset_message_c(spdm_context); @@ -508,8 +515,9 @@ static void rsp_challenge_auth_case9(void **state) { m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[1] = data1; - spdm_context->local_context.local_cert_chain_provision_size[1] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][1] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][1] = + data_size1; libspdm_secret_lib_challenge_opaque_data_size = 0; libspdm_reset_message_c(spdm_context); @@ -528,7 +536,8 @@ static void rsp_challenge_auth_case9(void **state) { slot_mask = 0; for (index = 0; index < SPDM_MAX_SLOT_COUNT; index++) { - if (spdm_context->local_context.local_cert_chain_provision[index] != NULL) { + if (spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][index] != + NULL) { slot_mask |= (1 << index); } } @@ -571,14 +580,17 @@ static void rsp_challenge_auth_case10(void **state) { m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - /*clear local_cert_chain_provision*/ + /*clear local_cert_chain_provision[context->connection_info.current_bank]*/ for (index = 0; index local_context.local_cert_chain_provision[index] = NULL; - spdm_context->local_context.local_cert_chain_provision_size[index] = 0; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][index] = + NULL; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][index] = + 0; } - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_secret_lib_challenge_opaque_data_size = 0; libspdm_reset_message_c(spdm_context); @@ -631,8 +643,9 @@ static void rsp_challenge_auth_case11(void **state) { m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_secret_lib_challenge_opaque_data_size = 8; libspdm_reset_message_c(spdm_context); @@ -688,8 +701,9 @@ static void rsp_challenge_auth_case12(void **state) { m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_secret_lib_challenge_opaque_data_size = 0; libspdm_reset_message_c(spdm_context); @@ -747,8 +761,9 @@ static void rsp_challenge_auth_case13(void **state) { m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_secret_lib_challenge_opaque_data_size = 0; libspdm_reset_message_c(spdm_context); @@ -807,8 +822,9 @@ static void rsp_challenge_auth_case14(void **state) { m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_secret_lib_challenge_opaque_data_size = 0; libspdm_reset_message_c(spdm_context); @@ -862,8 +878,9 @@ static void rsp_challenge_auth_case15(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_secret_lib_challenge_opaque_data_size = 0; libspdm_reset_message_c(spdm_context); @@ -1060,8 +1077,9 @@ static void rsp_challenge_auth_case18(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_secret_lib_challenge_opaque_data_size = 0; libspdm_reset_message_c(spdm_context); #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT @@ -1148,8 +1166,9 @@ static void rsp_challenge_auth_case19(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_secret_lib_challenge_opaque_data_size = 0; libspdm_reset_message_c(spdm_context); @@ -1162,7 +1181,7 @@ static void rsp_challenge_auth_case19(void **state) * SlotID fields in CHALLENGE and CHALLENGE_AUTH shall not specify this certificate slot. */ slot_id = 0; m_libspdm_challenge_request8.header.param1 = slot_id; - spdm_context->local_context.local_key_usage_bit_mask[slot_id] = + spdm_context->local_context.local_key_usage_bit_mask[spdm_context->connection_info.current_bank][slot_id] = SPDM_KEY_USAGE_BIT_MASK_KEY_EX_USE | SPDM_KEY_USAGE_BIT_MASK_MEASUREMENT_USE; diff --git a/unit_test/test_spdm_responder/digests.c b/unit_test/test_spdm_responder/digests.c index eee38f32db1..89e1574130b 100644 --- a/unit_test/test_spdm_responder/digests.c +++ b/unit_test/test_spdm_responder/digests.c @@ -48,8 +48,9 @@ static void rsp_digests_case1(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - spdm_context->local_context.local_cert_chain_provision[0] = m_libspdm_local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = + m_libspdm_local_certificate_chain; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(m_libspdm_local_certificate_chain); libspdm_set_mem(m_libspdm_local_certificate_chain, sizeof(m_libspdm_local_certificate_chain), @@ -108,8 +109,9 @@ static void rsp_digests_case3(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - spdm_context->local_context.local_cert_chain_provision[0] = m_libspdm_local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = + m_libspdm_local_certificate_chain; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(m_libspdm_local_certificate_chain); libspdm_set_mem(m_libspdm_local_certificate_chain, sizeof(m_libspdm_local_certificate_chain), @@ -151,8 +153,9 @@ static void rsp_digests_case4(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - spdm_context->local_context.local_cert_chain_provision[0] = m_libspdm_local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = + m_libspdm_local_certificate_chain; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(m_libspdm_local_certificate_chain); libspdm_set_mem(m_libspdm_local_certificate_chain, sizeof(m_libspdm_local_certificate_chain), @@ -196,8 +199,9 @@ static void rsp_digests_case5(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - spdm_context->local_context.local_cert_chain_provision[0] = m_libspdm_local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = + m_libspdm_local_certificate_chain; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(m_libspdm_local_certificate_chain); libspdm_set_mem(m_libspdm_local_certificate_chain, sizeof(m_libspdm_local_certificate_chain), @@ -245,8 +249,9 @@ static void rsp_digests_case6(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NOT_STARTED; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - spdm_context->local_context.local_cert_chain_provision[0] = m_libspdm_local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = + m_libspdm_local_certificate_chain; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(m_libspdm_local_certificate_chain); libspdm_set_mem(m_libspdm_local_certificate_chain, sizeof(m_libspdm_local_certificate_chain), @@ -289,9 +294,10 @@ static void rsp_digests_case7(void **state) spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; for (index = 0; index < SPDM_MAX_SLOT_COUNT; index++) { - spdm_context->local_context.local_cert_chain_provision[index] = NULL; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][index] = + NULL; spdm_context->local_context - .local_cert_chain_provision_size[index] = 0; + .local_cert_chain_provision_size[spdm_context->connection_info.current_bank][index] = 0; } response_size = sizeof(response); @@ -331,8 +337,9 @@ static void rsp_digests_case8(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - spdm_context->local_context.local_cert_chain_provision[0] = m_libspdm_local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = + m_libspdm_local_certificate_chain; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(m_libspdm_local_certificate_chain); session_id = 0xFFFFFFFF; @@ -395,8 +402,9 @@ static void rsp_digests_case9(void **state) spdm_context->last_spdm_request_session_id_valid = false; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - spdm_context->local_context.local_cert_chain_provision[0] = m_libspdm_local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = + m_libspdm_local_certificate_chain; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(m_libspdm_local_certificate_chain); libspdm_set_mem(m_libspdm_local_certificate_chain, sizeof(m_libspdm_local_certificate_chain), @@ -488,9 +496,10 @@ static void rsp_digests_case10(void **state) spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; for (uint8_t index = 0; index < SPDM_MAX_SLOT_COUNT; index++) { - spdm_context->local_context.local_cert_chain_provision[index] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][index] = &m_libspdm_local_certificate_chain[hash_size *index]; - spdm_context->local_context.local_cert_chain_provision_size[index] = hash_size; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][index] = + hash_size; } libspdm_set_mem(m_libspdm_local_certificate_chain, @@ -530,13 +539,17 @@ static void rsp_digests_case10(void **state) slot_count); for (uint8_t index = 0; index < SPDM_MAX_SLOT_COUNT; index++) { assert_memory_equal((void *)&key_pair_id[index], - (void *)&spdm_context->local_context.local_key_pair_id[index], + (void *)&spdm_context->local_context.local_key_pair_id[spdm_context->connection_info. + current_bank][ + index], sizeof(spdm_key_pair_id_t)); assert_memory_equal((void *)&cert_info[index], - (void *)&spdm_context->local_context.local_cert_info[index], + (void *)&spdm_context->local_context.local_cert_info[spdm_context->connection_info. + current_bank][index], sizeof(spdm_certificate_info_t)); assert_memory_equal((void *)&key_usage_bit_mask[index], - (void *)&spdm_context->local_context.local_key_usage_bit_mask[index], + (void *)&spdm_context->local_context.local_key_usage_bit_mask[spdm_context->connection_info. + current_bank][index], sizeof(spdm_key_usage_bit_mask_t)); } } diff --git a/unit_test/test_spdm_responder/encap_challenge.c b/unit_test/test_spdm_responder/encap_challenge.c index aa84582570d..65c53cfa751 100644 --- a/unit_test/test_spdm_responder/encap_challenge.c +++ b/unit_test/test_spdm_responder/encap_challenge.c @@ -151,8 +151,9 @@ static void rsp_encap_challenge_case2(void **state) #endif spdm_context->encap_context.req_slot_id = 0; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; response_size = sizeof(spdm_error_response_t); spdm_response = (void *)temp_buf; @@ -219,8 +220,9 @@ static void rsp_encap_challenge_case3(void **state) #endif spdm_context->encap_context.req_slot_id = 0; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; response_size = sizeof(spdm_error_response_t); spdm_response = (void *)temp_buf; @@ -286,8 +288,9 @@ static void rsp_encap_challenge_case4(void **state) #endif spdm_context->encap_context.req_slot_id = 0; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; response_size = sizeof(spdm_error_response_t); spdm_response = (void *)temp_buf; diff --git a/unit_test/test_spdm_responder/encapsulated_request.c b/unit_test/test_spdm_responder/encapsulated_request.c index 1de3a325f91..043bb704657 100644 --- a/unit_test/test_spdm_responder/encapsulated_request.c +++ b/unit_test/test_spdm_responder/encapsulated_request.c @@ -71,8 +71,9 @@ static void rsp_encapsulated_request_case1(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; libspdm_reset_message_b(spdm_context); @@ -137,8 +138,9 @@ static void rsp_encapsulated_request_case2(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; libspdm_reset_message_b(spdm_context); @@ -201,8 +203,9 @@ static void rsp_encapsulated_request_case3(void **State) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - spdm_context->local_context.local_cert_chain_provision[0] = m_local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = + m_local_certificate_chain; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(m_local_certificate_chain); libspdm_set_mem(m_local_certificate_chain, sizeof(m_local_certificate_chain), (uint8_t)(0xFF)); spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << @@ -247,8 +250,9 @@ static void rsp_encapsulated_request_case4(void **State) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - spdm_context->local_context.local_cert_chain_provision[0] = m_local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = + m_local_certificate_chain; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(m_local_certificate_chain); libspdm_set_mem(m_local_certificate_chain, sizeof(m_local_certificate_chain), (uint8_t)(0xFF)); spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << @@ -305,8 +309,9 @@ static void rsp_encapsulated_request_case5(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; libspdm_reset_message_b(spdm_context); @@ -371,8 +376,9 @@ static void rsp_encapsulated_request_case6(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; libspdm_reset_message_b(spdm_context); @@ -431,8 +437,9 @@ static void rsp_encapsulated_request_case7(void **State) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - spdm_context->local_context.local_cert_chain_provision[0] = m_local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = + m_local_certificate_chain; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(m_local_certificate_chain); libspdm_set_mem(m_local_certificate_chain, sizeof(m_local_certificate_chain), 0xFF); @@ -502,8 +509,9 @@ static void rsp_encapsulated_request_case8(void **State) m_libspdm_use_req_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; spdm_context->connection_info.algorithm.req_base_asym_alg = m_libspdm_use_req_asym_algo; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; spdm_context->get_endpoint_info_callback = get_endpoint_info_callback_encap_response; @@ -599,8 +607,9 @@ static void rsp_encapsulated_response_ack_case1(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; libspdm_reset_message_b(spdm_context); @@ -688,8 +697,9 @@ static void rsp_encapsulated_response_ack_case2(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; libspdm_reset_message_b(spdm_context); @@ -776,8 +786,9 @@ static void rsp_encapsulated_response_ack_case3(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; @@ -915,8 +926,9 @@ static void rsp_encapsulated_response_ack_case6(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; @@ -975,8 +987,9 @@ static void rsp_encapsulated_response_ack_case7(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; libspdm_reset_message_b(spdm_context); @@ -1068,8 +1081,9 @@ static void rsp_encapsulated_response_ack_case8(void **State) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; libspdm_reset_message_b(spdm_context); diff --git a/unit_test/test_spdm_responder/end_session_ack.c b/unit_test/test_spdm_responder/end_session_ack.c index 28dc692c18c..62a1577c66a 100644 --- a/unit_test/test_spdm_responder/end_session_ack.c +++ b/unit_test/test_spdm_responder/end_session_ack.c @@ -57,8 +57,9 @@ static void rsp_end_session_ack_case1(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -116,8 +117,9 @@ static void rsp_end_session_ack_case2(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -178,8 +180,9 @@ static void rsp_end_session_ack_case3(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -241,8 +244,9 @@ static void rsp_end_session_ack_case4(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -306,8 +310,9 @@ static void rsp_end_session_ack_case5(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -374,8 +379,9 @@ static void rsp_end_session_ack_case6(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -435,8 +441,9 @@ static void rsp_end_session_ack_case7(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -514,8 +521,9 @@ static void rsp_end_session_ack_case8(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); diff --git a/unit_test/test_spdm_responder/endpoint_info.c b/unit_test/test_spdm_responder/endpoint_info.c index a8a2abe8cd0..0774a3f04f8 100644 --- a/unit_test/test_spdm_responder/endpoint_info.c +++ b/unit_test/test_spdm_responder/endpoint_info.c @@ -106,9 +106,10 @@ static void rsp_endpoint_info_case1(void **state) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); for (int i = 0; i < SPDM_MAX_SLOT_COUNT; i++) { - spdm_context->local_context.local_key_pair_id[i] = 1; - spdm_context->local_context.local_cert_chain_provision_size[i] = data_size; - spdm_context->local_context.local_cert_chain_provision[i] = data; + spdm_context->local_context.local_key_pair_id[spdm_context->connection_info.current_bank][i] = 1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][i] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][i] = data; } #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT spdm_context->connection_info.peer_used_cert_chain[0].buffer_size = data_size; @@ -313,13 +314,14 @@ static void rsp_endpoint_info_case3(void **state) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); for (int i = 0; i < SPDM_MAX_SLOT_COUNT; i++) { - spdm_context->local_context.local_key_pair_id[i] = 1; - spdm_context->local_context.local_cert_chain_provision_size[i] = data_size; - spdm_context->local_context.local_cert_chain_provision[i] = data; + spdm_context->local_context.local_key_pair_id[spdm_context->connection_info.current_bank][i] = 1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][i] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][i] = data; } spdm_context->connection_info.multi_key_conn_rsp = true; - spdm_context->local_context.local_key_usage_bit_mask[1] = + spdm_context->local_context.local_key_usage_bit_mask[spdm_context->connection_info.current_bank][1] = SPDM_KEY_USAGE_BIT_MASK_ENDPOINT_INFO_USE; #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT @@ -499,9 +501,10 @@ static void rsp_endpoint_info_case5(void **state) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); for (int i = 0; i < SPDM_MAX_SLOT_COUNT; i++) { - spdm_context->local_context.local_key_pair_id[i] = 1; - spdm_context->local_context.local_cert_chain_provision_size[i] = data_size; - spdm_context->local_context.local_cert_chain_provision[i] = data; + spdm_context->local_context.local_key_pair_id[spdm_context->connection_info.current_bank][i] = 1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][i] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][i] = data; } #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT spdm_context->connection_info.peer_used_cert_chain[0].buffer_size = data_size; diff --git a/unit_test/test_spdm_responder/error_test/endpoint_info_err.c b/unit_test/test_spdm_responder/error_test/endpoint_info_err.c index e29b62d2112..7a7cc31d00a 100644 --- a/unit_test/test_spdm_responder/error_test/endpoint_info_err.c +++ b/unit_test/test_spdm_responder/error_test/endpoint_info_err.c @@ -651,7 +651,7 @@ void libspdm_test_responder_endpoint_info_err_case10(void **state) /** * Test 11: Error case, signature was required - * but local_cert_chain_provision[slot_id] == NULL + * but local_cert_chain_provision[context->connection_info.current_bank][slot_id] == NULL * Expected Behavior: generate an ERROR_RESPONSE with code SPDM_ERROR_CODE_INVALID_REQUEST **/ void libspdm_test_responder_endpoint_info_err_case11(void **state) @@ -678,10 +678,10 @@ void libspdm_test_responder_endpoint_info_err_case11(void **state) spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; session_info = NULL; - /* no initialization for spdm_context->local_context.local_cert_chain_provision */ + /* no initialization for spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank] */ for (int i = 0; i < SPDM_MAX_SLOT_COUNT; i++) { - spdm_context->local_context.local_cert_chain_provision_size[i] = 0; - spdm_context->local_context.local_cert_chain_provision[i] = NULL; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][i] = 0; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][i] = NULL; } libspdm_reset_message_e(spdm_context, session_info); @@ -768,7 +768,7 @@ void libspdm_test_responder_endpoint_info_err_case12(void **state) /** * Test 13: Error case, signature was required, multi_key_conn_rsp is set - * but local_key_usage_bit_mask[slot_id] not meet requirement + * but local_key_usage_bit_mask[context->connection_info.current_bank][slot_id] not meet requirement * Expected Behavior: generate an ERROR_RESPONSE with code SPDM_ERROR_CODE_INVALID_REQUEST **/ void libspdm_test_responder_endpoint_info_err_case13(void **state) @@ -801,13 +801,14 @@ void libspdm_test_responder_endpoint_info_err_case13(void **state) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); for (int i = 0; i < SPDM_MAX_SLOT_COUNT; i++) { - spdm_context->local_context.local_cert_chain_provision_size[i] = data_size; - spdm_context->local_context.local_cert_chain_provision[i] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][i] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][i] = data; } spdm_context->connection_info.multi_key_conn_rsp = true; - /* no initialization for spdm_context->local_context.local_key_usage_bit_mask */ - spdm_context->local_context.local_key_usage_bit_mask[1] = 0; + /* no initialization for spdm_context->local_context.local_key_usage_bit_mask[spdm_context->connection_info.current_bank] */ + spdm_context->local_context.local_key_usage_bit_mask[spdm_context->connection_info.current_bank][1] = 0; #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT spdm_context->connection_info.peer_used_cert_chain[1].buffer_size = data_size; diff --git a/unit_test/test_spdm_responder/finish_rsp.c b/unit_test/test_spdm_responder/finish_rsp.c index ca78dfbb90b..838b92e32d7 100644 --- a/unit_test/test_spdm_responder/finish_rsp.c +++ b/unit_test/test_spdm_responder/finish_rsp.c @@ -131,8 +131,9 @@ void rsp_finish_rsp_case1(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -240,8 +241,9 @@ void rsp_finish_rsp_case3(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -344,8 +346,9 @@ void rsp_finish_rsp_case4(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -450,8 +453,9 @@ void rsp_finish_rsp_case5(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -561,8 +565,9 @@ void rsp_finish_rsp_case6(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -657,8 +662,9 @@ void rsp_finish_rsp_case7(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -786,8 +792,9 @@ void rsp_finish_rsp_case8(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); g_key_exchange_start_mut_auth = SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED; @@ -934,8 +941,9 @@ void rsp_finish_rsp_case9(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -1037,8 +1045,9 @@ void rsp_finish_rsp_case10(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -1134,8 +1143,9 @@ void rsp_finish_rsp_case11(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -1220,8 +1230,9 @@ void rsp_finish_rsp_case12(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -1321,8 +1332,9 @@ void rsp_finish_rsp_case14(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -1430,8 +1442,9 @@ void rsp_finish_rsp_case15(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); g_key_exchange_start_mut_auth = SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED; @@ -1574,8 +1587,9 @@ void rsp_finish_rsp_case16(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); g_key_exchange_start_mut_auth = SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED; @@ -1707,8 +1721,9 @@ void rsp_finish_rsp_case17(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -1955,8 +1970,9 @@ void rsp_finish_rsp_case19(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); g_key_exchange_start_mut_auth = SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED; @@ -2108,8 +2124,9 @@ void rsp_finish_rsp_case20(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); g_key_exchange_start_mut_auth = SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED_WITH_ENCAP_REQUEST; @@ -2257,8 +2274,9 @@ void rsp_finish_rsp_case21(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -2365,8 +2383,9 @@ void rsp_finish_rsp_case22(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); g_key_exchange_start_mut_auth = SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED; @@ -2516,8 +2535,9 @@ void rsp_finish_rsp_case23(void** state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; spdm_context->spdm_10_11_verify_signature_endian = LIBSPDM_SPDM_10_11_VERIFY_SIGNATURE_ENDIAN_LITTLE_ONLY; @@ -2671,8 +2691,9 @@ void rsp_finish_rsp_case24(void** state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; spdm_context->spdm_10_11_verify_signature_endian = LIBSPDM_SPDM_10_11_VERIFY_SIGNATURE_ENDIAN_BIG_ONLY; @@ -2827,8 +2848,9 @@ void rsp_finish_rsp_case25(void** state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; spdm_context->spdm_10_11_verify_signature_endian = LIBSPDM_SPDM_10_11_VERIFY_SIGNATURE_ENDIAN_BIG_OR_LITTLE; @@ -2981,8 +3003,9 @@ void rsp_finish_rsp_case26(void** state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; spdm_context->spdm_10_11_verify_signature_endian = LIBSPDM_SPDM_10_11_VERIFY_SIGNATURE_ENDIAN_LITTLE_ONLY; @@ -3140,8 +3163,9 @@ void rsp_finish_rsp_case27(void** state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; spdm_context->spdm_10_11_verify_signature_endian = LIBSPDM_SPDM_10_11_VERIFY_SIGNATURE_ENDIAN_BIG_ONLY; @@ -3299,8 +3323,9 @@ void rsp_finish_rsp_case28(void** state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; spdm_context->spdm_10_11_verify_signature_endian = LIBSPDM_SPDM_10_11_VERIFY_SIGNATURE_ENDIAN_LITTLE_ONLY; @@ -3455,8 +3480,9 @@ void rsp_finish_rsp_case29(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -3561,8 +3587,9 @@ void rsp_finish_rsp_case30(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -3687,8 +3714,8 @@ void rsp_finish_rsp_case31(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = data_size1; libspdm_reset_message_a(spdm_context); diff --git a/unit_test/test_spdm_responder/heartbeat_ack.c b/unit_test/test_spdm_responder/heartbeat_ack.c index 36835f67eae..5d21376cfb2 100644 --- a/unit_test/test_spdm_responder/heartbeat_ack.c +++ b/unit_test/test_spdm_responder/heartbeat_ack.c @@ -52,8 +52,9 @@ static void rsp_heartbeat_ack_case1(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -112,8 +113,9 @@ static void rsp_heartbeat_ack_case2(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -174,8 +176,9 @@ static void rsp_heartbeat_ack_case3(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -237,8 +240,9 @@ static void rsp_heartbeat_ack_case4(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -302,8 +306,9 @@ static void rsp_heartbeat_ack_case5(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -370,8 +375,9 @@ static void rsp_heartbeat_ack_case6(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -431,8 +437,9 @@ static void rsp_heartbeat_ack_case7(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); diff --git a/unit_test/test_spdm_responder/key_exchange_rsp.c b/unit_test/test_spdm_responder/key_exchange_rsp.c index 2867d56e4c0..771ec18dfcd 100644 --- a/unit_test/test_spdm_responder/key_exchange_rsp.c +++ b/unit_test/test_spdm_responder/key_exchange_rsp.c @@ -134,8 +134,9 @@ static void rsp_key_exchange_rsp_case1(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -214,8 +215,9 @@ static void rsp_key_exchange_rsp_case2(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -287,8 +289,9 @@ static void rsp_key_exchange_rsp_case3(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -361,8 +364,9 @@ static void rsp_key_exchange_rsp_case4(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -437,8 +441,9 @@ static void rsp_key_exchange_rsp_case5(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -517,8 +522,9 @@ static void rsp_key_exchange_rsp_case6(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -589,8 +595,9 @@ static void rsp_key_exchange_rsp_case7(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT @@ -694,8 +701,9 @@ static void rsp_key_exchange_rsp_case8(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -801,8 +809,9 @@ static void rsp_key_exchange_rsp_case9(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -906,8 +915,9 @@ static void rsp_key_exchange_rsp_case10(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -989,8 +999,9 @@ static void rsp_key_exchange_rsp_case11(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -1163,8 +1174,9 @@ static void rsp_key_exchange_rsp_case15(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -1259,8 +1271,9 @@ static void rsp_key_exchange_rsp_case16(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -1355,8 +1368,9 @@ static void rsp_key_exchange_rsp_case17(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -1438,8 +1452,9 @@ static void rsp_key_exchange_rsp_case18(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -1517,8 +1532,9 @@ static void rsp_key_exchange_rsp_case19(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -1641,8 +1657,9 @@ static void rsp_key_exchange_rsp_case20(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -1734,8 +1751,9 @@ static void rsp_key_exchange_rsp_case21(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -1743,7 +1761,7 @@ static void rsp_key_exchange_rsp_case21(void **state) * the SlotID fields in KEY_EXCHANGE and KEY_EXCHANGE_RSP shall not specify this certificate slot */ slot_id = 0; m_libspdm_key_exchange_request10.header.param2 = slot_id; - spdm_context->local_context.local_key_usage_bit_mask[slot_id] = + spdm_context->local_context.local_key_usage_bit_mask[spdm_context->connection_info.current_bank][slot_id] = SPDM_KEY_USAGE_BIT_MASK_CHALLENGE_USE | SPDM_KEY_USAGE_BIT_MASK_MEASUREMENT_USE; @@ -1828,8 +1846,9 @@ static void rsp_key_exchange_rsp_case22(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -1913,8 +1932,9 @@ static void rsp_key_exchange_rsp_case23(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); g_key_exchange_start_mut_auth = SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED; @@ -1995,8 +2015,9 @@ static void rsp_key_exchange_rsp_case24(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); g_key_exchange_start_mut_auth = SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED; @@ -2090,8 +2111,9 @@ static void rsp_key_exchange_rsp_case25(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); diff --git a/unit_test/test_spdm_responder/measurements.c b/unit_test/test_spdm_responder/measurements.c index d0748a4294d..83652a43c74 100644 --- a/unit_test/test_spdm_responder/measurements.c +++ b/unit_test/test_spdm_responder/measurements.c @@ -1032,8 +1032,9 @@ static void rsp_measurements_case18(void **state) measurment_sig_size = SPDM_NONCE_SIZE + sizeof(uint16_t) + 0 + libspdm_get_asym_signature_size(m_libspdm_use_asym_algo); for (int i = 0; i < SPDM_MAX_SLOT_COUNT; i++) { - spdm_context->local_context.local_cert_chain_provision_size[i] = data_size; - spdm_context->local_context.local_cert_chain_provision[i] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][i] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][i] = data; } response_size = sizeof(response); @@ -1453,8 +1454,9 @@ static void rsp_measurements_case26(void **state) measurment_sig_size = SPDM_NONCE_SIZE + sizeof(uint16_t) + 0 + libspdm_get_asym_signature_size(m_libspdm_use_asym_algo); for (int i = 0; i < SPDM_MAX_SLOT_COUNT; i++) { - spdm_context->local_context.local_cert_chain_provision_size[i] = data_size; - spdm_context->local_context.local_cert_chain_provision[i] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][i] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][i] = data; } response_size = sizeof(response); @@ -1531,8 +1533,9 @@ static void rsp_measurements_case27(void **state) libspdm_secret_lib_meas_opaque_data_size + libspdm_get_asym_signature_size(m_libspdm_use_asym_algo); for (int i = 0; i < SPDM_MAX_SLOT_COUNT; i++) { - spdm_context->local_context.local_cert_chain_provision_size[i] = data_size; - spdm_context->local_context.local_cert_chain_provision[i] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][i] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][i] = data; } response_size = sizeof(response); @@ -2492,8 +2495,9 @@ static void rsp_measurements_case36(void **state) m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); for (int i = 0; i < SPDM_MAX_SLOT_COUNT; i++) { - spdm_context->local_context.local_cert_chain_provision_size[i] = data_size; - spdm_context->local_context.local_cert_chain_provision[i] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][i] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][i] = data; } spdm_request = (void *)request; @@ -2506,7 +2510,7 @@ static void rsp_measurements_case36(void **state) * the SlotID fields in GET_MEASUREMENTS and MEASUREMENTS shall not specify this certificate slot. */ slot_id = 0; spdm_request->slot_id_param = slot_id; - spdm_context->local_context.local_key_usage_bit_mask[slot_id] = + spdm_context->local_context.local_key_usage_bit_mask[spdm_context->connection_info.current_bank][slot_id] = SPDM_KEY_USAGE_BIT_MASK_KEY_EX_USE | SPDM_KEY_USAGE_BIT_MASK_CHALLENGE_USE; requester_context = ((uint8_t *)spdm_request) + sizeof(spdm_get_measurements_request_t); diff --git a/unit_test/test_spdm_responder/psk_exchange_rsp.c b/unit_test/test_spdm_responder/psk_exchange_rsp.c index 642694fe4ef..cece19ded29 100644 --- a/unit_test/test_spdm_responder/psk_exchange_rsp.c +++ b/unit_test/test_spdm_responder/psk_exchange_rsp.c @@ -149,8 +149,9 @@ static void rsp_psk_exchange_rsp_case1(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -224,8 +225,9 @@ static void rsp_psk_exchange_rsp_case2(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -291,8 +293,9 @@ static void rsp_psk_exchange_rsp_case3(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -359,8 +362,9 @@ static void rsp_psk_exchange_rsp_case4(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -429,8 +433,9 @@ static void rsp_psk_exchange_rsp_case5(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -503,8 +508,9 @@ static void rsp_psk_exchange_rsp_case6(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -569,8 +575,9 @@ static void rsp_psk_exchange_rsp_case7(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -664,8 +671,9 @@ static void rsp_psk_exchange_rsp_case8(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -751,8 +759,9 @@ static void rsp_psk_exchange_rsp_case9(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -840,8 +849,9 @@ static void rsp_psk_exchange_rsp_case10(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -948,8 +958,9 @@ static void rsp_psk_exchange_rsp_case11(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -1051,8 +1062,9 @@ static void rsp_psk_exchange_rsp_case12(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -1136,8 +1148,9 @@ static void rsp_psk_exchange_rsp_case13(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -1212,8 +1225,9 @@ static void rsp_psk_exchange_rsp_case14(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -1288,8 +1302,9 @@ static void rsp_psk_exchange_rsp_case15(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -1367,8 +1382,9 @@ static void rsp_psk_exchange_rsp_case16(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -1441,8 +1457,9 @@ static void rsp_psk_exchange_rsp_case17(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -1540,8 +1557,8 @@ static void rsp_psk_exchange_rsp_case18(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = data_size1; libspdm_reset_message_a(spdm_context); diff --git a/unit_test/test_spdm_responder/psk_finish_rsp.c b/unit_test/test_spdm_responder/psk_finish_rsp.c index e8b6a91425a..3c3bc64a087 100644 --- a/unit_test/test_spdm_responder/psk_finish_rsp.c +++ b/unit_test/test_spdm_responder/psk_finish_rsp.c @@ -99,8 +99,9 @@ static void rsp_psk_finish_rsp_case1(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -189,8 +190,9 @@ static void rsp_psk_finish_rsp_case2(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -282,8 +284,9 @@ static void rsp_psk_finish_rsp_case3(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -378,8 +381,9 @@ static void rsp_psk_finish_rsp_case4(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -476,8 +480,9 @@ static void rsp_psk_finish_rsp_case5(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -579,8 +584,9 @@ static void rsp_psk_finish_rsp_case6(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -667,8 +673,9 @@ static void rsp_psk_finish_rsp_case7(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -782,8 +789,9 @@ static void rsp_psk_finish_rsp_case8(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; spdm_context->transcript.message_a.buffer_size = 0; @@ -877,8 +885,9 @@ static void rsp_psk_finish_rsp_case9(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; spdm_context->transcript.message_a.buffer_size = 0; @@ -969,8 +978,9 @@ static void rsp_psk_finish_rsp_case10(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; spdm_context->transcript.message_a.buffer_size = 0; @@ -1054,8 +1064,9 @@ static void rsp_psk_finish_rsp_case11(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; spdm_context->transcript.message_a.buffer_size = 0; @@ -1143,8 +1154,9 @@ static void rsp_psk_finish_rsp_case12(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; spdm_context->transcript.message_a.buffer_size = 0; @@ -1239,8 +1251,9 @@ static void rsp_psk_finish_rsp_case13(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; spdm_context->transcript.message_a.buffer_size = 0; @@ -1333,8 +1346,9 @@ static void rsp_psk_finish_rsp_case14(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -1431,8 +1445,9 @@ static void rsp_psk_finish_rsp_case15(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); @@ -1535,8 +1550,9 @@ static void rsp_psk_finish_rsp_case16(void **state) libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data1, &data_size1, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data1; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data1; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size1; libspdm_reset_message_a(spdm_context); diff --git a/unit_test/test_spdm_responder/receive_send.c b/unit_test/test_spdm_responder/receive_send.c index 0688e402d9f..e777c221a83 100644 --- a/unit_test/test_spdm_responder/receive_send.c +++ b/unit_test/test_spdm_responder/receive_send.c @@ -92,8 +92,9 @@ void libspdm_test_responder_receive_send_rsp_case1(void** state) &data_size, &hash, &hash_size); - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; libspdm_reset_message_m(spdm_context, NULL); @@ -373,8 +374,9 @@ void libspdm_test_responder_receive_send_rsp_case4(void** state) &data_size, &hash, &hash_size); - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; - spdm_context->local_context.local_cert_chain_provision[0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; libspdm_reset_message_m(spdm_context, NULL); diff --git a/unit_test/test_spdm_responder/respond_if_ready.c b/unit_test/test_spdm_responder/respond_if_ready.c index 24768e2f9d9..03d61caaf32 100644 --- a/unit_test/test_spdm_responder/respond_if_ready.c +++ b/unit_test/test_spdm_responder/respond_if_ready.c @@ -306,8 +306,9 @@ static void rsp_respond_if_ready_case1(void **state) { spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - spdm_context->local_context.local_cert_chain_provision[0] = m_libspdm_local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = + m_libspdm_local_certificate_chain; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(m_libspdm_local_certificate_chain); libspdm_set_mem (m_libspdm_local_certificate_chain, sizeof(m_libspdm_local_certificate_chain), (uint8_t)(0xFF)); @@ -381,8 +382,9 @@ static void rsp_respond_if_ready_case2(void **state) { m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; spdm_context->last_spdm_request_size = m_libspdm_get_certificate_request_size; libspdm_copy_mem(spdm_context->last_spdm_request, @@ -459,8 +461,9 @@ static void rsp_respond_if_ready_case3(void **state) { m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; libspdm_secret_lib_challenge_opaque_data_size = 0; @@ -621,8 +624,9 @@ static void rsp_respond_if_ready_case5(void **state) { m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; m_libspdm_key_exchange_request.req_session_id = 0xFFFF; m_libspdm_key_exchange_request.reserved = 0; @@ -742,8 +746,9 @@ static void rsp_respond_if_ready_case6(void **state) { m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; session_id = 0xFFFFFFFF; spdm_context->latest_session_id = session_id; @@ -856,8 +861,9 @@ static void rsp_respond_if_ready_case7(void **state) { m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; m_libspdm_psk_exchange_request.psk_hint_length = (uint16_t)sizeof(LIBSPDM_TEST_PSK_HINT_STRING); m_libspdm_psk_exchange_request.requester_context_length = LIBSPDM_PSK_CONTEXT_LENGTH; @@ -966,8 +972,9 @@ static void rsp_respond_if_ready_case8(void **state) { m_libspdm_use_asym_algo, &data, &data_size, NULL, NULL); - spdm_context->local_context.local_cert_chain_provision[0] = data; - spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = data; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = + data_size; session_id = 0xFFFFFFFF; spdm_context->latest_session_id = session_id; @@ -1066,8 +1073,9 @@ static void rsp_respond_if_ready_case10(void **state) { spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - spdm_context->local_context.local_cert_chain_provision[0] = m_libspdm_local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = + m_libspdm_local_certificate_chain; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(m_libspdm_local_certificate_chain); libspdm_set_mem (m_libspdm_local_certificate_chain, sizeof(m_libspdm_local_certificate_chain), (uint8_t)(0xFF)); @@ -1129,8 +1137,9 @@ static void rsp_respond_if_ready_case11(void **state) { spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - spdm_context->local_context.local_cert_chain_provision[0] = m_libspdm_local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = + m_libspdm_local_certificate_chain; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(m_libspdm_local_certificate_chain); libspdm_set_mem (m_libspdm_local_certificate_chain, sizeof(m_libspdm_local_certificate_chain), (uint8_t)(0xFF)); @@ -1194,8 +1203,9 @@ static void rsp_respond_if_ready_case12(void **state) { spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - spdm_context->local_context.local_cert_chain_provision[0] = m_libspdm_local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = + m_libspdm_local_certificate_chain; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(m_libspdm_local_certificate_chain); libspdm_set_mem (m_libspdm_local_certificate_chain, sizeof(m_libspdm_local_certificate_chain), (uint8_t)(0xFF)); @@ -1262,8 +1272,9 @@ static void rsp_respond_if_ready_case13(void **state) { spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - spdm_context->local_context.local_cert_chain_provision[0] = m_libspdm_local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = + m_libspdm_local_certificate_chain; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(m_libspdm_local_certificate_chain); libspdm_set_mem (m_libspdm_local_certificate_chain, sizeof(m_libspdm_local_certificate_chain), (uint8_t)(0xFF)); @@ -1323,8 +1334,9 @@ static void rsp_respond_if_ready_case14(void **state) { spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - spdm_context->local_context.local_cert_chain_provision[0] = m_libspdm_local_certificate_chain; - spdm_context->local_context.local_cert_chain_provision_size[0] = + spdm_context->local_context.local_cert_chain_provision[spdm_context->connection_info.current_bank][0] = + m_libspdm_local_certificate_chain; + spdm_context->local_context.local_cert_chain_provision_size[spdm_context->connection_info.current_bank][0] = sizeof(m_libspdm_local_certificate_chain); libspdm_set_mem (m_libspdm_local_certificate_chain, sizeof(m_libspdm_local_certificate_chain), (uint8_t)(0xFF));