Skip to content
Merged
Show file tree
Hide file tree
Changes from 16 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
10 changes: 10 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,17 @@ 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
# Exact pin required: >=0.5.1 doesn't override transitive resolution under -Z minimal-versions
wyz = "=0.5.1"
Comment on lines +147 to +148
Copy link

Copilot AI Feb 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using exact version pinning (=) for transitive dependencies like wyz makes the dependency tree brittle and prevents automatic security updates. The comment mentions this is a workaround for a CI build failure, but consider using a minimum version constraint (>=0.5.1) or a tilde requirement (~0.5.1) instead to allow patch updates while ensuring compatibility.

Suggested change
# Exact pin required: >=0.5.1 doesn't override transitive resolution under -Z minimal-versions
wyz = "=0.5.1"
# Require wyz >=0.5.1 within the 0.5.x line to avoid 0.5.0 while allowing patch updates
wyz = "~0.5.1"

Copilot uses AI. Check for mistakes.

# 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