| Crates.io | roughenough-keys |
| lib.rs | roughenough-keys |
| version | 2.0.0 |
| created_at | 2025-10-24 03:06:25.947219+00 |
| updated_at | 2025-10-24 03:06:25.947219+00 |
| description | Roughenough key material handling with multiple secure storage backends |
| homepage | https://github.com/int08h/roughenough |
| repository | https://github.com/int08h/roughenough |
| max_upload_size | |
| id | 1897929 |
| size | 212,453 |
Roughenough is an implementation of the IETF Roughtime secure time synchronization protocol. Roughenough provides both server and client components for cryptographically verifiable time synchronization.
Build all components:
cargo build --release
Build with all optional features:
# Enable all optional features
cargo build --release --all-features
# Debug build
cargo run --bin roughenough_server
# Release build with optimizations
cargo run --release --bin roughenough_server
# Run the server binary directly
target/release/roughenough_server
The server will start listening for UDP requests on the default port (2002).
Basic usage:
# Query a Roughtime server
cargo run --bin roughenough_client -- roughtime.int08h.com 2002
# Verify server public key
cargo run --bin roughenough_client -- roughtime.int08h.com 2002 -k <base64-or-hex-key>
# Multiple requests
cargo run --bin roughenough_client -- roughtime.int08h.com 2002 -n 10
# Verbose output
cargo run --bin roughenough_client -- roughtime.int08h.com 2002 -v
# Different time formats
cargo run --bin roughenough_client -- roughtime.int08h.com 2002 --epoch # Unix timestamp
cargo run --bin roughenough_client -- roughtime.int08h.com 2002 --zulu # ISO 8601 UTC
Query multiple servers from an RFC compliant JSON list:
cargo run --bin roughenough_client -- -l servers.json
# Run all tests
cargo test
# Run tests for specific crate
cargo test -p protocol
# Run integration tests
target/debug/roughenough_integration_test
Roughtime is structured as a Cargo workspace with multiple crates:
cargo build -p client --features reporting
cargo run --bin roughenough_client -- hostname.com 2002 --report
See doc/PROTECTION.md for detailed information on seed protection strategies.
online-linux-krs (default): Store seed in Linux Kernel Keyring for runtime protectiononline-ssh-agent Use SSH agent for seed storage and signing operationsonline-pkcs11 PKCS#11 hardware security module integration (Yubikey, HSM, etc)longterm-aws-kms AWS Key Management Service for seed encryptionlongterm-gcp-kms Google Cloud KMS for seed encryptionlongterm-aws-secret-manager AWS Secrets Manager for seed storagelongterm-gcp-secret-manager Google Cloud Secret Manager for seed storageContributions are welcome! Please see CONTRIBUTING.md for guidelines.
Thank you to all past and present contributors:
Copyright (c) 2025 the Roughenough Project Contributors.
Roughenough is licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.