For an introduction to the crate and how to get started, see the crate’s README.
This module contains helper functions that may be useful in writing function hooks.
This module contains a few simple built-in function hooks which can be used
This module contains the dynamic taint-tracking layer implemented on
haybale. It provides a
performs dynamic taint tracking and reports constant-time violations.
An abstract description of a value: its size, whether it is a pointer or not, whether it is public or secret (or maybe it’s a struct with some public and some secret fields, or maybe it’s a public pointer that points to some secret data), etc.
Various settings which affect how the symbolic execution is performed.
Holds information about the results of a constant-time analysis of a particular function.
pitchfork-specific configuration options, in addition to the configuration
Project is a collection of LLVM code to be explored,
consisting of one or more LLVM modules.
A variety of ways to specify a numerical value, from completely unconstrained to fully constrained.
Holds information about the results of a constant-time analysis of a single path.
Checks whether a function is “constant-time” in the secrets identified by the
args data structure. That is, does the function ever make branching
decisions, or perform address calculations, based on secrets.
Checks whether a function is “constant-time” in its inputs. That is, does the function ever make branching decisions, or perform address calculations, based on its inputs.
This function is designed to be called in your
It processes command-line arguments and coordinates the overall analysis.
Get a formatted version of the coverage results as a
A map from struct name to an
AbstractData description of the struct