Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions attestation-agent/attestation-agent/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ tonic = { workspace = true, optional = true }
ttrpc = { workspace = true, features = ["async"], optional = true }

[dev-dependencies]
attester = { path = "../attester", default-features = false, features = [
"test-utils",
] }
rstest.workspace = true
serial_test.workspace = true
tokio = { workspace = true, features = ["macros", "rt-multi-thread"] }
Expand Down
17 changes: 12 additions & 5 deletions attestation-agent/attestation-agent/src/bin/grpc-aa/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -117,12 +117,14 @@ rpc: grpc
let mut aa = AttestationAgent::new(config).context("start AA")?;

let mut initdata_digest = None;
let mut initdata_alg = None;
if let Some(initdata_toml_path) = cli.initdata_toml {
info!("Initdata TOML file is given by parameter");
let initdata_toml =
std::fs::read_to_string(&initdata_toml_path).context("read initdata toml file")?;
let (_, digest) = Initdata::parse_and_get_digest(&initdata_toml)?;
let (initdata, digest) = Initdata::parse_and_get_digest(&initdata_toml)?;
aa.set_initdata_toml(initdata_toml);
initdata_alg = Some(initdata.algorithm);
initdata_digest = Some(digest);
} else if let Some(initdata) = cli.initdata_digest {
info!("Initdata digest is given by parameter");
Expand All @@ -132,20 +134,25 @@ rpc: grpc
initdata_digest = Some(initdata);
}

// Open the eventlog first, so that initdata recorded into it starts from a recovered log.
aa.init().await.context("init AA")?;

if let Some(initdata_digest) = initdata_digest {
let res = aa.bind_init_data(&initdata_digest).await.context(
"The initdata supplied by the parameter is inconsistent with that of the current platform.",
)?;
let res = match initdata_alg {
Comment thread
mkulke marked this conversation as resolved.
Outdated
Some(alg) => aa.bind_or_record_init_data(alg, &initdata_digest).await,
None => aa.bind_init_data(&initdata_digest).await,
}
.context("Failed to bind initdata to the platform")?;

match res {
attester::InitDataResult::Ok => info!("Check initdata passed."),
attester::InitDataResult::Unsupported => {
info!("Platform does not support initdata checking. Jumping.")
}
attester::InitDataResult::NotBound => bail!("Initdata is not bound."),
}
}

aa.init().await.context("init AA")?;
debug!(
"Attestation gRPC service listening on: {:?}",
cli.attestation_sock
Expand Down
17 changes: 12 additions & 5 deletions attestation-agent/attestation-agent/src/bin/ttrpc-aa.rs
Original file line number Diff line number Diff line change
Expand Up @@ -141,12 +141,14 @@ rpc: ttrpc
let mut aa = AttestationAgent::new(config).context("start AA")?;

let mut initdata_digest = None;
let mut initdata_alg = None;
if let Some(initdata_toml_path) = cli.initdata_toml {
info!("Initdata TOML file is given by parameter");
let initdata_toml =
std::fs::read_to_string(&initdata_toml_path).context("read initdata toml file")?;
let (_, digest) = Initdata::parse_and_get_digest(&initdata_toml)?;
let (initdata, digest) = Initdata::parse_and_get_digest(&initdata_toml)?;
aa.set_initdata_toml(initdata_toml);
initdata_alg = Some(initdata.algorithm);
initdata_digest = Some(digest);
} else if let Some(initdata) = cli.initdata_digest {
info!("Initdata digest is given by parameter");
Expand All @@ -156,20 +158,25 @@ rpc: ttrpc
initdata_digest = Some(initdata);
}

// Open the eventlog first, so that initdata recorded into it starts from a recovered log.
aa.init().await.context("init AA")?;

if let Some(initdata_digest) = initdata_digest {
let res = aa.bind_init_data(&initdata_digest).await.context(
"The initdata supplied by the parameter is inconsistent with that of the current platform.",
)?;
let res = match initdata_alg {
Some(alg) => aa.bind_or_record_init_data(alg, &initdata_digest).await,
None => aa.bind_init_data(&initdata_digest).await,
}
.context("Failed to bind initdata to the platform")?;

match res {
attester::InitDataResult::Ok => info!("Check initdata passed."),
attester::InitDataResult::Unsupported => {
info!("Platform does not support initdata checking. Jumping.")
}
attester::InitDataResult::NotBound => bail!("Initdata is not bound."),
}
}

aa.init().await.context("init AA")?;
let att = start_ttrpc_service(aa)?;

let mut atts = Server::new()
Expand Down
Loading
Loading