Skip to main content

Crate openentropy_core

Crate openentropy_core 

Source
Expand description

§openentropy-core

Your computer is a hardware noise observatory.

openentropy-core is the core entropy harvesting library that extracts randomness from 60+ unconventional hardware sources — clock jitter, DRAM row buffer timing, CPU speculative execution, Bluetooth RSSI, NVMe latency, and more.

§Quick Start

use openentropy_core::EntropyPool;

// Auto-detect all available sources and create a pool
let pool = EntropyPool::auto();

// Get conditioned random bytes
let random_bytes = pool.get_random_bytes(256);
assert_eq!(random_bytes.len(), 256);

// Check pool health
let health = pool.health_report();
println!("{}/{} sources healthy", health.healthy, health.total);

§Architecture

Sources → Pool (concatenate) → Conditioning → Output

Three output modes:

  • Sha256 (default): SHA-256 conditioning mixes all source bytes with state, counter, timestamp, and OS entropy. Cryptographically strong output.
  • VonNeumann: debiases raw bytes without destroying noise structure.
  • Raw (get_raw_bytes): source bytes pass through unchanged — no hashing, no whitening, no mixing between sources.

Raw mode preserves the actual hardware noise signal for researchers studying device entropy characteristics. Most QRNG APIs (ANU, Outshift) run DRBG post-processing that destroys the raw hardware signal. We don’t.

Every source implements the EntropySource trait. The EntropyPool collects from all registered sources and concatenates their byte streams.

Re-exports§

