Skip to main content

Crate vcl_protocol

Crate vcl_protocol 

Source
Expand description

§VCL Protocol

Cryptographically chained packet transport protocol with:

  • SHA-256 integrity chain
  • Ed25519 digital signatures
  • X25519 ephemeral key exchange
  • XChaCha20-Poly1305 authenticated encryption
  • Replay protection
  • Connection events, ping/heartbeat, mid-session key rotation
  • Connection pool for managing multiple peers

§Quick Start

use vcl_protocol::connection::VCLConnection;

#[tokio::main]
async fn main() {
    let mut server = VCLConnection::bind("127.0.0.1:8080").await.unwrap();
    server.accept_handshake().await.unwrap();

    let packet = server.recv().await.unwrap();
    println!("Received: {}", String::from_utf8_lossy(&packet.payload));
}

Re-exports§

pub use error::VCLError;
pub use event::VCLEvent;
pub use pool::VCLPool;
pub use config::VCLConfig;
pub use transport::VCLTransport;
pub use fragment::Fragmenter;
pub use fragment::Reassembler;
pub use fragment::Fragment;
pub use flow::FlowController;
pub use metrics::VCLMetrics;
pub use tun_device::VCLTun;
pub use tun_device::TunConfig;
pub use tun_device::IpPacket;
pub use tun_device::IpVersion;
pub use ip_packet::ParsedPacket;
pub use ip_packet::TransportProtocol;
pub use multipath::MultipathSender;
pub use multipath::MultipathReceiver;
pub use multipath::PathInfo;
pub use multipath::SchedulingPolicy;
pub use mtu::MtuNegotiator;
pub use mtu::MtuConfig;
pub use mtu::PathMtu;
pub use mtu::MtuState;
pub use keepalive::KeepaliveManager;
pub use keepalive::KeepaliveConfig;
pub use keepalive::KeepaliveAction;
pub use keepalive::KeepalivePreset;
pub use reconnect::ReconnectManager;
pub use reconnect::ReconnectConfig;
pub use reconnect::ReconnectState;
pub use dns::DnsFilter;
pub use dns::DnsConfig;
pub use dns::DnsAction;
pub use dns::DnsPacket;
pub use obfuscation::Obfuscator;
pub use obfuscation::ObfuscationConfig;
pub use obfuscation::ObfuscationMode;
pub use tunnel::VCLTunnel;
pub use tunnel::TunnelConfig;
pub use tunnel::TunnelState;
pub use tunnel::TunnelStats;
pub use prometheus_metrics::VCLPrometheusExporter;

Modules§

config
VCL Connection Configuration
connection
VCL Connection
crypto
VCL Cryptographic Primitives
dns
VCL DNS Leak Protection
error
VCL Error Types
event
VCL Connection Events
flow
VCL Flow Control & Congestion Control
fragment
VCL Packet Fragmentation
handshake
ip_packet
VCL IP Packet Parser
keepalive
VCL Keepalive
metrics
VCL Metrics
mtu
VCL MTU Negotiation
multipath
VCL Multipath
obfuscation
VCL Traffic Obfuscation
packet
VCL Packet
pool
VCL Connection Pool
prometheus_metrics
VCL Prometheus Metrics Export
reconnect
VCL Reconnect
transport
VCL Transport Abstraction
tun_device
VCL TUN Interface
tunnel
VCL Tunnel