Skip to content

Commit bc982f9

Browse files
committed
libspdm: spdm: Test raw bitstreams and digest for all measurements
Signed-off-by: Alistair Francis <[email protected]>
1 parent 71a151d commit bc982f9

File tree

1 file changed

+24
-13
lines changed

1 file changed

+24
-13
lines changed

src/libspdm/spdm.rs

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -817,20 +817,31 @@ pub unsafe fn get_measurements(context: *mut c_void, slot_id: u8) -> Result<(),
817817
[0; LIBSPDM_MAX_MEASUREMENT_RECORD_SIZE as usize];
818818
let measurement_record_ptr: *mut c_void = &mut measurement_record as *mut _ as *mut c_void;
819819

820-
let ret = libspdm_get_measurement(
821-
context,
822-
ptr::null_mut(),
823-
request_attribute,
824-
SPDM_GET_MEASUREMENTS_REQUEST_MEASUREMENT_OPERATION_ALL_MEASUREMENTS as u8,
825-
slot_id,
826-
ptr::null_mut(),
827-
&mut number_of_blocks,
828-
&mut measurement_record_length,
829-
measurement_record_ptr,
830-
);
820+
for i in 0..2 {
821+
if i == 0 {
822+
// Request the raw bitstream, so we can decode it for readability.
823+
request_attribute =
824+
libspdm_rs::SPDM_GET_MEASUREMENTS_REQUEST_ATTRIBUTES_RAW_BIT_STREAM_REQUESTED as u8;
825+
} else {
826+
request_attribute =
827+
libspdm_rs::SPDM_GET_MEASUREMENTS_REQUEST_ATTRIBUTES_GENERATE_SIGNATURE as u8;
828+
}
831829

832-
if LibspdmReturnStatus::libspdm_status_is_error(ret) {
833-
return Err(ret);
830+
let ret = libspdm_get_measurement(
831+
context,
832+
ptr::null_mut(),
833+
request_attribute,
834+
SPDM_GET_MEASUREMENTS_REQUEST_MEASUREMENT_OPERATION_ALL_MEASUREMENTS as u8,
835+
slot_id,
836+
ptr::null_mut(),
837+
&mut number_of_blocks,
838+
&mut measurement_record_length,
839+
measurement_record_ptr,
840+
);
841+
842+
if LibspdmReturnStatus::libspdm_status_is_error(ret) {
843+
return Err(ret);
844+
}
834845
}
835846

836847
Ok(())

0 commit comments

Comments
 (0)