Skip to main content

Session

Struct Session 

Source
pub struct Session<T> {
    pub tek: Key,
    pub tik: Key,
    /* private fields */
}
Expand description

Describes a secure channel with the HYGON SP.

This is required for facilitating an CSV launch and attestation.

Fields§

§tek: Key

Transport Encryption Key.

§tik: Key

Transport Integrity Key.

Implementations§

Source§

impl Session<Initialized>

Source

pub fn start(&self, chain: Chain) -> Result<Start>

Produces data needed to initiate the CSV launch sequence.

Source

pub fn start_pdh(&self, pdh: Certificate) -> Result<Start>

Like the above start function, yet takes PDH as input instead of deriving it from a certificate chain.

Source

pub fn measure(self) -> Result<Session<Measuring>>

Transitions to a measuring state.

Any measureable data submitted to the HYGON SP should also be included in the Session to easily compare against the HYGON SP’s measurement.

Source

pub fn verify( self, _digest: &[u8], _build: Build, msr: Measurement, ) -> Result<Session<Verified>>

Verifies the HYGON SP’s measurement.

Source

pub unsafe fn mock_verify(self, msr: Measurement) -> Result<Session<Verified>>

Skip verifying the measurement

§Safety

This method must only be used in tests or unattested workflows.

Source§

impl Session<Measuring>

Source

pub fn update_data(&mut self, data: &[u8]) -> Result<()>

Adds additional data to the digest.

Everything measured by the HYGON SP should also be measured by the Session to ensure both measurements are the same.

Source

pub fn verify(self, build: Build, msr: Measurement) -> Result<Session<Verified>>

Verifies the session’s measurement against the HYGON SP’s measurement.

Source

pub fn verify_with_digest( self, build: Build, msr: Measurement, digest: &[u8], ) -> Result<Session<Verified>>

Verifies the session’s measurement against the HYGON SP’s measurement using an externally generated digest.

Source§

impl Session<Verified>

Source

pub fn secret(&self, flags: HeaderFlags, data: &[u8]) -> Result<Secret>

Creates a packet for a secret to be injected into the guest.

Trait Implementations§

Source§

impl TryFrom<Policy> for Session<Initialized>

Source§

type Error = Error

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

fn try_from(value: Policy) -> Result<Self>

Performs the conversion.

Auto Trait Implementations§

§

impl<T> Freeze for Session<T>
where T: Freeze,

§

impl<T> RefUnwindSafe for Session<T>
where T: RefUnwindSafe,

§

impl<T> Send for Session<T>
where T: Send,

§

impl<T> Sync for Session<T>
where T: Sync,

§

impl<T> Unpin for Session<T>
where T: Unpin,

§

impl<T> UnsafeUnpin for Session<T>
where T: UnsafeUnpin,

§

impl<T> UnwindSafe for Session<T>
where T: UnwindSafe,

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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, 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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,