Skip to main content

TeeCapabilities

Struct TeeCapabilities 

Source
#[non_exhaustive]
pub struct TeeCapabilities { pub sgx: Detection, pub tdx: Detection, pub sev: Detection, pub sev_snp: Detection, pub trustzone: Detection, pub secure_enclave: Detection, pub nitro: Detection, }
Expand description

Snapshot of every TEE probe the vault knows how to run on this host.

Adding a new probe is a minor-version change — the struct is #[non_exhaustive]. Existing fields will not change meaning across the 1.x line.

§Examples

use key_vault::tee::{detect_tee_capabilities, Detection};

let caps = detect_tee_capabilities();
// We cannot assert specific values — the result depends on hardware. But
// every field is queryable:
let _ = caps.sgx;
let _ = caps.tdx;
let _ = caps.sev;
let _ = caps.sev_snp;
let _ = caps.trustzone;
let _ = caps.secure_enclave;
let _ = caps.nitro;

// Display is implemented for human-readable summaries:
let _ = format!("{caps}");

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§sgx: Detection

Intel Software Guard Extensions (SGX). Detected by CPUID leaf 7, EBX bit 2 on x86_64. Always Unknown on non-x86_64.

§tdx: Detection

Intel Trust Domain Extensions (TDX). Detected by CPUID leaf 0x21 returning the “IntelTDX “ signature in EBX/ECX/EDX on x86_64. Always Unknown on non-x86_64.

§sev: Detection

AMD Secure Encrypted Virtualization (SEV). Detected by CPUID extended leaf 0x8000001F EAX bit 1 on x86_64. Always Unknown on non-x86_64 or on Intel hosts.

§sev_snp: Detection

AMD Secure Encrypted Virtualization — Secure Nested Paging (SEV-SNP). Detected by CPUID extended leaf 0x8000001F EAX bit 4 on x86_64. Always Unknown on non-x86_64 or on Intel hosts.

§trustzone: Detection

ARM TrustZone. Userspace cannot reliably probe TrustZone availability without privileged registers, so this is always Unknown in 1.0. Operators that know their hardware supports TrustZone should configure the vault explicitly.

§secure_enclave: Detection

Apple Secure Enclave. Reported as Detected on Apple Silicon (aarch64-apple-darwin), NotDetected on Intel macOS, and Unknown on non-Apple platforms.

§nitro: Detection

AWS Nitro Enclaves availability. On Linux this is inferred from the DMI system vendor (/sys/devices/virtual/dmi/id/sys_vendor); other hosts report Unknown.

Implementations§

Source§

impl TeeCapabilities

Source

pub fn any_detected(self) -> bool

Returns true if at least one probe positively confirmed a TEE.

This is the convenience predicate for “should I prefer a hardware-backed fetcher?”. Unknown does not count.

Trait Implementations§

Source§

impl Clone for TeeCapabilities

Source§

fn clone(&self) -> TeeCapabilities

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TeeCapabilities

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for TeeCapabilities

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for TeeCapabilities

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for TeeCapabilities

Source§

fn eq(&self, other: &TeeCapabilities) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for TeeCapabilities

Source§

impl Eq for TeeCapabilities

Source§

impl StructuralPartialEq for TeeCapabilities

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more