@@ -18,7 +18,8 @@ typedef struct {
1818 uint32_t measurement_hash_algo ;
1919 uint32_t base_asym_sel ;
2020 uint32_t base_hash_sel ;
21- uint8_t reserved2 [12 ];
21+ uint8_t reserved2 [11 ];
22+ uint8_t mel_specification_sel ;
2223 uint8_t ext_asym_sel_count ;
2324 uint8_t ext_hash_sel_count ;
2425 uint16_t reserved3 ;
@@ -257,6 +258,10 @@ libspdm_return_t libspdm_get_response_algorithms(libspdm_context_t *spdm_context
257258 SPDM_ALGORITHMS_OPAQUE_DATA_FORMAT_NONE
258259 };
259260
261+ uint32_t mel_spec_priority_table [] = {
262+ SPDM_MEL_SPECIFICATION_DMTF ,
263+ };
264+
260265 spdm_request = request ;
261266
262267 ext_alg_total_count = 0 ;
@@ -550,6 +555,10 @@ libspdm_return_t libspdm_get_response_algorithms(libspdm_context_t *spdm_context
550555 if (spdm_request -> header .spdm_version >= SPDM_MESSAGE_VERSION_12 ) {
551556 spdm_context -> connection_info .algorithm .other_params_support =
552557 spdm_request -> other_params_support ;
558+ if (spdm_request -> header .spdm_version >= SPDM_MESSAGE_VERSION_13 ) {
559+ spdm_context -> connection_info .algorithm .mel_spec =
560+ spdm_request -> mel_specification ;
561+ }
553562 }
554563
555564 spdm_response -> measurement_specification_sel = (uint8_t )libspdm_prioritize_algorithm (
@@ -583,6 +592,13 @@ libspdm_return_t libspdm_get_response_algorithms(libspdm_context_t *spdm_context
583592 SPDM_ALGORITHMS_OPAQUE_DATA_FORMAT_MASK ,
584593 spdm_context -> connection_info .algorithm .other_params_support &
585594 SPDM_ALGORITHMS_OPAQUE_DATA_FORMAT_MASK );
595+ if (spdm_request -> header .spdm_version >= SPDM_MESSAGE_VERSION_13 ) {
596+ spdm_response -> mel_specification_sel = (uint8_t )libspdm_prioritize_algorithm (
597+ mel_spec_priority_table ,
598+ LIBSPDM_ARRAY_SIZE (mel_spec_priority_table ),
599+ spdm_context -> local_context .algorithm .mel_spec ,
600+ spdm_context -> connection_info .algorithm .mel_spec );
601+ }
586602 }
587603
588604 if (spdm_request -> header .spdm_version >= SPDM_MESSAGE_VERSION_13 ) {
@@ -718,6 +734,12 @@ libspdm_return_t libspdm_get_response_algorithms(libspdm_context_t *spdm_context
718734 if (spdm_response -> header .spdm_version >= SPDM_MESSAGE_VERSION_12 ) {
719735 spdm_context -> connection_info .algorithm .other_params_support =
720736 spdm_response -> other_params_selection ;
737+ if (spdm_response -> header .spdm_version >= SPDM_MESSAGE_VERSION_13 ) {
738+ spdm_context -> connection_info .algorithm .mel_spec =
739+ spdm_response -> mel_specification_sel ;
740+ } else {
741+ spdm_context -> connection_info .algorithm .mel_spec = 0 ;
742+ }
721743 } else {
722744 spdm_context -> connection_info .algorithm .other_params_support = 0 ;
723745 }
0 commit comments