@@ -6,9 +6,9 @@ use anyhow::{anyhow, bail, Context, Result};
66use hex_literal:: hex;
77use sha2:: { Digest , Sha384 } ;
88
9+ use crate :: acpi:: Tables ;
910use crate :: num:: read_le;
10- use crate :: util:: debug_print_log;
11- use crate :: { measure_log, measure_sha384, utf16_encode, Machine } ;
11+ use crate :: { measure_log, measure_sha384, utf16_encode, Machine , RtmrLog } ;
1212
1313const PAGE_SIZE : u64 = 0x1000 ;
1414const MR_EXTEND_GRANULARITY : usize = 0x100 ;
@@ -233,7 +233,13 @@ impl<'a> Tdvf<'a> {
233233 } )
234234 }
235235
236+ #[ allow( dead_code) ]
236237 pub fn rtmr0 ( & self , machine : & Machine ) -> Result < Vec < u8 > > {
238+ let ( rtmr0_log, _) = self . rtmr0_log ( machine) ?;
239+ Ok ( measure_log ( & rtmr0_log) )
240+ }
241+
242+ pub fn rtmr0_log ( & self , machine : & Machine ) -> Result < ( RtmrLog , Tables ) > {
237243 let td_hob_hash = self . measure_td_hob ( machine. memory_size ) ?;
238244 let cfv_image_hash = hex ! ( "344BC51C980BA621AAA00DA3ED7436F7D6E549197DFE699515DFA2C6583D95E6412AF21C097D473155875FFD561D6790" ) ;
239245 let boot000_hash = hex ! ( "23ADA07F5261F12F34A0BD8E46760962D6B4D576A416F1FEA1C64BC656B1D28EACF7047AE6E967C58FD2A98BFA74C298" ) ;
@@ -245,23 +251,24 @@ impl<'a> Tdvf<'a> {
245251
246252 // RTMR0 calculation
247253
248- let rtmr0_log = vec ! [
249- td_hob_hash,
250- cfv_image_hash. to_vec( ) ,
251- measure_tdx_efi_variable( "8BE4DF61-93CA-11D2-AA0D-00E098032B8C" , "SecureBoot" ) ?,
252- measure_tdx_efi_variable( "8BE4DF61-93CA-11D2-AA0D-00E098032B8C" , "PK" ) ?,
253- measure_tdx_efi_variable( "8BE4DF61-93CA-11D2-AA0D-00E098032B8C" , "KEK" ) ?,
254- measure_tdx_efi_variable( "D719B2CB-3D3A-4596-A3BC-DAD00E67656F" , "db" ) ?,
255- measure_tdx_efi_variable( "D719B2CB-3D3A-4596-A3BC-DAD00E67656F" , "dbx" ) ?,
256- measure_sha384( & [ 0x00 , 0x00 , 0x00 , 0x00 ] ) , // Separator
257- acpi_loader_hash,
258- acpi_rsdp_hash,
259- acpi_tables_hash,
260- measure_sha384( & [ 0x00 , 0x00 ] ) , // BootOrder
261- boot000_hash. to_vec( ) ,
262- ] ;
263- debug_print_log ( "RTMR0" , & rtmr0_log) ;
264- Ok ( measure_log ( & rtmr0_log) )
254+ Ok ( (
255+ vec ! [
256+ td_hob_hash,
257+ cfv_image_hash. to_vec( ) ,
258+ measure_tdx_efi_variable( "8BE4DF61-93CA-11D2-AA0D-00E098032B8C" , "SecureBoot" ) ?,
259+ measure_tdx_efi_variable( "8BE4DF61-93CA-11D2-AA0D-00E098032B8C" , "PK" ) ?,
260+ measure_tdx_efi_variable( "8BE4DF61-93CA-11D2-AA0D-00E098032B8C" , "KEK" ) ?,
261+ measure_tdx_efi_variable( "D719B2CB-3D3A-4596-A3BC-DAD00E67656F" , "db" ) ?,
262+ measure_tdx_efi_variable( "D719B2CB-3D3A-4596-A3BC-DAD00E67656F" , "dbx" ) ?,
263+ measure_sha384( & [ 0x00 , 0x00 , 0x00 , 0x00 ] ) , // Separator
264+ acpi_loader_hash,
265+ acpi_rsdp_hash,
266+ acpi_tables_hash,
267+ measure_sha384( & [ 0x00 , 0x00 ] ) , // BootOrder
268+ boot000_hash. to_vec( ) ,
269+ ] ,
270+ tables,
271+ ) )
265272 }
266273
267274 fn measure_td_hob ( & self , memory_size : u64 ) -> Result < Vec < u8 > > {
0 commit comments