# Hardware RNG Implementation Status ## Overview The OTP cipher application now includes comprehensive hardware Random Number Generator (RNG) device support with automatic detection, device identification, and graceful handling of different device types. ## Supported Devices ### ✅ Fully Supported (TrueRNG Family) - **TrueRNG Original** (VID: 04d8, PID: f5fe) - **TrueRNG Pro** (VID: 04d8, PID: 0aa0) - **TrueRNG Pro V2** (VID: 04d8, PID: ebb5) These devices work via serial port communication and are fully integrated into the entropy collection system. ### ⚠️ Detected but Not Supported (SwiftRNG Family) - **SwiftRNG** (VID: 1fc9, PID: 8111) SwiftRNG devices are detected and identified but cannot be used via serial port communication. They require the official SwiftRNG API with libusb-1.0 integration. ## Implementation Features ### Device Detection - **Automatic scanning** of `/dev/ttyUSB*` and `/dev/ttyACM*` devices - **VID/PID identification** via sysfs to distinguish device types - **Multi-device support** with interactive selection menus - **Real-time status indicators** showing device availability ### Device Communication - **Optimized serial port configuration** for each device type - **Timeout protection** to prevent hanging on unresponsive devices - **Error handling** with clear diagnostic messages - **Progress tracking** with speed estimation for large entropy collections ### Integration Points - **Pad enhancement** via entropy addition to existing pads - **Interactive menus** for device selection when multiple devices are present - **Command-line support** for automated workflows - **Graceful fallback** to other entropy sources when no hardware RNG is available ## Technical Implementation ### Core Functions - `detect_all_hardware_rng_devices()` - Scans and identifies all connected devices - `collect_truerng_entropy_from_device()` - Collects entropy from TrueRNG devices