Skip to content

Commit 3c80fdf

Browse files
committed
Better macros
1 parent ac6eb85 commit 3c80fdf

File tree

6 files changed

+246
-264
lines changed

6 files changed

+246
-264
lines changed

openhcl/underhill_attestation/src/lib.rs

Lines changed: 21 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ use secure_key_release::VmgsEncryptionKeys;
4747
use static_assertions::const_assert_eq;
4848
use std::fmt::Debug;
4949
use tee_call::TeeCall;
50+
use telemetry::log_op;
51+
use telemetry::log_op_begin;
52+
use telemetry::log_op_end_err;
53+
use telemetry::log_op_end_ok;
5054
use telemetry::LogOpType;
5155
use thiserror::Error;
5256
use zerocopy::FromZeros;
@@ -370,14 +374,14 @@ pub async fn initialize_platform_security(
370374
let vmgs_encrypted: bool = vmgs.is_encrypted();
371375

372376
let start_time = std::time::SystemTime::now();
373-
tracing::info!(
377+
log_op_begin!(
378+
LogOpType::DecryptVmgs,
374379
?tcb_version,
375380
vmgs_encrypted,
376-
op_type = ?LogOpType::BeginDecryptVmgs,
377381
"Deriving keys"
378382
);
379383

380-
let derived_keys_result = get_derived_keys(
384+
let result = get_derived_keys(
381385
get,
382386
tee_call,
383387
vmgs,
@@ -394,18 +398,15 @@ pub async fn initialize_platform_security(
394398
)
395399
.await
396400
.map_err(|e| {
397-
tracing::error!(
398-
CVM_ALLOWED,
399-
op_type = ?LogOpType::DecryptVmgs,
400-
success = false,
401-
err = &e as &dyn std::error::Error,
402-
latency = std::time::SystemTime::now()
403-
.duration_since(start_time)
404-
.map_or(0, |d| d.as_millis()),
401+
log_op_end_err!(
402+
LogOpType::DecryptVmgs,
403+
e,
404+
start_time,
405405
"Failed to derive keys"
406406
);
407407
AttestationErrorInner::GetDerivedKeys(e)
408-
})?;
408+
});
409+
let derived_keys_result = result?;
409410

410411
// All Underhill VMs use VMGS encryption
411412
tracing::info!("Unlocking VMGS");
@@ -420,14 +421,10 @@ pub async fn initialize_platform_security(
420421
)
421422
.await
422423
{
423-
tracing::error!(
424-
CVM_ALLOWED,
425-
op_type = ?LogOpType::DecryptVmgs,
426-
success = false,
427-
err = &e as &dyn std::error::Error,
428-
latency = std::time::SystemTime::now()
429-
.duration_since(start_time)
430-
.map_or(0, |d| d.as_millis()),
424+
log_op_end_err!(
425+
LogOpType::DecryptVmgs,
426+
e,
427+
start_time,
431428
"Failed to unlock datastore"
432429
);
433430
get.event_log_fatal(guest_emulation_transport::api::EventLogId::ATTESTATION_FAILED)
@@ -436,17 +433,15 @@ pub async fn initialize_platform_security(
436433
Err(AttestationErrorInner::UnlockVmgsDataStore(e))?
437434
}
438435

439-
tracing::info!(
440-
CVM_ALLOWED,
441-
op_type = ?LogOpType::DecryptVmgs,
442-
success = true,
436+
log_op_end_ok!(
437+
LogOpType::DecryptVmgs,
438+
start_time,
443439
decrypt_gsp_type = ?derived_keys_result
444440
.key_protector_settings
445441
.decrypt_gsp_type,
446442
encrypt_gsp_type = ?derived_keys_result
447443
.key_protector_settings
448444
.encrypt_gsp_type,
449-
latency = std::time::SystemTime::now().duration_since(start_time).map_or(0, |d| d.as_millis()),
450445
"Unlocked datastore"
451446
);
452447

@@ -972,11 +967,7 @@ async fn get_derived_keys(
972967

973968
derived_keys.ingress = derived_keys_by_id.ingress;
974969

975-
tracing::info!(
976-
CVM_ALLOWED,
977-
op_type = ?LogOpType::ConvertEncryptionType,
978-
"Converting GSP method."
979-
);
970+
log_op!(LogOpType::ConvertEncryptionType, "Converting GSP method.");
980971
}
981972

982973
let egress_seed;

vm/devices/get/guest_emulation_transport/src/client.rs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ use mesh::rpc::Rpc;
1515
use mesh::rpc::RpcSend;
1616
use std::sync::Arc;
1717
use telemetry::LogOpType;
18+
use telemetry::log_op_begin;
19+
use telemetry::log_op_end_ok;
1820
use user_driver::DmaClient;
1921
use vpci::bus_control::VpciBusEvent;
2022
use zerocopy::IntoBytes;
@@ -350,9 +352,8 @@ impl GuestEmulationTransportClient {
350352
let start_time = std::time::SystemTime::now();
351353
getrandom::fill(&mut buffer).expect("rng failure");
352354

353-
tracing::info!(
354-
CVM_ALLOWED,
355-
op_type = ?LogOpType::BeginGspCallback,
355+
log_op_begin!(
356+
LogOpType::GspCallback,
356357
"Getting guest state protection data"
357358
);
358359

@@ -367,12 +368,9 @@ impl GuestEmulationTransportClient {
367368
.call(msg::Msg::GuestStateProtection, Box::new(gsp_request))
368369
.await;
369370

370-
tracing::info!(
371-
CVM_ALLOWED,
372-
op_type = ?LogOpType::GspCallback,
373-
latency = std::time::SystemTime::now()
374-
.duration_since(start_time)
375-
.map_or(0, |d| d.as_millis()),
371+
log_op_end_ok!(
372+
LogOpType::GspCallback,
373+
start_time,
376374
"Got guest state protection data"
377375
);
378376

vm/devices/tpm/src/lib.rs

Lines changed: 23 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ use std::sync::Arc;
5050
use std::task::Poll;
5151
use std::task::Waker;
5252
use telemetry::LogOpType;
53+
use telemetry::log_op_begin;
54+
use telemetry::log_op_end;
55+
use telemetry::log_op_end_err;
56+
use telemetry::log_op_end_ok;
5357
use thiserror::Error;
5458
use tpm_helper::CommandDebugInfo;
5559
use tpm_helper::TpmCommandError;
@@ -587,9 +591,8 @@ impl Tpm {
587591
// The procedure also generates randomized AK based on the TPM seed
588592
// and writes the AK into `TPM_AZURE_AIK_HANDLE` NV store.
589593
let start_time = std::time::SystemTime::now();
590-
tracing::info!(
591-
CVM_ALLOWED,
592-
op_type = ?LogOpType::BeginVtpmKeysProvision,
594+
log_op_begin!(
595+
LogOpType::VtpmKeysProvision,
593596
key_type = ?KeyType::AkPub,
594597
bios_guid = %self.bios_guid,
595598
force_ak_regen,
@@ -599,16 +602,12 @@ impl Tpm {
599602
.tpm_engine_helper
600603
.create_ak_pub(force_ak_regen)
601604
.map_err(|e| {
602-
tracing::error!(
603-
CVM_ALLOWED,
604-
op_type = ?LogOpType::VtpmKeysProvision,
605+
log_op_end_err!(
606+
LogOpType::VtpmKeysProvision,
607+
e,
608+
start_time,
605609
key_type = ?KeyType::AkPub,
606610
bios_guid = %self.bios_guid,
607-
success = false,
608-
err = &e as &dyn std::error::Error,
609-
latency = std::time::SystemTime::now()
610-
.duration_since(start_time)
611-
.map_or(0, |d| d.as_millis()),
612611
"Error creating AKPub key"
613612
);
614613
TpmErrorKind::CreateAkPublic(e)
@@ -621,50 +620,30 @@ impl Tpm {
621620
let ak_pub_hash = ak_pub_hasher.finalize();
622621
self.ak_pub_hash = base64::engine::general_purpose::STANDARD.encode(ak_pub_hash);
623622

624-
tracing::info!(
625-
CVM_ALLOWED,
626-
op_type = ?LogOpType::VtpmKeysProvision,
623+
log_op_end_ok!(
624+
LogOpType::VtpmKeysProvision,
625+
start_time,
627626
key_type = ?KeyType::AkPub,
628627
bios_guid = %self.bios_guid,
629628
pub_key = self.ak_pub_hash,
630-
success = true,
631-
latency = std::time::SystemTime::now()
632-
.duration_since(start_time)
633-
.map_or(0, |d| d.as_millis()),
634629
"Created AKPub key"
635630
);
636631

637632
let start_time = std::time::SystemTime::now();
638-
tracing::info!(
639-
CVM_ALLOWED,
640-
op_type = ?LogOpType::BeginVtpmKeysProvision,
633+
log_op_begin!(
634+
LogOpType::VtpmKeysProvision,
641635
key_type = ?KeyType::EkPub,
642636
"Creating EKPub key"
643637
);
644-
let ek_pub = self.tpm_engine_helper.create_ek_pub().map_err(|e| {
645-
tracing::error!(
646-
CVM_ALLOWED,
647-
op_type = ?LogOpType::VtpmKeysProvision,
648-
key_type = ?KeyType::EkPub,
649-
success = false,
650-
err = &e as &dyn std::error::Error,
651-
latency = std::time::SystemTime::now()
652-
.duration_since(start_time)
653-
.map_or(0, |d| d.as_millis()),
654-
"Error creating EKPub key"
655-
);
656-
TpmErrorKind::CreateEkPublic(e)
657-
})?;
658-
tracing::info!(
659-
CVM_ALLOWED,
660-
op_type = ?LogOpType::VtpmKeysProvision,
638+
let ek_pub_result = self.tpm_engine_helper.create_ek_pub().map_err(TpmErrorKind::CreateEkPublic);
639+
log_op_end!(
640+
LogOpType::VtpmKeysProvision,
641+
ek_pub_result,
642+
start_time,
661643
key_type = ?KeyType::EkPub,
662-
success = true,
663-
latency = std::time::SystemTime::now()
664-
.duration_since(start_time)
665-
.map_or(0, |d| d.as_millis()),
666644
"Created EKPub key"
667645
);
646+
let ek_pub = ek_pub_result?;
668647

669648
self.keys = Some(TpmKeys { ak_pub, ek_pub });
670649
tracing::info!(
@@ -1032,9 +1011,8 @@ impl Tpm {
10321011
return Ok(());
10331012
}
10341013

1035-
tracing::info!(
1036-
CVM_ALLOWED,
1037-
op_type = ?LogOpType::BeginAkCertProvision,
1014+
log_op_begin!(
1015+
LogOpType::AkCertProvision,
10381016
is_renew,
10391017
pub_key = self.ak_pub_hash,
10401018
bios_guid = %self.bios_guid,

0 commit comments

Comments
 (0)