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).