Module validation

Module validation 

Source
Expand description

Validation framework for input sanitization and rate limiting Comprehensive input validation framework for P2P Foundation

This module provides a robust validation system for all external inputs, including network messages, API parameters, file paths, and cryptographic parameters.

§Features

  • Type-safe validation traits: Extensible validation system
  • Rate limiting: Per-IP and global rate limiting with adaptive throttling
  • Performance optimized: < 5% overhead for validation operations
  • Security hardened: Protection against common attack vectors
  • Comprehensive logging: All validation failures are logged

§Usage

use p2p_core::validation::{Validate, ValidationContext};

#[derive(Debug)]
struct NetworkMessage {
    peer_id: String,
    payload: Vec<u8>,
}

impl Validate for NetworkMessage {
    fn validate(&self, ctx: &ValidationContext) -> Result<()> {
        // Validate peer ID format
        validate_peer_id(&self.peer_id)?;

        // Validate payload size
        validate_message_size(self.payload.len(), ctx.max_message_size)?;

        Ok(())
    }
}

Structs§

ApiRequest
API request validation
NetworkMessage
Network message validation
RateLimitConfig
Rate limit configuration
RateLimiter
Rate limiter for preventing abuse (unified engine)
ValidationContext
Context for validation operations

Enums§

ValidationError
Validation errors specific to input validation

Traits§

Sanitize
Trait for sanitizing input
Validate
Core validation trait

Functions§

sanitize_string
Sanitize a string for safe usage
validate_config_value
Configuration value validation
validate_dht_key
Validate DHT key
validate_dht_value
Validate DHT value
validate_file_path
Validate a file path for security
validate_key_size
Validate key size for cryptographic operations
validate_message_size
Validate message size
validate_network_address
Validate a network address
validate_nonce_size
Validate nonce size
validate_peer_id
Validate a peer ID