pub enum IgvmAttestTestConfig {
AkCertRequestFailureAndRetry,
AkCertRequestFailureAndRetryExtended,
AkCertPersistentAcrossBoot,
AkCertPersistentAcrossBootExtended,
KeyReleaseFailureSkipHwUnsealing,
KeyReleaseFailure,
}Expand description
Configuration for the GED’s IGVM Attest request handler in test scenarios.
Non-extended variants (AkCertRequestFailureAndRetry,
AkCertPersistentAcrossBoot) are used by OpenVMM-hosted tests
that invoke the GED directly. Extended variants and the
KeyReleaseFailure* variants are used by Hyper-V tests via
the test_igvm_agent_rpc_server, where the Hyper-V boot
sequence (including initial_reboot) generates extra IGVM
attest requests before the test code runs.
Variants§
AkCertRequestFailureAndRetry
Config for testing AK cert retry after failure.
Plan: two failures then one success. Used by OpenVMM-hosted tests where no extra boot-time requests occur.
AkCertRequestFailureAndRetryExtended
Config for testing AK cert retry after failure — extended plan for Hyper-V tests.
Hyper-V VMs go through an initial_reboot and may generate
multiple background AK cert requests during the initial boot
and the reboot. The extra failure actions absorb those
requests so the final success action is available when the
guest test code runs.
AkCertPersistentAcrossBoot
Config for testing AK cert persistency across boots.
Plan: one success then always-no-response. Used by OpenVMM-hosted tests where no extra boot-time requests occur.
AkCertPersistentAcrossBootExtended
Config for testing AK cert persistency across boots — extended plan for Hyper-V tests.
Hyper-V VMs go through an initial_reboot that can consume
the first success action before the test code runs. The
extra RespondSuccess ensures the cert is still provisioned
after the reboot, so the subsequent boot can validate that
the cert is served from the persistent cache.
KeyReleaseFailureSkipHwUnsealing
Config for testing the skip_hw_unsealing signal from the
IGVM agent.
When the agent responds with skip_hw_unsealing, the
attestation code skips the hardware unsealing step even if
the hardware key protector and derived keys are available.
This causes initialize_platform_security to fall through
to a scheme-specific error (KP / GSP / GspById), making
VMGS unlock fail.
KeyReleaseFailure
Config for testing key release failure without the
skip_hw_unsealing signal.
When the agent responds with a plain failure (no skip signal), the attestation code falls back to hardware unsealing using the hardware key protector saved on the previous successful boot. The VM should boot normally.
Trait Implementations§
Source§impl Clone for IgvmAttestTestConfig
impl Clone for IgvmAttestTestConfig
Source§fn clone(&self) -> IgvmAttestTestConfig
fn clone(&self) -> IgvmAttestTestConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for IgvmAttestTestConfig
impl Debug for IgvmAttestTestConfig
Source§impl DefaultEncoding for IgvmAttestTestConfig
impl DefaultEncoding for IgvmAttestTestConfig
Source§impl Inspect for IgvmAttestTestConfig
impl Inspect for IgvmAttestTestConfig
Source§impl<'encoding> OneofDecode<'encoding, Resource> for IgvmAttestTestConfig
impl<'encoding> OneofDecode<'encoding, Resource> for IgvmAttestTestConfig
Source§fn read_variant(
item: &mut InplaceOption<'_, Self>,
n: u32,
field: FieldReader<'encoding, '_, Resource>,
) -> Result<()>
fn read_variant( item: &mut InplaceOption<'_, Self>, n: u32, field: FieldReader<'encoding, '_, Resource>, ) -> Result<()>
Source§impl OneofEncode<Resource> for IgvmAttestTestConfig
impl OneofEncode<Resource> for IgvmAttestTestConfig
Source§fn write_variant(self, writer: MessageWriter<'_, '_, Resource>)
fn write_variant(self, writer: MessageWriter<'_, '_, Resource>)
Source§fn compute_variant_size(&mut self, sizer: MessageSizer<'_>)
fn compute_variant_size(&mut self, sizer: MessageSizer<'_>)
impl Copy for IgvmAttestTestConfig
Auto Trait Implementations§
impl Freeze for IgvmAttestTestConfig
impl RefUnwindSafe for IgvmAttestTestConfig
impl Send for IgvmAttestTestConfig
impl Sync for IgvmAttestTestConfig
impl Unpin for IgvmAttestTestConfig
impl UnsafeUnpin for IgvmAttestTestConfig
impl UnwindSafe for IgvmAttestTestConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> MeshField for T
impl<T> MeshField for T
§impl<T> MeshPayload for T
impl<T> MeshPayload for T
§impl<T> SerializeMessage for Twhere
T: 'static + MeshPayload + Send,
impl<T> SerializeMessage for Twhere
T: 'static + MeshPayload + Send,
§fn compute_message_size(&mut self, sizer: MessageSizer<'_>)
fn compute_message_size(&mut self, sizer: MessageSizer<'_>)
MessageEncode::compute_message_size].§fn write_message(self, writer: MessageWriter<'_, '_, Resource>)
fn write_message(self, writer: MessageWriter<'_, '_, Resource>)
MessageEncode::write_message].