@@ -63,14 +63,16 @@ bool libspdm_verify_finish_rsp_hmac(libspdm_context_t *spdm_context,
6363 }
6464
6565 if (session_info -> mut_auth_requested != 0 ) {
66- slot_id = spdm_context -> connection_info . local_used_cert_chain_slot_id ;
66+ slot_id = session_info -> local_used_cert_chain_slot_id ;
6767 LIBSPDM_ASSERT ((slot_id < SPDM_MAX_SLOT_COUNT ) || (slot_id == 0xFF ));
6868 if (slot_id == 0xFF ) {
6969 result = libspdm_get_local_public_key_buffer (
7070 spdm_context , (const void * * )& mut_cert_chain_buffer , & mut_cert_chain_buffer_size );
7171 } else {
72- result = libspdm_get_local_cert_chain_buffer (
73- spdm_context , (const void * * )& mut_cert_chain_buffer , & mut_cert_chain_buffer_size );
72+ libspdm_get_local_cert_chain_buffer (
73+ spdm_context , slot_id , (const void * * )& mut_cert_chain_buffer ,
74+ & mut_cert_chain_buffer_size );
75+ result = true;
7476 }
7577 if (!result ) {
7678 return false;
@@ -158,14 +160,16 @@ bool libspdm_generate_finish_req_hmac(libspdm_context_t *spdm_context,
158160 }
159161
160162 if (session_info -> mut_auth_requested != 0 ) {
161- slot_id = spdm_context -> connection_info . local_used_cert_chain_slot_id ;
163+ slot_id = session_info -> local_used_cert_chain_slot_id ;
162164 LIBSPDM_ASSERT ((slot_id < SPDM_MAX_SLOT_COUNT ) || (slot_id == 0xFF ));
163165 if (slot_id == 0xFF ) {
164166 result = libspdm_get_local_public_key_buffer (
165167 spdm_context , (const void * * )& mut_cert_chain_buffer , & mut_cert_chain_buffer_size );
166168 } else {
167- result = libspdm_get_local_cert_chain_buffer (
168- spdm_context , (const void * * )& mut_cert_chain_buffer , & mut_cert_chain_buffer_size );
169+ libspdm_get_local_cert_chain_buffer (
170+ spdm_context , slot_id , (const void * * )& mut_cert_chain_buffer ,
171+ & mut_cert_chain_buffer_size );
172+ result = true;
169173 }
170174 if (!result ) {
171175 return false;
@@ -264,14 +268,16 @@ bool libspdm_generate_finish_req_signature(libspdm_context_t *spdm_context,
264268 return false;
265269 }
266270
267- slot_id = spdm_context -> connection_info . local_used_cert_chain_slot_id ;
271+ slot_id = session_info -> local_used_cert_chain_slot_id ;
268272 LIBSPDM_ASSERT ((slot_id < SPDM_MAX_SLOT_COUNT ) || (slot_id == 0xFF ));
269273 if (slot_id == 0xFF ) {
270274 result = libspdm_get_local_public_key_buffer (
271275 spdm_context , (const void * * )& mut_cert_chain_buffer , & mut_cert_chain_buffer_size );
272276 } else {
273- result = libspdm_get_local_cert_chain_buffer (
274- spdm_context , (const void * * )& mut_cert_chain_buffer , & mut_cert_chain_buffer_size );
277+ libspdm_get_local_cert_chain_buffer (
278+ spdm_context , slot_id , (const void * * )& mut_cert_chain_buffer ,
279+ & mut_cert_chain_buffer_size );
280+ result = true;
275281 }
276282 if (!result ) {
277283 return false;
@@ -476,14 +482,7 @@ static libspdm_return_t libspdm_try_send_receive_finish(
476482 }
477483#endif
478484
479- spdm_context -> connection_info .local_used_cert_chain_slot_id = req_slot_id_param ;
480- if ((session_info -> mut_auth_requested != 0 ) && (req_slot_id_param != 0xFF )) {
481- LIBSPDM_ASSERT (req_slot_id_param < SPDM_MAX_SLOT_COUNT );
482- spdm_context -> connection_info .local_used_cert_chain_buffer =
483- spdm_context -> local_context .local_cert_chain_provision [req_slot_id_param ];
484- spdm_context -> connection_info .local_used_cert_chain_buffer_size =
485- spdm_context -> local_context .local_cert_chain_provision_size [req_slot_id_param ];
486- }
485+ session_info -> local_used_cert_chain_slot_id = req_slot_id_param ;
487486
488487 hmac_size = libspdm_get_hash_size (spdm_context -> connection_info .algorithm .base_hash_algo );
489488 LIBSPDM_ASSERT (spdm_request_size >= sizeof (spdm_finish_request_t ) + opaque_data_entry_size +
0 commit comments