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 Agent
s 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>
impl<PB: ProtocolBehavior> TraceContext<PB>
pub fn new(spawner: Spawner<PB>) -> Self
pub fn verify_security_violations(&self) -> Result<(), Error>
sourcepub fn number_matching_message_with_source(
&self,
source: Source,
type_id: TypeId,
tls_message_type: &Option<<PB::ProtocolTypes as ProtocolTypes>::Matcher>,
) -> usize
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
sourcepub fn number_matching_message(
&self,
type_id: TypeId,
tls_message_type: &Option<<PB::ProtocolTypes as ProtocolTypes>::Matcher>,
) -> usize
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.
pub fn find_claim( &self, agent_name: AgentName, query_type_shape: TypeShape<PB::ProtocolTypes>, ) -> Option<Box<dyn EvaluatedTerm<PB::ProtocolTypes>>>
sourcepub fn find_variable(
&self,
query_type_shape: TypeShape<PB::ProtocolTypes>,
query: &Query<<PB::ProtocolTypes as ProtocolTypes>::Matcher>,
) -> Option<&dyn VariableData<PB::ProtocolTypes>>
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
pub fn spawn(&mut self, descriptor: &AgentDescriptor) -> Result<(), Error>
pub fn find_agent_mut( &mut self, name: AgentName, ) -> Result<&mut Agent<PB>, Error>
pub fn find_agent(&self, name: AgentName) -> Result<&Agent<PB>, Error>
pub fn agents_successful(&self) -> bool
Trait Implementations§
source§impl<PB: Debug + ProtocolBehavior> Debug for TraceContext<PB>
impl<PB: Debug + ProtocolBehavior> Debug for TraceContext<PB>
source§impl<PB: ProtocolBehavior> Display for TraceContext<PB>
impl<PB: ProtocolBehavior> Display for TraceContext<PB>
source§impl<PB: ProtocolBehavior + PartialEq> PartialEq for TraceContext<PB>
impl<PB: ProtocolBehavior + PartialEq> PartialEq for TraceContext<PB>
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>where
PB: Unpin,
<<PB as ProtocolBehavior>::ProtocolTypes as ProtocolTypes>::Matcher: Unpin,
<PB as ProtocolBehavior>::ProtocolTypes: Unpin,
impl<PB> !UnwindSafe for TraceContext<PB>
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
§impl<Tail, T> Prepend<T> for Tail
impl<Tail, T> Prepend<T> for Tail
§type PreprendResult = Tail
type PreprendResult = Tail
TupleList
], of an [Prepend::prepend()
] call,
including the prepended entry.