1#![cfg_attr(not(test), warn(clippy::unwrap_used))]
16#![cfg_attr(not(test), warn(clippy::expect_used))]
17#![cfg_attr(not(test), warn(clippy::panic))]
18#![allow(clippy::unused_async)]
20
21#![allow(missing_docs)]
53#![allow(missing_debug_implementations)]
54#![warn(rust_2018_idioms)]
55
56pub mod fwid;
58
59pub mod api;
61
62pub mod address;
64pub mod address_book;
66
67pub mod network;
69
70pub mod dht;
72
73pub mod dht_network_manager;
75
76pub mod transport;
78
79pub mod auth;
81
82pub mod events;
84pub mod mls;
86pub mod types;
88
89pub mod telemetry;
91
92pub mod security;
96
97pub mod bgp_geo_provider;
99
100pub mod identity;
102
103pub mod storage;
105
106pub use api::{
108 GroupKeyPair,
109 MemberRef,
110 clear_dht_client,
111 get_data,
112 get_identity,
113 get_presence,
114 group_identity_canonical_sign_bytes,
116 group_identity_create,
117 group_identity_fetch,
118 group_identity_publish,
119 group_identity_update_members_signed,
120 identity_fetch,
121 register_headless,
122 register_identity,
124 register_presence,
126 set_active_device,
127 set_dht_client,
128 store_data,
130 store_dyad,
131 store_with_fec,
132};
133
134pub mod chat;
136
137pub mod messaging;
139
140pub mod discuss;
142
143pub mod projects;
145
146pub mod threshold;
148
149pub mod quantum_crypto;
151
152pub mod utils;
154
155pub mod validation;
157
158pub mod rate_limit;
160
161pub mod production;
163
164pub mod bootstrap;
166
167pub mod error;
169
170pub mod peer_record;
172
173pub mod monotonic_counter;
175
176pub mod secure_memory;
178
179pub mod key_derivation;
181
182pub mod encrypted_key_storage;
184
185pub mod persistent_state;
187
188pub mod adaptive;
190
191pub mod config;
193pub mod control;
194
195pub mod health;
197
198pub mod geographic_enhanced_network;
200
201pub mod placement;
203
204pub mod upgrade;
206
207pub use address::{AddressBook, NetworkAddress};
209pub use address_book::{
210 address_book, get_user_by_four_words, get_user_four_words, register_user_address,
211};
212pub use identity::FourWordAddress;
213
214pub use auth::{
216 DelegatedWriteAuth, MlsWriteAuth, PubKey, Sig, SingleWriteAuth, ThresholdWriteAuth, WriteAuth,
217};
218pub use bootstrap::{BootstrapCache, BootstrapManager, CacheConfig, ContactEntry};
219pub use dht::{Key, Record};
220pub use dht_network_manager::{
221 BootstrapNode, DhtNetworkConfig, DhtNetworkEvent, DhtNetworkManager, DhtNetworkOperation,
222 DhtNetworkResult, DhtPeerInfo,
223};
224pub use encrypted_key_storage::{
225 Argon2Config, DerivationPriority as KeyDerivationPriority, EncryptedKeyStorageManager,
226 KeyMetadata, PasswordValidation, SecurityLevel, StorageStats,
227};
228pub use error::{P2PError, P2pResult as Result};
229pub use events::{Subscription, TopologyEvent, device_subscribe, dht_watch, subscribe_topology};
230pub use fwid::{FourWordsV1, Key as FwKey, fw_check, fw_to_key};
231pub use health::{
232 ComponentChecker, ComponentHealth, HealthEndpoints, HealthManager, HealthResponse,
233 HealthServer, HealthStatus, PrometheusExporter,
234};
235pub use key_derivation::{
236 BatchDerivationRequest, BatchDerivationResult, DerivationPath, DerivationPriority,
237 DerivationStats, DerivedKey, HierarchicalKeyDerivation, MasterSeed,
238};
239pub use monotonic_counter::{
240 BatchUpdateRequest, BatchUpdateResult, CounterStats, MonotonicCounterSystem, PeerCounter,
241 SequenceValidationResult,
242};
243pub use network::{ConnectionStatus, NodeBuilder, NodeConfig, P2PEvent, P2PNode, PeerInfo};
244pub use telemetry::{Metrics, StreamClass, record_lookup, record_timeout, telemetry};
245pub use config::Config;
247pub use network::P2PNode as Node;
248pub use peer_record::{EndpointId, NatType, PeerDHTRecord, PeerEndpoint, SignatureCache, UserId};
249pub use persistent_state::{
250 FlushStrategy, IntegrityReport, PersistentStateManager, RecoveryMode, RecoveryStats,
251 StateChangeEvent, StateConfig, TransactionType, WalEntry,
252};
253pub use production::{ProductionConfig, ResourceManager, ResourceMetrics};
254pub use secure_memory::{
255 PoolStats, SecureMemory, SecureMemoryPool, SecureString, SecureVec, allocate_secure,
256 secure_string_with_capacity, secure_vec_with_capacity,
257};
258pub use validation::{
259 RateLimitConfig, RateLimiter, Sanitize, Validate, ValidationContext, ValidationError,
260 sanitize_string, validate_dht_key, validate_dht_value, validate_file_path,
261 validate_message_size, validate_network_address, validate_peer_id,
262};
263
264pub use rate_limit::{
266 JoinRateLimitError, JoinRateLimiter, JoinRateLimiterConfig, extract_ipv4_subnet_8,
267 extract_ipv4_subnet_16, extract_ipv4_subnet_24, extract_ipv6_subnet_32, extract_ipv6_subnet_48,
268 extract_ipv6_subnet_64,
269};
270
271pub use dht::node_age_verifier::{
273 AgeVerificationResult, NodeAgeCategory, NodeAgeConfig, NodeAgeRecord, NodeAgeStats,
274 NodeAgeVerifier, OperationType,
275};
276pub use security::{
277 DiversityStats, GeoInfo, GeoProvider, IPAnalysis, IPDiversityConfig, IPDiversityEnforcer,
278 IPv4NodeID, IPv6NodeID, NodeReputation, ReputationManager, StubGeoProvider,
279};
280
281pub use storage::{FileChunker, StorageManager}; pub use chat::{Call, Channel, ChannelId, ChannelType, ChatManager, Message, MessageId, Thread};
288
289pub use discuss::{
291 Badge, Category, CategoryId, DiscussManager, Poll, Reply, ReplyId, Topic, TopicId, UserStats,
292};
293
294pub use projects::{
296 Document, DocumentId, Folder, Project, ProjectAnalytics, ProjectId, ProjectsManager,
297 WorkflowState,
298};
299
300pub use threshold::{
302 GroupMetadata, ParticipantInfo, ThresholdGroup, ThresholdGroupManager, ThresholdSignature,
303};
304
305pub use quantum_crypto::{
307 CryptoCapabilities,
308 KemAlgorithm,
309 NegotiatedAlgorithms,
310 ProtocolVersion,
311 QuantumCryptoError,
313 SignatureAlgorithm,
314 negotiate_algorithms,
316};
317
318pub use quantum_crypto::{
320 ChaCha20Poly1305Cipher,
322 EncryptedMessage,
324 HybridKem,
326 HybridKemCiphertext,
327 HybridKemPublicKey,
328 HybridKemSecretKey,
329 HybridPublicKeyEncryption,
330
331 HybridSignaturePublicKey,
333 HybridSignatureSecretKey,
334 HybridSignatureValue,
335
336 MlDsa65,
337
338 MlDsaOperations,
339
340 MlDsaPublicKey as AntMlDsaPublicKey,
342 MlDsaSecretKey as AntMlDsaSecretKey,
343 MlDsaSignature as AntMlDsaSignature,
344 MlKem768,
346 MlKemCiphertext,
347 MlKemOperations,
349 MlKemPublicKey,
351 MlKemSecretKey,
352 PqcError,
354 SaorsaPqcResult,
355
356 SharedSecret,
357 SymmetricEncryptedMessage,
358
359 SymmetricError,
360 SymmetricKey,
361
362 saorsa_pqc_init,
364};
365
366pub use quantum_crypto::ant_quic_integration::{
368 create_default_pqc_config,
370 create_pqc_only_config,
371};
372
373pub use quantum_crypto::types::{
375 FrostCommitment,
376 FrostGroupPublicKey,
377 FrostKeyShare,
378 FrostPublicKey,
380 FrostSignature,
381 GroupId,
383 HandshakeParameters,
384
385 ParticipantId,
386 PeerId as QuantumPeerId,
387 QuantumPeerIdentity,
388 SecureSession,
389 SessionId,
390 SessionState,
391};
392
393pub use placement::{
395 AuditSystem, DataPointer, DhtRecord, DiversityEnforcer, GeographicLocation, GroupBeacon,
396 NetworkRegion, NodeAd, PlacementConfig, PlacementDecision, PlacementEngine, PlacementMetrics,
397 PlacementOrchestrator, RegisterPointer, RepairSystem, StorageOrchestrator,
398 WeightedPlacementStrategy,
399};
400
401pub type PeerId = String;
413
414pub type Multiaddr = NetworkAddress;
418
419pub const VERSION: &str = env!("CARGO_PKG_VERSION");
421
422pub use upgrade::{
424 ApplierConfig, ApplyResult, BackupMetadata, DownloadProgress, Downloader, DownloaderConfig,
425 PinnedKey, Platform as UpgradePlatform, PlatformBinary, Release, ReleaseChannel,
426 RollbackManager, SignatureVerifier, StagedUpdate, StagedUpdateManager, UpdateConfig,
427 UpdateConfigBuilder, UpdateInfo, UpdateManager, UpdateManifest, UpdatePolicy, UpgradeError,
428 UpgradeEvent, create_applier,
429};