Expand description
This module define the execution Trace
s.
Each Trace
s consist of several Step
s, of which each has either an OutputAction
or
InputAction
. This is a declarative way of modeling communication between Agent
s. The
TraceContext
holds data, also known as VariableData
, which is created by Agent
s
during the concrete execution of the Trace. It also holds the Agent
s with the references to
concrete PUT.
§Serializability of Traces
Each trace is serializable to JSON or even binary data. This helps at reproducing discovered security vulnerabilities during fuzzing. If a trace triggers a security vulnerability we can store it on disk and replay it when investigating the case. As traces depend on concrete implementations as discussed in the next section we need to link serialized data like strings or numerical IDs to functions implemented in Rust.
Structs§
- Provide inputs to the
Agent
. - Knowledge describes an atomic piece of knowledge inferred by the
crate::protocol::EvaluatedTerm::extract_knowledge
function Knowledge is made of the data, the source of the output, the TLS message type and the internal type. - Advance the
Agent
’s state and process the produced output. - RawKnowledge stores
- The
TraceContext
represents the state of an execution.
Enums§
- There are two action types
OutputAction
andInputAction
. - Source stores the origin of a knowledge, whether the agent name or the label of the precomputation that produced it