pub use analysis::AndersonDarlingResult;
pub use analysis::ApproxEntropyResult;
pub use analysis::AutocorrResult;
pub use analysis::BitBiasResult;
pub use analysis::CrossCorrMatrix;
pub use analysis::CrossCorrPair;
pub use analysis::DistributionResult;
pub use analysis::PermutationEntropyResult;
pub use analysis::RunsResult;
pub use analysis::SourceAnalysis;
pub use analysis::SpectralResult;
pub use analysis::StationarityResult;
pub use analysis::anderson_darling;
pub use analysis::approximate_entropy;
pub use analysis::approximate_entropy_default;
pub use analysis::autocorrelation_profile;
pub use analysis::bit_bias;
pub use analysis::cross_correlation_matrix;
pub use analysis::distribution_stats;
pub use analysis::full_analysis;
pub use analysis::pearson_correlation;
pub use analysis::permutation_entropy;
pub use analysis::permutation_entropy_default;
pub use analysis::runs_analysis;
pub use analysis::spectral_analysis;
pub use analysis::stationarity_test;
pub use benchmark::BenchConfig;
pub use benchmark::BenchReport;
pub use benchmark::BenchSourceReport;
pub use benchmark::PoolQualityReport;
pub use benchmark::RankBy;
pub use benchmark::benchmark_sources;
pub use chaos::BiEntropyResult;
pub use chaos::BootstrapHurstResult;
pub use chaos::ChaosAnalysis;
pub use chaos::CorrelationDimResult;
pub use chaos::DfaResult;
pub use chaos::EpiplexityResult;
pub use chaos::HurstResult;
pub use chaos::LyapunovResult;
pub use chaos::RollingHurstResult;
pub use chaos::RollingHurstWindow;
pub use chaos::RqaResult;
pub use chaos::SampleEntropyResult;
pub use chaos::bientropy;
pub use chaos::bootstrap_hurst;
pub use chaos::bootstrap_hurst_default;
pub use chaos::chaos_analysis;
pub use chaos::correlation_dimension;
pub use chaos::dfa;
pub use chaos::dfa_default;
pub use chaos::epiplexity;
pub use chaos::hurst_exponent;
pub use chaos::lyapunov_exponent;
pub use chaos::rolling_hurst;
pub use chaos::rolling_hurst_default;
pub use chaos::rqa;
pub use chaos::rqa_default;
pub use chaos::sample_entropy;
pub use chaos::sample_entropy_default;
pub use comparison::AggregateDelta;
pub use comparison::ComparisonResult;
pub use comparison::DigramAnalysis;
pub use comparison::MarkovAnalysis;
pub use comparison::MultiLagAnalysis;
pub use comparison::RunLengthComparison;
pub use comparison::TemporalAnalysis;
pub use comparison::TwoSampleTests;
pub use comparison::WindowAnomaly;
pub use comparison::aggregate_delta;
pub use comparison::cliffs_delta;
pub use comparison::compare;
pub use comparison::compare_with_analysis;
pub use comparison::digram_analysis;
pub use comparison::markov_analysis;
pub use comparison::multi_lag_analysis;
pub use comparison::run_length_comparison;
pub use comparison::temporal_analysis;
pub use comparison::two_sample_tests;
pub use conditioning::ConditioningMode;
pub use conditioning::MinEntropyReport;
pub use conditioning::QualityReport;
pub use conditioning::condition;
pub use conditioning::grade_min_entropy;
pub use conditioning::min_entropy_estimate;
pub use conditioning::quick_autocorrelation_lag1;
pub use conditioning::quick_min_entropy;
pub use conditioning::quick_quality;
pub use conditioning::quick_shannon;
pub use dispatcher::AnalysisConfig;
pub use dispatcher::AnalysisProfile;
pub use dispatcher::AnalysisReport;
pub use dispatcher::SourceReport;
pub use dispatcher::VerdictSummary;
pub use dispatcher::analyze;
pub use platform::detect_available_sources;
pub use platform::platform_info;
pub use pool::EntropyPool;
pub use pool::HealthReport;
pub use pool::SourceHealth;
pub use pool::SourceInfoSnapshot;
pub use session::MachineInfo;
pub use session::SessionConfig;
pub use session::SessionMeta;
pub use session::SessionSourceAnalysis;
pub use session::SessionWriter;
pub use session::detect_machine_info;
pub use session::list_sessions;
pub use session::load_session_raw_data;
pub use source::EntropySource;
pub use source::Platform;
pub use source::Requirement;
pub use source::SourceCategory;
pub use source::SourceInfo;
pub use source_resolution::SourceMatchMode;
pub use source_resolution::SourceResolution;
pub use source_resolution::resolve_source_names;
pub use statistics::AnovaResult;
pub use statistics::CramerVonMisesResult;
pub use statistics::GapTestResult;
pub use statistics::KruskalWallisResult;
pub use statistics::LeveneResult;
pub use statistics::LjungBoxResult;
pub use statistics::MultipleCorrectionResult;
pub use statistics::PowerResult;
pub use statistics::StatisticsAnalysis;
pub use statistics::anova;
pub use statistics::bonferroni_correction;
pub use statistics::cramer_von_mises;
pub use statistics::gap_test;
pub use statistics::gap_test_default;
pub use statistics::holm_bonferroni_correction;
pub use statistics::kruskal_wallis;
pub use statistics::levene_test;
pub use statistics::ljung_box;
pub use statistics::ljung_box_default;
pub use statistics::power_analysis;
pub use statistics::power_analysis_default;
pub use statistics::statistics_analysis;
pub use telemetry::MODEL_ID as TELEMETRY_MODEL_ID;
pub use telemetry::MODEL_VERSION as TELEMETRY_MODEL_VERSION;
pub use telemetry::TelemetryMetric;
pub use telemetry::TelemetryMetricDelta;
pub use telemetry::TelemetrySnapshot;
pub use telemetry::TelemetryWindowReport;
pub use telemetry::build_telemetry_window;
pub use telemetry::collect_telemetry_snapshot;
pub use telemetry::collect_telemetry_window;
pub use temporal::Anomaly;
pub use temporal::AnomalyDetectionResult;
pub use temporal::Burst;
pub use temporal::BurstResult;
pub use temporal::ChangePoint;
pub use temporal::ChangePointResult;
pub use temporal::DriftResult;
pub use temporal::DriftSegment;
pub use temporal::SessionStats;
pub use temporal::Shift;
pub use temporal::ShiftResult;
pub use temporal::StabilityResult;
pub use temporal::TemporalAnalysisSuite;
pub use temporal::anomaly_detection;
pub use temporal::anomaly_detection_default;
pub use temporal::burst_detection;
pub use temporal::burst_detection_default;
pub use temporal::change_point_detection;
pub use temporal::change_point_detection_default;
pub use temporal::inter_session_stability;
pub use temporal::shift_detection;
pub use temporal::shift_detection_default;
pub use temporal::temporal_analysis_suite;
pub use temporal::temporal_drift;
pub use temporal::temporal_drift_default;
pub use trials::CalibrationResult;
pub use trials::StoufferResult;
pub use trials::TrialAnalysis;
pub use trials::TrialConfig;
pub use trials::calibration_check;
pub use trials::stouffer_combine;
pub use trials::trial_analysis;
pub use verdict::Verdict;
pub use verdict::metric_or_na;
pub use verdict::verdict_anderson_darling;
pub use verdict::verdict_apen;
pub use verdict::verdict_autocorr;
pub use verdict::verdict_bias;
pub use verdict::verdict_bientropy;
pub use verdict::verdict_compression;
pub use verdict::verdict_corrdim;
pub use verdict::verdict_cramer_von_mises;
pub use verdict::verdict_dfa;
pub use verdict::verdict_distribution;
pub use verdict::verdict_hurst;
pub use verdict::verdict_ljung_box;
pub use verdict::verdict_lyapunov;
pub use verdict::verdict_permen;
pub use verdict::verdict_rqa_det;
pub use verdict::verdict_runs;
pub use verdict::verdict_sampen;
pub use verdict::verdict_spectral;
pub use verdict::verdict_stationarity;
pub use synchrony::CrossSyncResult;
pub use synchrony::GlobalEvent;
pub use synchrony::GlobalEventResult;
pub use synchrony::MutualInfoResult;
pub use synchrony::PhaseCoherenceResult;
pub use synchrony::SynchronyAnalysis;
pub use synchrony::cross_sync;
pub use synchrony::global_event_detection;
pub use synchrony::mutual_information;
pub use synchrony::phase_coherence;
pub use synchrony::synchrony_analysis;

Modules§

analysis
Comprehensive entropy source analysis beyond NIST min-entropy.
benchmark
chaos
Chaos Theory Analysis
comparison
Differential comparison of two byte streams.
conditioning
Centralized entropy conditioning module.
dispatcher
platform
Platform detection and source discovery.
pool
Multi-source entropy pool with health monitoring.
session
Session recording for entropy collection research.
source
Abstract entropy source trait and runtime state.
source_resolution
Source-name resolution helpers shared across CLI and SDK surfaces.
sources
All entropy source implementations, organized by category.
statistics
Statistical randomness tests (CvM, Ljung-Box, Gap Test).
synchrony
Synchrony Analysis
telemetry
Best-effort system telemetry snapshots for entropy benchmark context.
temporal
Temporal Analysis
trials
PEAR-style trial analysis for entropy data.
verdict
Verdict functions for entropy analysis metrics.

Constants§

VERSION
Library version (from Cargo.toml).