uefi_raw/protocol/tcg/
v1.rsuse crate::{guid, Guid, PhysicalAddress, Status};
use core::ffi::c_void;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq, Ord, PartialOrd)]
pub struct TcgBootServiceCapability {
pub size: u8,
pub structure_version: TcgVersion,
pub protocol_spec_version: TcgVersion,
pub hash_algorithm_bitmap: u8,
pub tpm_present_flag: u8,
pub tpm_deactivated_flag: u8,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq, Ord, PartialOrd)]
pub struct TcgVersion {
pub major: u8,
pub minor: u8,
pub rev_major: u8,
pub rev_minor: u8,
}
#[derive(Debug)]
#[repr(C)]
pub struct TcgProtocol {
pub status_check: unsafe extern "efiapi" fn(
this: *mut Self,
protocol_capability: *mut TcgBootServiceCapability,
feature_flags: *mut u32,
event_log_location: *mut PhysicalAddress,
event_log_last_entry: *mut PhysicalAddress,
) -> Status,
pub hash_all: unsafe extern "efiapi" fn(
this: *mut Self,
hash_data: *const u8,
hash_data_len: u64,
algorithm_id: u32,
hashed_data_len: *mut u64,
hashed_data_result: *mut *mut u8,
) -> Status,
pub log_event: unsafe extern "efiapi" fn(
this: *mut Self,
event: *const c_void,
event_number: *mut u32,
flags: u32,
) -> Status,
pub pass_through_to_tpm: unsafe extern "efiapi" fn(
this: *mut Self,
tpm_input_parameter_block_size: u32,
tpm_input_parameter_block: *const u8,
tpm_output_parameter_block_size: u32,
tpm_output_parameter_block: *mut u8,
) -> Status,
pub hash_log_extend_event: unsafe extern "efiapi" fn(
this: *mut Self,
hash_data: PhysicalAddress,
hash_data_len: u64,
algorithm_id: u32,
event: *mut c_void,
event_number: *mut u32,
event_log_last_entry: *mut PhysicalAddress,
) -> Status,
}
impl TcgProtocol {
pub const GUID: Guid = guid!("f541796d-a62e-4954-a775-9584f61b9cdd");
}