pub mod aggregator;
pub mod attestation;
pub mod errors;
pub mod hasher;
pub mod org_config;
pub mod schema;
pub mod validator;
#[cfg(test)]
mod test_fixtures;
#[allow(clippy::trivially_copy_pass_by_ref)] pub(crate) fn is_zero_u64(v: &u64) -> bool {
*v == 0
}
#[allow(clippy::trivially_copy_pass_by_ref)] pub(crate) fn is_zero_f64(v: &f64) -> bool {
*v == 0.0
}
pub use aggregator::{
AggregateInputs, AntiPatternAccumulator, ServiceAccumulator, UNATTRIBUTED_SERVICE,
aggregate_from_paths,
};
pub use attestation::{
IN_TOTO_STATEMENT_TYPE, InTotoStatement, InTotoSubject, MethodologySummary,
OrganisationSummary, PERF_SENTINEL_PREDICATE_TYPE, PerfSentinelPredicate, PeriodSummary,
build_in_toto_statement, build_in_toto_statement_named, hash_core_patterns,
};
pub use errors::{AggregationError, HashError, ValidationError};
pub use hasher::{binary_hash, compute_content_hash, compute_file_sha256_hex};
pub use schema::{
Aggregate, AntiPatternDetail, Application, ApplicationG1, ApplicationG2,
BinaryAttestationMetadata, CalibrationInputs, CarbonBreakdown, Confidentiality, Conformance,
CoverageBasis, CrossPeriodLogRef, DisabledPattern, ExcludedApp, ExcludedEnv, Integrity,
IntegrityLevel, Methodology, Notes, OrgIdentifiers, Organisation, Period, PeriodType,
PeriodicReport, ReportIntent, ReportMetadata, SCHEMA_VERSION, ScopeManifest, SignatureMetadata,
SourceChain, TemporalCoverage, core_patterns_required,
};
pub use validator::{
LOW_TEMPORAL_COVERAGE_WARN_THRESHOLD, MIN_PERIOD_COVERAGE_FOR_OFFICIAL, validate_content_hash,
validate_official,
};