Skip to content
Merged
Show file tree
Hide file tree
Changes from 10 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
3a26587
wip: dht replication
grumbach Jan 30, 2026
780dae1
fix: resolve rebase conflicts and restore ADR-001 architecture compli…
grumbach Feb 3, 2026
ccae713
style: apply cargo fmt to test file
grumbach Feb 3, 2026
17116b8
fix: pin deadpool dependencies to resolve CI build failures
grumbach Feb 3, 2026
8bc8e0b
fix: resolve HIGH priority issues from code review
grumbach Feb 3, 2026
1ad2f70
test: add comprehensive e2e tests for parallel DHT replication
grumbach Feb 3, 2026
61e92ff
fix: failing CI test
grumbach Feb 3, 2026
022431b
fix: various issues and CI failures
grumbach Feb 3, 2026
c2c121b
fix: resolve rustdoc broken links and address Copilot review feedback
grumbach Feb 3, 2026
c7ab354
fix: add explicit wyz >= 0.5.1 constraint to fix CI build
grumbach Feb 3, 2026
5e4b4c2
refactor: replace accept-with-message architecture with recv-based me…
mickvandijke Feb 3, 2026
5507a72
fix: exact-pin wyz 0.5.1 for minimal-versions CI and remove build art…
mickvandijke Feb 3, 2026
9d78a9b
fix: remove dead try_local_fallback method from DhtNetworkManager
mickvandijke Feb 3, 2026
c976fbf
perf: return on first successful DHT GET instead of waiting for all p…
mickvandijke Feb 3, 2026
802bcff
test: rewrite single-node DHT tests with accurate assertions
mickvandijke Feb 3, 2026
c2b4d26
fix: remove stale allow(dead_code) and unused transport imports
mickvandijke Feb 3, 2026
9602822
test: reformat assertion in DHT parallel replication test
mickvandijke Feb 3, 2026
1e9c430
fix: reject short peer IDs instead of zero-padding in DHT key parsing
mickvandijke Feb 3, 2026
53cee5e
fix: remove dead simulate_response method from DhtNetworkManager
mickvandijke Feb 3, 2026
7f70e85
fix: remove block_on deadlock risk in DHT replication survival test
mickvandijke Feb 4, 2026
7f67e56
fix: authorize DHT responses using transport peer ID instead of app-l…
mickvandijke Feb 4, 2026
6d92573
fix: prevent active_operations leak when parallel DHT GET returns early
mickvandijke Feb 4, 2026
bb07f1c
fix: use config request_timeout instead of hardcoded 10s in DHT respo…
mickvandijke Feb 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ jobs:
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: dtolnay/rust-toolchain@nightly
- name: Install system dependencies
run: |
sudo apt-get update
Expand Down
9 changes: 9 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ rand_chacha = "0.3"
zeroize = { version = "1.8", features = ["derive"] }
# Constant-time operations for cryptographic security
subtle = "2.6"
# Pin to fix stdsimd compilation error on newer Rust nightly (CVE-fix in 4.1.1+)
curve25519-dalek = "4.1.3"
# TODO: Remove once fully migrated to saorsa-pqc - keeping temporarily for compatibility
blake3 = "1.6"
hmac = "0.12"
Expand Down Expand Up @@ -134,9 +136,16 @@ reqwest = { version = "0.12", features = ["stream", "rustls-tls"], default-featu
num_cpus = "1.16"

# Database dependencies for message persistence (SQLite only, replaced sqlx to avoid rsa vulnerability)
# Pin deadpool deps to avoid CI version conflict (deadpool-sync 0.1.5 pulls incompatible deadpool-runtime 0.2.0)
deadpool-sqlite = "0.12.1"
deadpool-runtime = "=0.1.4"
deadpool-sync = "=0.1.4"
rusqlite = { version = "0.37", features = ["chrono", "serde_json", "uuid", "bundled"] }

# Fix wyz 0.5.0 compatibility issue with tap 1.0 (CI build failure)
# wyz 0.5.0 has incorrect import path for tap::Pipe, fixed in 0.5.1
wyz = ">=0.5.1"

# WebRTC implementation - using saorsa-webrtc with pluggable signaling
saorsa-webrtc = "0.1.2"

Expand Down
26 changes: 13 additions & 13 deletions src/attestation/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,26 +29,26 @@
//! - **Phase 2**: Core Logic Extraction (saorsa-logic) ✅
//! - Pure derivation logic in `saorsa-logic` crate (no_std, zkVM-compatible)
//! - Integration via `derive_entangled_id`, `verify_entangled_id`, `xor_distance`
//! - zkVM proof structures defined in [`zkvm`] module
//! - zkVM proof structures defined in `zkvm` module
//! - **Phase 3**: zkVM Integration (SP1 proofs) ✅
//! - [`prover`] module: Proof generation with `AttestationProver`
//! - [`verifier`] module: Proof verification with `AttestationVerifier`
//! - [`handshake`] module: Protocol for exchanging proofs during connection
//! - [`metrics`] module: Observability for verification timing and success rates
//! - `prover` module: Proof generation with `AttestationProver`
//! - `verifier` module: Proof verification with `AttestationVerifier`
//! - `handshake` module: Protocol for exchanging proofs during connection
//! - `metrics` module: Observability for verification timing and success rates
//! - Uses STARKs for post-quantum security (Groth16 available via feature flag)
//! - Mock prover for testing, real SP1 prover with `zkvm-prover` feature
//! - Groth16 verification with `zkvm-verifier-groth16` feature (NOT post-quantum)
//! - **Phase 4**: Lightweight Signed Heartbeats ✅
//! - [`signed_heartbeat`] module: ML-DSA signed heartbeat proofs
//! - [`SignedHeartbeat`]: Lightweight liveness proof (microseconds vs VDF seconds)
//! - [`HeartbeatSigner`]: Generates signed heartbeats
//! - `signed_heartbeat` module: ML-DSA signed heartbeat proofs
//! - `SignedHeartbeat`: Lightweight liveness proof (microseconds vs VDF seconds)
//! - `HeartbeatSigner`: Generates signed heartbeats
//! - No expensive VDF computation - suitable for resource-constrained devices
//! - Multi-node-per-device deployment support
//! - **Phase 5**: Heartbeat Protocol Integration ✅
//! - [`signed_heartbeat_manager`] module: Coordination of heartbeat lifecycle
//! - [`SignedHeartbeatManager`]: Generates, verifies, and tracks heartbeats
//! - [`network_resilience`] module: Intelligent network disruption handling
//! - [`trust_integration`] module: EigenTrust integration for heartbeat compliance
//! - `signed_heartbeat_manager` module: Coordination of heartbeat lifecycle
//! - `SignedHeartbeatManager`: Generates, verifies, and tracks heartbeats
//! - `network_resilience` module: Intelligent network disruption handling
//! - `trust_integration` module: EigenTrust integration for heartbeat compliance
//! - Epoch-based scheduling with configurable intervals
//! - Peer status tracking (Healthy → Suspect → Unresponsive)
//! - Trust score adjustments based on heartbeat compliance
Expand Down Expand Up @@ -76,7 +76,7 @@
//! The attestation system now provides:
//!
//! 1. **EntangledId derivation**: Cryptographic binding of identity to software
//! 2. **Handshake protocol**: [`AttestationHello`] exchange during connection
//! 2. **Handshake protocol**: `AttestationHello` exchange during connection
//! 3. **zkVM proofs**: Verify correct EntangledId derivation without revealing secrets
//! 4. **Enforcement modes**: [`EnforcementMode::Soft`] (current) logs but doesn't reject
//!
Expand Down
8 changes: 4 additions & 4 deletions src/bgp_geo_provider.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@
//! - Curated list of known hosting/VPN provider ASNs
//!
//! Data sources (all open/free):
//! - RIPE RIS: https://www.ripe.net/analyse/internet-measurements/routing-information-service-ris
//! - RouteViews: http://www.routeviews.org/
//! - RIR delegation files: https://www.nro.net/statistics
//! - PeeringDB (for hosting provider identification): https://www.peeringdb.com/
//! - RIPE RIS: <https://www.ripe.net/analyse/internet-measurements/routing-information-service-ris>
//! - RouteViews: <http://www.routeviews.org/>
//! - RIR delegation files: <https://www.nro.net/statistics>
//! - PeeringDB (for hosting provider identification): <https://www.peeringdb.com/>

use crate::security::{GeoInfo, GeoProvider};
use parking_lot::RwLock;
Expand Down
Loading
Loading