Skip to content

Commit e8eae94

Browse files
committed
Logic to parse measurements from JSON file
1 parent 251862e commit e8eae94

File tree

1 file changed

+27
-18
lines changed

1 file changed

+27
-18
lines changed

src/attestation.rs

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@ use tokio_rustls::rustls::pki_types::CertificateDer;
1515
use x509_parser::prelude::*;
1616
use serde::Deserialize;
1717

18-
use crate::test_helpers::default_measurements;
19-
2018
/// For fetching collateral directly from intel, if no PCCS is specified
2119
const PCS_URL: &str = "https://api.trustedservices.intel.com";
2220

@@ -82,32 +80,43 @@ pub enum MeasurementFormatError {
8280

8381
#[derive(Debug)]
8482
pub struct MeasurementRecord {
85-
measurement_id: String,
86-
attestation_type: AttestationType,
87-
measurements: Measurements,
88-
}
89-
90-
#[derive(Debug, Deserialize)]
91-
struct MeasurementRecordSimple {
92-
measurement_id: String,
93-
attestation_type: String,
94-
measurements: HashMap<String, MeasurementEntry>,
83+
pub measurement_id: String,
84+
pub attestation_type: AttestationType,
85+
pub measurements: Measurements,
9586
}
9687

97-
#[derive(Debug, Deserialize)]
98-
struct MeasurementEntry {
99-
expected: String,
100-
}
10188

10289
pub async fn get_measurements_from_file(measurement_file: PathBuf) -> Vec<MeasurementRecord> {
90+
#[derive(Debug, Deserialize)]
91+
struct MeasurementRecordSimple {
92+
measurement_id: String,
93+
attestation_type: String,
94+
measurements: HashMap<String, MeasurementEntry>,
95+
}
96+
97+
#[derive(Debug, Deserialize)]
98+
struct MeasurementEntry {
99+
expected: String,
100+
}
101+
103102
let measurements_json = tokio::fs::read(measurement_file).await.unwrap();
104103
let measurements_simple: Vec<MeasurementRecordSimple> = serde_json::from_slice(&measurements_json).unwrap();
105-
let measurements = Vec::new();
104+
let mut measurements = Vec::new();
106105
for measurement in measurements_simple {
107106
measurements.push(MeasurementRecord {
108107
measurement_id: measurement.measurement_id,
109108
attestation_type: AttestationType::from_str(&measurement.attestation_type).unwrap(),
110-
measurements: Measurements { platform: PlatformMeasurements { mrtd: (), rtmr0: () }, cvm_image: CvmImageMeasurements { rtmr1: (), rtmr2: (), rtmr3: () } }
109+
measurements: Measurements {
110+
platform: PlatformMeasurements {
111+
mrtd: hex::decode(&measurement.measurements["0"].expected).unwrap().try_into().unwrap(),
112+
rtmr0: hex::decode(&measurement.measurements["1"].expected).unwrap().try_into().unwrap(),
113+
},
114+
cvm_image: CvmImageMeasurements {
115+
rtmr1: hex::decode(&measurement.measurements["2"].expected).unwrap().try_into().unwrap(),
116+
rtmr2: hex::decode(&measurement.measurements["3"].expected).unwrap().try_into().unwrap(),
117+
rtmr3: hex::decode(&measurement.measurements["4"].expected).unwrap().try_into().unwrap(),
118+
}
119+
}
111120
});
112121
}
113122
measurements

0 commit comments

Comments
 (0)