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 get_data,
111 get_identity,
112 get_presence,
113 group_identity_canonical_sign_bytes,
115 group_identity_create,
116 group_identity_fetch,
117 group_identity_publish,
118 group_identity_update_members_signed,
119 identity_fetch,
120 register_headless,
121 register_identity,
123 register_presence,
125 set_active_device,
126 set_dht_client,
127 store_data,
129 store_dyad,
130 store_with_fec,
131};
132
133pub mod chat;
135
136pub mod messaging;
138
139pub mod discuss;
141
142pub mod projects;
144
145pub mod threshold;
147
148pub mod quantum_crypto;
150
151pub mod utils;
153
154pub mod validation;
156
157pub mod rate_limit;
159
160pub mod production;
162
163pub mod bootstrap;
165
166pub mod error;
168
169pub mod peer_record;
171
172pub mod monotonic_counter;
174
175pub mod secure_memory;
177
178pub mod key_derivation;
180
181pub mod encrypted_key_storage;
183
184pub mod persistent_state;
186
187pub mod adaptive;
189
190pub mod config;
192pub mod control;
193
194pub mod health;
196
197pub mod geographic_enhanced_network;
199
200pub mod placement;
202
203pub mod upgrade;
205
206pub use address::{AddressBook, NetworkAddress};
208pub use address_book::{
209 address_book, get_user_by_four_words, get_user_four_words, register_user_address,
210};
211pub use identity::FourWordAddress;
212
213pub use auth::{
215 DelegatedWriteAuth, MlsWriteAuth, PubKey, Sig, SingleWriteAuth, ThresholdWriteAuth, WriteAuth,
216};
217pub use bootstrap::{BootstrapCache, BootstrapManager, CacheConfig, ContactEntry};
218pub use dht::{Key, Record};
219pub use dht_network_manager::{
220 BootstrapNode, DhtNetworkConfig, DhtNetworkEvent, DhtNetworkManager, DhtNetworkOperation,
221 DhtNetworkResult, DhtPeerInfo,
222};
223pub use encrypted_key_storage::{
224 Argon2Config, DerivationPriority as KeyDerivationPriority, EncryptedKeyStorageManager,
225 KeyMetadata, PasswordValidation, SecurityLevel, StorageStats,
226};
227pub use error::{P2PError, P2pResult as Result};
228pub use events::{Subscription, TopologyEvent, device_subscribe, dht_watch, subscribe_topology};
229pub use fwid::{FourWordsV1, Key as FwKey, fw_check, fw_to_key};
230pub use health::{
231 ComponentChecker, ComponentHealth, HealthEndpoints, HealthManager, HealthResponse,
232 HealthServer, HealthStatus, PrometheusExporter,
233};
234pub use key_derivation::{
235 BatchDerivationRequest, BatchDerivationResult, DerivationPath, DerivationPriority,
236 DerivationStats, DerivedKey, HierarchicalKeyDerivation, MasterSeed,
237};
238pub use monotonic_counter::{
239 BatchUpdateRequest, BatchUpdateResult, CounterStats, MonotonicCounterSystem, PeerCounter,
240 SequenceValidationResult,
241};
242pub use network::{ConnectionStatus, NodeBuilder, NodeConfig, P2PEvent, P2PNode, PeerInfo};
243pub use telemetry::{Metrics, StreamClass, record_lookup, record_timeout, telemetry};
244pub use config::Config;
246pub use network::P2PNode as Node;
247pub use peer_record::{EndpointId, NatType, PeerDHTRecord, PeerEndpoint, SignatureCache, UserId};
248pub use persistent_state::{
249 FlushStrategy, IntegrityReport, PersistentStateManager, RecoveryMode, RecoveryStats,
250 StateChangeEvent, StateConfig, TransactionType, WalEntry,
251};
252pub use production::{ProductionConfig, ResourceManager, ResourceMetrics};
253pub use secure_memory::{
254 PoolStats, SecureMemory, SecureMemoryPool, SecureString, SecureVec, allocate_secure,
255 secure_string_with_capacity, secure_vec_with_capacity,
256};
257pub use validation::{
258 RateLimitConfig, RateLimiter, Sanitize, Validate, ValidationContext, ValidationError,
259 sanitize_string, validate_dht_key, validate_dht_value, validate_file_path,
260 validate_message_size, validate_network_address, validate_peer_id,
261};
262
263pub use rate_limit::{
265 JoinRateLimitError, JoinRateLimiter, JoinRateLimiterConfig, extract_ipv4_subnet_8,
266 extract_ipv4_subnet_16, extract_ipv4_subnet_24, extract_ipv6_subnet_32, extract_ipv6_subnet_48,
267 extract_ipv6_subnet_64,
268};
269
270pub use dht::node_age_verifier::{
272 AgeVerificationResult, NodeAgeCategory, NodeAgeConfig, NodeAgeRecord, NodeAgeStats,
273 NodeAgeVerifier, OperationType,
274};
275pub use security::{
276 DiversityStats, GeoInfo, GeoProvider, IPAnalysis, IPDiversityConfig, IPDiversityEnforcer,
277 IPv4NodeID, IPv6NodeID, NodeReputation, ReputationManager, StubGeoProvider,
278};
279
280pub use storage::{FileChunker, StorageManager}; pub use chat::{Call, Channel, ChannelId, ChannelType, ChatManager, Message, MessageId, Thread};
287
288pub use discuss::{
290 Badge, Category, CategoryId, DiscussManager, Poll, Reply, ReplyId, Topic, TopicId, UserStats,
291};
292
293pub use projects::{
295 Document, DocumentId, Folder, Project, ProjectAnalytics, ProjectId, ProjectsManager,
296 WorkflowState,
297};
298
299pub use threshold::{
301 GroupMetadata, ParticipantInfo, ThresholdGroup, ThresholdGroupManager, ThresholdSignature,
302};
303
304pub use quantum_crypto::{
306 CryptoCapabilities,
307 KemAlgorithm,
308 NegotiatedAlgorithms,
309 ProtocolVersion,
310 QuantumCryptoError,
312 SignatureAlgorithm,
313 negotiate_algorithms,
315};
316
317pub use quantum_crypto::{
319 ChaCha20Poly1305Cipher,
321 EncryptedMessage,
323 HybridKem,
325 HybridKemCiphertext,
326 HybridKemPublicKey,
327 HybridKemSecretKey,
328 HybridPublicKeyEncryption,
329
330 HybridSignaturePublicKey,
332 HybridSignatureSecretKey,
333 HybridSignatureValue,
334
335 MlDsa65,
336
337 MlDsaOperations,
338
339 MlDsaPublicKey as AntMlDsaPublicKey,
341 MlDsaSecretKey as AntMlDsaSecretKey,
342 MlDsaSignature as AntMlDsaSignature,
343 MlKem768,
345 MlKemCiphertext,
346 MlKemOperations,
348 MlKemPublicKey,
350 MlKemSecretKey,
351 PqcError,
353 SaorsaPqcResult,
354
355 SharedSecret,
356 SymmetricEncryptedMessage,
357
358 SymmetricError,
359 SymmetricKey,
360
361 saorsa_pqc_init,
363};
364
365pub use quantum_crypto::ant_quic_integration::{
367 create_default_pqc_config,
369 create_pqc_only_config,
370};
371
372pub use quantum_crypto::types::{
374 FrostCommitment,
375 FrostGroupPublicKey,
376 FrostKeyShare,
377 FrostPublicKey,
379 FrostSignature,
380 GroupId,
382 HandshakeParameters,
383
384 ParticipantId,
385 PeerId as QuantumPeerId,
386 QuantumPeerIdentity,
387 SecureSession,
388 SessionId,
389 SessionState,
390};
391
392pub use placement::{
394 AuditSystem, DataPointer, DhtRecord, DiversityEnforcer, GeographicLocation, GroupBeacon,
395 NetworkRegion, NodeAd, PlacementConfig, PlacementDecision, PlacementEngine, PlacementMetrics,
396 PlacementOrchestrator, RegisterPointer, RepairSystem, StorageOrchestrator,
397 WeightedPlacementStrategy,
398};
399
400pub type PeerId = String;
412
413pub type Multiaddr = NetworkAddress;
417
418pub const VERSION: &str = env!("CARGO_PKG_VERSION");
420
421pub use upgrade::{
423 ApplierConfig, ApplyResult, BackupMetadata, DownloadProgress, Downloader, DownloaderConfig,
424 PinnedKey, Platform as UpgradePlatform, PlatformBinary, Release, ReleaseChannel,
425 RollbackManager, SignatureVerifier, StagedUpdate, StagedUpdateManager, UpdateConfig,
426 UpdateConfigBuilder, UpdateInfo, UpdateManager, UpdateManifest, UpdatePolicy, UpgradeError,
427 UpgradeEvent, create_applier,
428};