Module util

Module util 

Source
Expand description

Validation and helper functions for Tor-related data.

This module provides utilities for validating Tor-specific identifiers and performing secure operations. These functions are used throughout the library to ensure data integrity and prevent protocol injection attacks.

§Conceptual Role

The validation functions in this module check format correctness for:

  • Relay fingerprints (40-character hex strings)
  • Relay nicknames (1-19 alphanumeric characters)
  • Circuit and stream identifiers
  • Hidden service addresses (v2 and v3)
  • IP addresses and ports

§Security Considerations

  • secure_compare uses constant-time comparison to prevent timing attacks
  • Input validation prevents protocol injection in control commands
  • All validation functions are pure and have no side effects

§Example

use stem_rs::util::{is_valid_fingerprint, is_valid_nickname, is_valid_hidden_service_address};

// Validate a relay fingerprint
assert!(is_valid_fingerprint("9695DFC35FFEB861329B9F1AB04C46397020CE31"));

// Validate a relay nickname
assert!(is_valid_nickname("MyRelay"));
assert!(!is_valid_nickname("invalid-name")); // hyphens not allowed

// Validate hidden service addresses
assert!(is_valid_hidden_service_address("facebookcorewwwi")); // v2

§See Also

  • Controller - Uses these validators for input checking
  • Python Stem equivalent: stem.util.tor_tools

Functions§

expand_ipv6_address
Expands a compressed IPv6 address to full notation.
is_hex_digits
Checks if a string contains exactly the specified number of hex digits.
is_private_address
Checks if an IPv4 address is in a private range.
is_valid_circuit_id
Validates a circuit identifier.
is_valid_connection_id
Validates a connection_id(s: &str.
is_valid_fingerprint
Validates a relay fingerprint string.
is_valid_fingerprint_with_prefix
Validates a relay fingerprint with optional $ prefix.
is_valid_hidden_service_address
Validates a hidden service address (v2 or v3).
is_valid_hidden_service_address_v2
Validates a v2 hidden service address.
is_valid_hidden_service_address_v3
Validates a v3 hidden service address.
is_valid_ipv4_address
Validates an IPv4 address string.
is_valid_ipv6_address
Validates an IPv6 address string.
is_valid_ipv6_address_bracketed
Validates an IPv6 address string, optionally with brackets.
is_valid_nickname
Validates a relay nickname.
is_valid_port
Validates a port number string.
is_valid_port_number
Validates a port number.
is_valid_stream_id
Validates a stream identifier.
secure_compare
Compares two byte slices in constant time.