Struct puffin::trace::TraceContext
source · pub struct TraceContext<PB: ProtocolBehavior> {
pub knowledge_store: KnowledgeStore<PB::ProtocolTypes>,
agents: Vec<Agent<PB>>,
claims: GlobalClaimList<PB::Claim>,
pub config_trace: ConfigTrace,
spawner: Spawner<PB>,
phantom: PhantomData<PB>,
pub executed_until: usize,
}Expand description
The TraceContext represents the state of an execution.
The TraceContext contains a list of EvaluatedTerm, which is known as the knowledge
of the attacker. EvaluatedTerm 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::Claim>§config_trace: ConfigTrace§spawner: Spawner<PB>§phantom: PhantomData<PB>§executed_until: usizeThe number of steps that have been successfully executed
Implementations§
source§impl<PB: ProtocolBehavior> TraceContext<PB>
impl<PB: ProtocolBehavior> TraceContext<PB>
pub fn new(spawner: Spawner<PB>) -> Self
pub fn new_config(spawner: Spawner<PB>, config_trace: ConfigTrace) -> 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 EvaluatedTerm<PB::ProtocolTypes>>
pub fn find_variable( &self, query_type_shape: TypeShape<PB::ProtocolTypes>, query: &Query<<PB::ProtocolTypes as ProtocolTypes>::Matcher>, ) -> Option<&dyn EvaluatedTerm<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<<PB::ProtocolTypes as ProtocolTypes>::PUTConfig>, ) -> 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>::PUTConfig: 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.