Extract gramine_sgx_ias_report

This commit is contained in:
hu55a1n1 2024-02-26 14:43:44 -08:00
parent 178a738eec
commit c3e9af7ce9

View file

@ -1,6 +1,7 @@
mod cli; mod cli;
use std::{ use std::{
error::Error,
fs::{read_to_string, File}, fs::{read_to_string, File},
io::Write, io::Write,
process::Command, process::Command,
@ -9,7 +10,7 @@ use std::{
use clap::Parser; use clap::Parser;
use quartz_proto::quartz::{core_client::CoreClient, InstantiateRequest}; use quartz_proto::quartz::{core_client::CoreClient, InstantiateRequest};
use quartz_relayer::types::InstantiateResponse; use quartz_relayer::types::InstantiateResponse;
use serde_json::json; use serde_json::{json, Value};
use crate::cli::Cli; use crate::cli::Cli;
@ -21,13 +22,23 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
let response = client.instantiate(InstantiateRequest {}).await?; let response = client.instantiate(InstantiateRequest {}).await?;
let response: InstantiateResponse = response.into_inner().try_into()?; let response: InstantiateResponse = response.into_inner().try_into()?;
let ias_report = gramine_sgx_ias_report(response.quote())?;
println!(
"{}",
serde_json::to_string(&ias_report).expect("infallible serializer")
);
Ok(())
}
fn gramine_sgx_ias_report(quote: &[u8]) -> Result<Value, Box<dyn Error>> {
let dir = tempfile::tempdir()?; let dir = tempfile::tempdir()?;
let quote_file_path = dir.path().join("test.quote"); let quote_file_path = dir.path().join("test.quote");
let datareport_file_path = dir.path().join("datareport"); let datareport_file_path = dir.path().join("datareport");
let datareportsig_file_path = dir.path().join("datareportsig"); let datareportsig_file_path = dir.path().join("datareportsig");
let mut quote_file = File::create(quote_file_path.clone())?; let mut quote_file = File::create(quote_file_path.clone())?;
quote_file.write_all(response.quote())?; quote_file.write_all(quote)?;
let gramine_sgx_ias_request_output = Command::new("gramine-sgx-ias-request") let gramine_sgx_ias_request_output = Command::new("gramine-sgx-ias-request")
.arg("report") .arg("report")
@ -42,10 +53,5 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
let report = read_to_string(datareport_file_path)?; let report = read_to_string(datareport_file_path)?;
let report_sig = read_to_string(datareportsig_file_path)?; let report_sig = read_to_string(datareportsig_file_path)?;
let ias_report = json!({"report": report, "reportsig": report_sig}); let ias_report = json!({"report": report, "reportsig": report_sig});
println!( Ok(ias_report)
"{}",
serde_json::to_string(&ias_report).expect("infallible serializer")
);
Ok(())
} }