Struct puffin::trace::TraceContext

source ·
pub struct TraceContext<PB: ProtocolBehavior> {
    pub knowledge_store: KnowledgeStore<PB::ProtocolTypes>,
    agents: Vec<Agent<PB>>,
    claims: GlobalClaimList<PB::ProtocolTypes, PB::Claim>,
    spawner: Spawner<PB>,
    phantom: PhantomData<PB>,
}
Expand description

The TraceContext represents the state of an execution.

The TraceContext contains a list of VariableData, which is known as the knowledge of the attacker. VariableData can contain data of various types like for example client and server extensions, cipher suits or session ID It also holds the concrete references to the Agents and the underlying streams, which contain the messages which have need exchanged and are not yet processed by an output step.

Fields§

§knowledge_store: KnowledgeStore<PB::ProtocolTypes>

The knowledge of the attacker

§agents: Vec<Agent<PB>>§claims: GlobalClaimList<PB::ProtocolTypes, PB::Claim>§spawner: Spawner<PB>§phantom: PhantomData<PB>

Implementations§

source§

impl<PB: ProtocolBehavior> TraceContext<PB>

source

pub fn new(spawner: Spawner<PB>) -> Self

source

pub fn verify_security_violations(&self) -> Result<(), Error>

source

pub fn number_matching_message_with_source( &self, source: Source, type_id: TypeId, tls_message_type: &Option<<PB::ProtocolTypes as ProtocolTypes>::Matcher>, ) -> usize

Count the number of sub-messages of type type_id with the correct source

source

pub fn number_matching_message( &self, type_id: TypeId, tls_message_type: &Option<<PB::ProtocolTypes as ProtocolTypes>::Matcher>, ) -> usize

Count the number of sub-messages of type type_id in the output message.

source

pub fn find_claim( &self, agent_name: AgentName, query_type_shape: TypeShape<PB::ProtocolTypes>, ) -> Option<Box<dyn EvaluatedTerm<PB::ProtocolTypes>>>

source

pub fn find_variable( &self, query_type_shape: TypeShape<PB::ProtocolTypes>, query: &Query<<PB::ProtocolTypes as ProtocolTypes>::Matcher>, ) -> Option<&dyn VariableData<PB::ProtocolTypes>>

Returns the variable which matches best -> highest specificity If we want a variable with lower specificity, then we can just query less specific

source

pub fn spawn(&mut self, descriptor: &AgentDescriptor) -> Result<(), Error>

source

pub fn find_agent_mut( &mut self, name: AgentName, ) -> Result<&mut Agent<PB>, Error>

source

pub fn find_agent(&self, name: AgentName) -> Result<&Agent<PB>, Error>

source

pub fn agents_successful(&self) -> bool

Trait Implementations§

source§

impl<PB: Debug + ProtocolBehavior> Debug for TraceContext<PB>
where PB::ProtocolTypes: Debug, PB::Claim: Debug,

source§

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

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

impl<PB: ProtocolBehavior> Display for TraceContext<PB>

source§

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

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

impl<PB: ProtocolBehavior + PartialEq> PartialEq for TraceContext<PB>

source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · 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.

Auto Trait Implementations§

§

impl<PB> Freeze for TraceContext<PB>

§

impl<PB> !RefUnwindSafe for TraceContext<PB>

§

impl<PB> !Send for TraceContext<PB>

§

impl<PB> !Sync for TraceContext<PB>

§

impl<PB> Unpin for TraceContext<PB>

§

impl<PB> !UnwindSafe for TraceContext<PB>

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> AsAny for T
where T: 'static,

source§

fn as_any(&self) -> &(dyn Any + 'static)

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.

§

impl<Tail, T> Prepend<T> for Tail

§

type PreprendResult = Tail

The Resulting [TupleList], of an [Prepend::prepend()] call, including the prepended entry.
§

fn prepend(self, value: T) -> (T, <Tail as Prepend<T>>::PreprendResult)

Prepend a value to this tuple, returning a new tuple with prepended value.
source§

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

source§

default 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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> DebugAny for T
where T: Any + Debug,

§

impl<T> MaybeHasScalabilityMonitor for T

§

impl<T> UnsafeAny for T
where T: Any,