Skip to content

Commit 6916687

Browse files
committed
devired_key: cleaning pass confidential-containers#1
1 parent 99e124f commit 6916687

File tree

12 files changed

+61
-91
lines changed

12 files changed

+61
-91
lines changed

api-server-rest/src/aa.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,18 @@ impl ApiHandler for AAClient {
6767
_ => {
6868
return self.not_found();
6969
}
70+
None => return self.bad_request(),
71+
},
72+
AA_DERIVED_KEY_URL => match params.get() {
73+
Some(key) => match self.get_derived_key().await {
74+
std::result::Result::Ok(results) => return self.octet_stream_response(results),
75+
Err(e) => return self.internal_error(e.to_string()),
76+
},
77+
None => return self.bad_request(),
78+
},
79+
80+
_ => {
81+
return self.not_found();
7082
}
7183
}
7284

attestation-agent/attestation-agent/src/bin/grpc-aa/server.rs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -164,14 +164,10 @@ impl AttestationAgentService for AA {
164164

165165
debug!("AA (grpc): get derived key ...");
166166

167-
let derived_key = self
168-
.inner
169-
.get_derived_key(&request.key_id)
170-
.await
171-
.map_err(|e| {
172-
error!("AA (grpc): get derived key failed:\n{e:?}\nkey_id:\n{&request.key_id}");
173-
Status::internal(format!("[ERROR:{AGENT_NAME}] AA get derived key failed"))
174-
})?;
167+
let derived_key = self.inner.get_derived_key().await.map_err(|e| {
168+
error!("AA (grpc): get derived key failed:\n{e:?}");
169+
Status::internal(format!("[ERROR:{AGENT_NAME}] AA get derived key failed"))
170+
})?;
175171

176172
debug!("AA (grpc): Get derived key successfully!");
177173

attestation-agent/attestation-agent/src/bin/ttrpc-aa-client.rs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,7 @@ struct GetTokenArgs {
8080

8181
#[derive(Args)]
8282
#[command(author, version, about, long_about = None)]
83-
struct GetDerivedKeyArgs {
84-
/// base64 encodede runtime data
85-
#[arg(short, long)]
86-
key_id: String,
87-
}
83+
struct GetDerivedKeyArgs {}
8884

8985
#[derive(Args)]
9086
#[command(author, version, about, long_about = None)]
@@ -152,15 +148,14 @@ pub async fn main() {
152148
}
153149
Operation::GetDerivedKey(get_derived_key_args) => {
154150
let req = GetDerivedKeyRequest {
155-
KeyId: get_derived_key_args.key_id,
156151
..Default::default()
157152
};
158153
let res = client
159154
.get_derived_key(context::with_timeout(TIMEOUT), &req)
160155
.await
161156
.expect("request to AA");
162-
let key_id = String::from_utf8(res.KeyId).unwrap();
163-
println!("{key_id}");
157+
let key = String::from_utf8(res.Key).unwrap();
158+
println!("{key}");
164159
}
165160
Operation::ExtendRuntimeMeasurement(extend_runtime_measurement_args) => {
166161
let req = ExtendRuntimeMeasurementRequest {

attestation-agent/attestation-agent/src/bin/ttrpc_dep/server.rs

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -84,21 +84,16 @@ impl AttestationAgentService for AA {
8484
) -> ::ttrpc::Result<GetDerivedKeyResponse> {
8585
debug!("AA (ttrpc): get derived key ...");
8686

87+
let empty_context = Vec::new();
8788
let derived_key = self
8889
.inner
89-
.get_derived_key(&req.KeyId, Vec::new())
90+
.get_derived_key(empty_context)
9091
.await
9192
.map_err(|e| {
92-
error!(
93-
"AA (ttrpc): get derived key failed:\n {e:?}\n key_id:\n {:#?}",
94-
&req.KeyId
95-
);
93+
error!("AA (ttrpc): get derived key failed:\n {e:?}");
9694
let mut error_status = ::ttrpc::proto::Status::new();
9795
error_status.set_code(Code::INTERNAL);
98-
error_status.set_message(format!(
99-
"[ERROR:{AGENT_NAME}] AA-KBC get derived key failed. key_id: {:#?}",
100-
&req.KeyId
101-
));
96+
error_status.set_message("[ERROR:{AGENT_NAME}] AA-KBC get derived key failed.");
10297
::ttrpc::Error::RpcStatus(error_status)
10398
})?;
10499

attestation-agent/attestation-agent/src/lib.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ pub trait AttestationAPIs {
6060
/// Get TEE hardware signed evidence that includes the runtime data.
6161
async fn get_evidence(&self, runtime_data: &[u8]) -> Result<Vec<u8>>;
6262

63-
/// Get a derived key using the provided key ID
64-
async fn get_derived_key(&self, key_id: &[u8], context: Vec<u8>) -> Result<Vec<u8>>;
63+
/// Get a derived key
64+
async fn get_derived_key(&self, context: Vec<u8>) -> Result<Vec<u8>>;
6565

6666
/// Extend runtime measurement register
6767
async fn extend_runtime_measurement(
@@ -180,8 +180,8 @@ impl AttestationAPIs for AttestationAgent {
180180
Ok(evidence.into_bytes())
181181
}
182182

183-
async fn get_derived_key(&self, key_id: &[u8], context: Vec<u8>) -> Result<Vec<u8>> {
184-
self.attester.get_derived_key(key_id, context).await
183+
async fn get_derived_key(&self, context: Vec<u8>) -> Result<Vec<u8>> {
184+
self.attester.get_derived_key(context).await
185185
}
186186

187187
/// Extend runtime measurement register. Parameters

attestation-agent/attester/src/snp/mod.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,6 @@ impl Attester for SnpAttester {
7171
}
7272

7373
context.resize(64, 0);
74-
let _root_key: u8 = root_key_hinit
75-
.first()
76-
.copied()
77-
.context("Invalid key or empty key specified")?;
7874

7975
let mut firmware: Firmware = Firmware::open()?;
8076

attestation-agent/kbs_protocol/src/evidence_provider/aa_ttrpc.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,8 @@ impl AAEvidenceProvider {
4040
#[async_trait]
4141
impl EvidenceProvider for AAEvidenceProvider {
4242
/// Get derived key using the provided key ID
43-
async fn get_derived_key(&self, key_id: &[u8], _context: Vec<u8>) -> Result<Vec<u8>> {
43+
async fn get_derived_key(&self, _context: Vec<u8>) -> Result<Vec<u8>> {
4444
let req = GetDerivedKeyRequest {
45-
KeyId: key_id.to_vec(),
4645
..Default::default()
4746
};
4847
let res = self

attestation-agent/kbs_protocol/src/evidence_provider/mock.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ impl EvidenceProvider for MockedEvidenceProvider {
1919
Ok("test evidence".into())
2020
}
2121

22-
async fn get_derived_key(&self, _key_id: &[u8], _context: Vec<u8>) -> Result<Vec<u8>> {
22+
async fn get_derived_key(&self, _context: Vec<u8>) -> Result<Vec<u8>> {
2323
Ok(vec![0u8; 32]) // Return a mock 32-byte key filled with zeros
2424
}
2525

attestation-agent/kbs_protocol/src/evidence_provider/mod.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ pub trait EvidenceProvider: Send + Sync {
2727
async fn get_tee_type(&self) -> Result<Tee>;
2828

2929
/// Get a derived key using the hardware-specific key derivation function.
30-
/// The parameter `root_key_hint` is the root key used for derivation,
31-
/// and `context` is additional data used in the derivation process.
32-
async fn get_derived_key(&self, key_id: &[u8], context: Vec<u8>) -> Result<Vec<u8>>;
30+
/// The parameter `context` is data potentially used in the derivation process.
31+
async fn get_derived_key(&self, context: Vec<u8>) -> Result<Vec<u8>>;
3332
}

attestation-agent/kbs_protocol/src/evidence_provider/native.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ impl EvidenceProvider for NativeEvidenceProvider {
3535
Ok(detect_tee_type())
3636
}
3737

38-
async fn get_derived_key(&self, key_id: &[u8], context: Vec<u8>) -> Result<Vec<u8>> {
38+
async fn get_derived_key(&self, context: Vec<u8>) -> Result<Vec<u8>> {
3939
self.0
40-
.get_derived_key(key_id, context)
40+
.get_derived_key(context)
4141
.await
4242
.map_err(|e| Error::GetDerivedKey(e.to_string()))
4343
}

0 commit comments

Comments
 (0)