MCPcopy Create free account
hub / github.com/Dstack-TEE/dstack / parse_spec_id_event_log

Function parse_spec_id_event_log

cc-eventlog/src/tcg.rs:317–345  ·  view source on GitHub ↗
(
    input: &mut I,
)

Source from the content-addressed store, hash-verified

315}
316
317fn parse_spec_id_event_log<I: scale::Input>(
318 input: &mut I,
319) -> Result<(TcgEvent, TcgEfiSpecIdEvent)> {
320 #[derive(Decode)]
321 struct Header {
322 imr_index: u32,
323 header_event_type: u32,
324 digest_hash: [u8; 20],
325 header_event: VecOf<u32, u8>,
326 }
327
328 let decoded_header = Header::decode(input).context("failed to decode log_item")?;
329 // Parse EFI Spec Id Event structure
330 let input = &mut decoded_header.header_event.as_slice();
331 let spec_id_event =
332 TcgEfiSpecIdEvent::decode(input).context("failed to decode TcgEfiSpecIdEvent")?;
333
334 let digests = vec![TcgDigest {
335 algo_id: TPM_ALG_ERROR,
336 hash: decoded_header.digest_hash.to_vec(),
337 }];
338 let spec_id_header = TcgEvent {
339 imr_index: decoded_header.imr_index,
340 event_type: decoded_header.header_event_type,
341 digests: (digests.len() as u32, digests).into(),
342 event: decoded_header.header_event,
343 };
344 Ok((spec_id_header, spec_id_event))
345}
346
347impl TryFrom<TcgEvent> for TdxEvent {
348 type Error = anyhow::Error;

Callers 1

decodeMethod · 0.85

Calls 2

decodeFunction · 0.85
lenMethod · 0.45

Tested by

no test coverage detected