Skip to content

Commit cf100b1

Browse files
committed
devired_key: cleaning pass confidential-containers#1
1 parent f4bd660 commit cf100b1

14 files changed

Lines changed: 64 additions & 131 deletions

File tree

api-server-rest/src/aa.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@ impl ApiHandler for AAClient {
7676
}
7777
None => return self.bad_request(),
7878
},
79-
AA_DERIVED_KEY_URL => match params.get("key_id") {
80-
Some(key_id) => match self.get_derived_key(&key_id.clone().into_bytes()).await {
79+
AA_DERIVED_KEY_URL => match params.get() {
80+
Some(key) => match self.get_derived_key().await {
8181
std::result::Result::Ok(results) => return self.octet_stream_response(results),
8282
Err(e) => return self.internal_error(e.to_string()),
8383
},
@@ -127,9 +127,8 @@ impl AAClient {
127127
Ok(res.Evidence)
128128
}
129129

130-
pub async fn get_derived_key(&self, key_id: &[u8]) -> Result<Vec<u8>> {
130+
pub async fn get_derived_key(&self) -> Result<Vec<u8>> {
131131
let req = GetDerivedKeyRequest {
132-
KeyId: key_id.to_vec(),
133132
..Default::default()
134133
};
135134
let res = self

api-server-rest/src/ttrpc_proto/attestation_agent.rs

Lines changed: 9 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -515,9 +515,6 @@ impl ::protobuf::reflect::ProtobufValue for GetTokenResponse {
515515
// @@protoc_insertion_point(message:attestation_agent.GetDerivedKeyRequest)
516516
#[derive(PartialEq,Clone,Default,Debug)]
517517
pub struct GetDerivedKeyRequest {
518-
// message fields
519-
// @@protoc_insertion_point(field:attestation_agent.GetDerivedKeyRequest.KeyId)
520-
pub KeyId: ::std::vec::Vec<u8>,
521518
// special fields
522519
// @@protoc_insertion_point(special_field:attestation_agent.GetDerivedKeyRequest.special_fields)
523520
pub special_fields: ::protobuf::SpecialFields,
@@ -535,13 +532,8 @@ impl GetDerivedKeyRequest {
535532
}
536533

537534
fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
538-
let mut fields = ::std::vec::Vec::with_capacity(1);
535+
let mut fields = ::std::vec::Vec::with_capacity(0);
539536
let mut oneofs = ::std::vec::Vec::with_capacity(0);
540-
fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
541-
"KeyId",
542-
|m: &GetDerivedKeyRequest| { &m.KeyId },
543-
|m: &mut GetDerivedKeyRequest| { &mut m.KeyId },
544-
));
545537
::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<GetDerivedKeyRequest>(
546538
"GetDerivedKeyRequest",
547539
fields,
@@ -560,9 +552,6 @@ impl ::protobuf::Message for GetDerivedKeyRequest {
560552
fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
561553
while let Some(tag) = is.read_raw_tag_or_eof()? {
562554
match tag {
563-
10 => {
564-
self.KeyId = is.read_bytes()?;
565-
},
566555
tag => {
567556
::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
568557
},
@@ -575,18 +564,12 @@ impl ::protobuf::Message for GetDerivedKeyRequest {
575564
#[allow(unused_variables)]
576565
fn compute_size(&self) -> u64 {
577566
let mut my_size = 0;
578-
if !self.KeyId.is_empty() {
579-
my_size += ::protobuf::rt::bytes_size(1, &self.KeyId);
580-
}
581567
my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
582568
self.special_fields.cached_size().set(my_size as u32);
583569
my_size
584570
}
585571

586572
fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
587-
if !self.KeyId.is_empty() {
588-
os.write_bytes(1, &self.KeyId)?;
589-
}
590573
os.write_unknown_fields(self.special_fields.unknown_fields())?;
591574
::std::result::Result::Ok(())
592575
}
@@ -604,13 +587,11 @@ impl ::protobuf::Message for GetDerivedKeyRequest {
604587
}
605588

606589
fn clear(&mut self) {
607-
self.KeyId.clear();
608590
self.special_fields.clear();
609591
}
610592

611593
fn default_instance() -> &'static GetDerivedKeyRequest {
612594
static instance: GetDerivedKeyRequest = GetDerivedKeyRequest {
613-
KeyId: ::std::vec::Vec::new(),
614595
special_fields: ::protobuf::SpecialFields::new(),
615596
};
616597
&instance
@@ -762,14 +743,14 @@ static file_descriptor_proto_data: &'static [u8] = b"\
762743
\"1\n\x13GetEvidenceResponse\x12\x1a\n\x08Evidence\x18\x01\x20\x01(\x0cR\
763744
\x08Evidence\"/\n\x0fGetTokenRequest\x12\x1c\n\tTokenType\x18\x01\x20\
764745
\x01(\tR\tTokenType\"(\n\x10GetTokenResponse\x12\x14\n\x05Token\x18\x01\
765-
\x20\x01(\x0cR\x05Token\",\n\x14GetDerivedKeyRequest\x12\x14\n\x05KeyId\
766-
\x18\x01\x20\x01(\x0cR\x05KeyId\"7\n\x15GetDerivedKeyResponse\x12\x1e\n\
767-
\nDerivedKey\x18\x01\x20\x01(\x0cR\nDerivedKey2\xb0\x02\n\x17Attestation\
768-
AgentService\x12b\n\rGetDerivedKey\x12'.attestation_agent.GetDerivedKeyR\
769-
equest\x1a(.attestation_agent.GetDerivedKeyResponse\x12\\\n\x0bGetEviden\
770-
ce\x12%.attestation_agent.GetEvidenceRequest\x1a&.attestation_agent.GetE\
771-
videnceResponse\x12S\n\x08GetToken\x12\".attestation_agent.GetTokenReque\
772-
st\x1a#.attestation_agent.GetTokenResponseb\x06proto3\
746+
\x20\x01(\x0cR\x05Token\"\x16\n\x14GetDerivedKeyRequest\"7\n\x15GetDeriv\
747+
edKeyResponse\x12\x1e\n\nDerivedKey\x18\x01\x20\x01(\x0cR\nDerivedKey2\
748+
\xb0\x02\n\x17AttestationAgentService\x12b\n\rGetDerivedKey\x12'.attesta\
749+
tion_agent.GetDerivedKeyRequest\x1a(.attestation_agent.GetDerivedKeyResp\
750+
onse\x12\\\n\x0bGetEvidence\x12%.attestation_agent.GetEvidenceRequest\
751+
\x1a&.attestation_agent.GetEvidenceResponse\x12S\n\x08GetToken\x12\".att\
752+
estation_agent.GetTokenRequest\x1a#.attestation_agent.GetTokenResponseb\
753+
\x06proto3\
773754
";
774755

775756
/// `FileDescriptorProto` object which was a source for this generated file

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/lib.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,8 @@ pub trait Attester {
101101
}
102102

103103
/// Get a derived key using the hardware-specific key derivation function.
104-
/// The parameter `root_key_hinit` is the root key used for derivation,
105-
/// and `context` is additional data used in the derivation process.
106-
async fn get_derived_key(&self, _root_key_hinit: &[u8], _context: Vec<u8>) -> Result<Vec<u8>> {
104+
/// The parameter `root_key_hinit` `context` is data potentially used in the derivation process.
105+
async fn get_derived_key(&self, _context: Vec<u8>) -> Result<Vec<u8>> {
107106
bail!("Unimplemented")
108107
}
109108
}

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

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -65,20 +65,12 @@ impl Attester for SnpAttester {
6565
Ok(InitDataResult::Ok)
6666
}
6767

68-
async fn get_derived_key(
69-
&self,
70-
root_key_hinit: &[u8],
71-
mut context: Vec<u8>,
72-
) -> Result<Vec<u8>> {
68+
async fn get_derived_key(&self, mut context: Vec<u8>) -> Result<Vec<u8>> {
7369
if context.len() > 64 {
7470
bail!("SNP Attester: Context must be no more than 64 bytes");
7571
}
7672

7773
context.resize(64, 0);
78-
let _root_key: u8 = root_key_hinit
79-
.first()
80-
.copied()
81-
.context("Invalid key or empty key specified")?;
8274

8375
let mut firmware: Firmware = Firmware::open()?;
8476

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

0 commit comments

Comments
 (0)