4#include <unordered_map>
10#define Max_Num_Register 17
11#define Max_Name_Length 10000
285 std::vector<std::vector<::Software::ProbingSetStruct>>
ProbingSet;
void FreeAllocatedMemory(Software::SharedDataStruct *SharedData, Software::SettingsStruct *Settings, ::Software::SimulationStruct *Simulation, Software::ProbesStruct *Probes)
Defines a probe that will be used in the preparation step.
int * Probes
A list of probe indices.
int NumberOfProbes
The number of probes.
char ** ProbeName
A list of probe names.
ExtendedProbesStruct(uint8_t RegNr, uint8_t RegBit, uint32_t Clk, uint8_t Val)
Defines a struct that track meta information for probes.
uint32_t FullVerticalProbesSize
Contains probe size of full vertical probe.
std::vector< uint8_t > MemoryProbesIncluded
stores bit position of a memory word that will be probed
std::vector< std::vector< uint32_t > > FullHorizontalProbesSize
Contains probe size of each register for full horizontal probe.
bool ProbeFullVertical
Decision if full vertical should be probed.
std::vector< std::vector< uint8_t > > FULLHRProbesIncluded
Store the probes which are not excluded in a horizontal probe.
std::vector< bool > HorizontalProbesExcluded
Decision which bits should be probed in a horizontal probe.
std::vector< std::vector< std::tuple< uint8_t, uint8_t > > > VerticalProbesIncluded
Store the probes which are not excluded in a vertical probe.
std::vector< std::vector< uint8_t > > HorizontalBitsIncluded
Store the probes which are not excluded in a horizontal probe.
bool ProbeMemory
Decision if memory should be probed.
std::vector< std::vector< uint8_t > > NormalProbesIncluded
stores bit position of every register that will be probed
std::vector< uint8_t > FullVerticalRelevantBits
std::vector< uint8_t > MemoryShadowRegisterProbesIncluded
stores bit position of the shadow memory register that will be probed
std::vector< std::vector< uint8_t > > PipelineForwardingProbesIncluded
[32][] one pipeline probe contains included register of i-th bit with a depth of #PipelineSize
bool ProbePipelineForwarding
Decision if pipeline forwarding should be probed.
std::vector< std::vector< uint32_t > > VerticalProbesSize
Contains probe size of each register for vertical probe.
std::vector< uint8_t > PipelineForwardingRelevantBits
uint32_t PipelineForwardingProbesSize
Contains probe size of pipeline forwarding probe
std::vector< std::vector< uint8_t > > FullVerticalProbesIncluded
[32][] one vertical probe contains included register of i-th bit
bool ProbeMemoryShadowRegister
Decision if memory shadow register should be probed.
bool ProbeFullHorizontal
Decision if full horizontal should be probed.
Defines a struct that tracks metadata during the simulation.
uint32_t StoreMemoryLatestClockCycle
Cycle that last used a store memory instruction.
std::vector< uint32_t > VerticalLatestClockCycle
std::vector< uint32_t > RegisterLatestValue
List of previous values for each register.
uint32_t MemoryLatestClockCycle
Cycle that last used a memory instruction.
uint32_t LoadMemoryLatestClockCycle
Cycle that last used a load memory instruction.
std::vector< uint32_t > RegisterLatestClockCycle
List of cycles where each register was used last.
Defines how every probe during simulation looks like.
uint64_t ProbeInfo
Uniquly identifies a probe, (Cycle | Dependency | ID | RegNr1 | RegNr2 | Bit | ExtensionSize)
uint64_t TransitionCycles
Contains previous cycle where probed register was used last.
uint64_t SpecialInfo
Contains information that might change depending on type of probe.
ProbingSetStruct(uint32_t TestOrder)
Util::ContingencyTableStruct ContingencyTable
The contingency table storing the occurences of values probed by the extended probes.
std::vector<::Software::ProbesStruct > StandardProbe
The standard probes placed by an adversary.
ProbingSetStruct(::Software::ProbesStruct &Probe)
ProbingSetStruct(std::vector<::Software::ProbesStruct > &Probe)
Defines how the Emulator models the code section.
std::string name
each section consists of a corresponding name
std::vector< mulator::u8 > bytes
each section contains
Defines how the Emulator models the memory.
Defines all settings regarding software simulations.
int ClockSignal
The index of the clock signal.
int ** InitialSim_Inputs
The indices of the initialization signals.
std::vector< mulator::u32 > halt_addresses
int * MaxNumberOfSharesGroupValues
The number of shares per input bit.
uint64_t NumberOfStepSimulationsToWrite
The number of simulations before a report is written.
int NumberOfAlwaysRandomInputs
Number of fresh random inputs.
int Max_No_ClockCycles
The maximum number of clock cycles to simulate.
uint8_t * InitialSim_IsInitialized
uint64_t * EndSimCondition_Values
The values the signals have to reach to terminate the simulation.
int Max_No_ReportEntries
The maximum number of entries in the report.
uint32_t NumberOfPipelineStages
number of pipeline stages provided by the user
std::vector< mulator::u32 > symbol_addresses
char ** InitialSim_InputName
A list of input names to create a link for the emulator.
std::vector< CodeSection > binary
mulator::u32 randomness_end_addr
end address of emulator internal randomness section
int NumberOfGroups
The number of user-defined groups.
int * TestClockCycles
The particular clock cycles the adversary can target.
mulator::u32 randomness_start_addr
start address of emulator internal randomness section
std::string compilerFlags
compiler flags that will be parsed to tell the compiler how to compile
int * InitialSim_InputsLength
char MinimizeProbeSets
Decision whether the number of probing sets should be minimized before the evaluation.
int Max_no_of_Threads
The maximum number of threads PROLEAD can use for parallelism.
int ** Group_Values
The values assigned to the user-defined groups.
int * EndSimCondition_Signals
The indices of the single-bit signals terminating the simulation.
int EndSim_NumberOfWaitCycles
Number of cycles to wait after each simulation.
int InitialSim_NumberOfClockCycles
The number of clock cycles to initialize the simulation.
int NumberOfTestClockCycles
The number of clock cycles in which the adversary can place probes.
int TestTransitional
Decision whether transitional leakage is included.
std::unordered_map< mulator::u32, std::string > symbol_names
int TestOrder
The security order to test.
uint64_t ** InitialSim_Values
The signal values during the initialization cycles.
mulator::u32 length_occupied_ram
int MaxDistanceMultivariet
The maximum distance in time, i.e. clock cycles, for multivariate adversaries.
mulator::u32 main_address
start address of main function
mulator::u32 start_address
address of cipher where PROLEAD starts to evaluate
int TestMultivariate
Decision whether univariate or multivariate adversaries should be considered.
uint64_t NumberOfSimulations
The total number of simulations.
int InitialSim_NumberOfInputs
The number of inputs which are assigned to initialize the simulation.
int * AlwaysRandomInputs
Indices of the fresh random input signals.
int EndSimCondition_ClockCycles
The number of clock cycles after which the simulation terminates.
std::unordered_map< std::string, uint32_t > InitialSim_PositionInEmulatorRam
std::vector< std::string > externalBinaryInformation
contains path to binary, disassembled file and .map file in case of directly provided binary
MemoryRange ram
RAM memory region for emulator.
std::string funcContainingCipher
name of function containing cipher to search in disassembled file
int EndSimCondition_NumberOfSignals
The bit width of the signal which terminates the simulation.
MemoryRange flash
Flash memory region for emulator.
int NumberOfGroupValues
The size of the group values, i.e. their bit length.
char CompactDistributions
Decision whether the evaluation should be performed in compact or normal mode.
mulator::Architecture arch
ISA version of the binary.
uint64_t NumberOfStepSimulations
The number of simulations before the simulations are evaluated.
mulator::u32 randomness_segment_length
length of emulator internal randomness section
Defines the shared state of a simulation.
std::vector< uint8_t > VariableOrArrayParams
std::vector< uint32_t > StartaddrInRAM
address of shared data in RAM
std::vector< std::vector< uint8_t > > ByteValuesOfParams
values of shared data in byte size
std::vector< uint32_t > BytelengthOfParams
length of shared data in bytes
Defines a struct that tracks necessary information for simulation.
std::vector< int > TestClockCycles
List that contains the index of every clock cycle that should be tested.
uint64_t NumberOfProcessedSimulations
The number of currently processed simulations.
int NumberOfGroups
The number of user-defined groups.
int TestTransitional
Decision regarding transitional leakage.
int NumberOfTestClockCycles
Number of clock cycles in which standard probes can record.
int TestMultivariate
Decision regarding univariate and multivariate attackers.
char * EvaluationResultFolderName
Name and path of the generated reports.
int TestOrder
The security order to test.
int NumberOfProbes
The total number of standard probes.
Defines all settings belonging to the test prodecure.
std::vector<::Software::ProbesStruct > Combination
std::vector< std::vector<::Software::ProbingSetStruct > > ProbingSet
std::vector< bool > CombinationBitmask
std::vector< uint32_t > NumberOfSets
std::vector<::Software::ProbingSetStruct > GlobalProbingSets
Defines a struct that tracks necessary information for thread simulation.
int TestOrder
The security order to test.
std::vector< std::vector< uint32_t > > StartRAM_EndRAM_EmulatorInputs
std::vector< int > SelectedGroups
// [0...NumberOfStepSimulations-1]
std::vector< uint32_t > CycleStart
uint32_t NumberOfCycleSplits
uint32_t NumberOfTestClockCycles
Number of clock cycles in which standard probes can record.
uint32_t NumberOfGroups
The number of user-defined groups.
std::vector< int > TestClockCycles
//assign only needed TestClockCycles for specific thread to vector
int TestMultivariate
Decision regarding univariate and multivariate attackers.
std::string EvaluationResultFolderName
Name and path of the generated reports.
int TestTransitional
Decision regarding transitional leakage.
std::vector< uint32_t > CycleEnd
uint32_t NumberOfStepSimulations
The number of simulations before the simulations are evaluated.
uint32_t GlobalCycleStart
std::vector< std::vector<::Software::ProbesStruct > > StandardProbesPerSimulation
Defines a contingency table.