Skip to main content

islet_rmm/rsi/
measurement.rs

1use crate::measurement::MeasurementError;
2use crate::rsi::error::Error;
3use crate::rsi::Rd;
4
5pub fn read(
6    rd: &Rd,
7    index: usize,
8    out: &mut crate::measurement::Measurement,
9) -> Result<(), crate::rsi::error::Error> {
10    let measurement = rd
11        .measurements
12        .get(index)
13        .ok_or(Error::InvalidMeasurementIndex)?;
14
15    out.as_mut_slice().copy_from_slice(measurement.as_slice());
16    Ok(())
17}
18
19pub fn extend(
20    rd: &mut Rd,
21    index: usize,
22    f: impl Fn(&mut crate::measurement::Measurement) -> Result<(), MeasurementError>,
23) -> Result<(), crate::rsi::error::Error> {
24    let measurement = rd
25        .measurements
26        .get_mut(index)
27        .ok_or(Error::InvalidMeasurementIndex)?;
28
29    f(measurement)?;
30    Ok(())
31}