quinn_hyphae/lib.rs
1//! Hyphae Handshake *(Noise Handshakes for QUIC)*
2//! ==============================================
3//!
4//! Hyphae secures QUIC with Noise instead of TLS.
5//!
6//! Unlike other Noise handshake proposals for QUIC, Hyphae supports *all
7//! Noise handshake patterns* (not just IK). Hyphae supports custom Noise
8//! payloads.
9//!
10//! ### Features:
11//!
12//! - Secure QUIC connections with a Noise handshake instead of TLS
13//! - Use **any handshake pattern**, AEAD, and hash algorithm (not just IK)
14//! - Quinn support in the `quinn-hyphae` crate
15//! - Customizable:
16//! - Applications have complete control of the Noise handshake
17//! - Pluggable cryptographic and Noise backends (with built-in support
18//! for Rust Crypto)
19//! - Optional key-logging for diagnostics
20//! - QUIC header protection and initial packet space obfuscation
21//!
22//! ### Examples
23//!
24//! See the [README](https://github.com/WillBuik/hyphae-handshake)
25//! for more info and examples.
26//!
27
28pub mod builder;
29pub mod config;
30pub mod customization;
31#[cfg(any(test, feature = "helper"))]
32pub mod helper;
33mod session;
34mod sessionkeys;
35pub mod tokenkeys;
36mod util;
37
38// Re-export Hyphae buffer traits.
39pub use hyphae_handshake::buffer;
40
41/// Re-exported types from `hyphae_handshake::crypto`.
42pub mod crypto {
43 pub use hyphae_handshake::crypto::CryptoError;
44 pub use hyphae_handshake::crypto::CryptoBackend;
45 pub use hyphae_handshake::crypto::SyncCryptoBackend;
46 pub use hyphae_handshake::crypto::SecretKeySetup;
47
48 // Re-export Hyphae keylog.
49 #[cfg(feature = "keylog")]
50 pub use hyphae_handshake::crypto::keylog;
51}
52
53// Re-export Hyphae crypto backends.
54pub use hyphae_handshake::crypto::backends::rustcrypto::RustCryptoBackend;
55
56// Re-export constants from `hyphae_handshake::quic`.
57pub use hyphae_handshake::quic::HYPHAE_H_V1_QUIC_V1_VERSION;
58
59// Re-export Error.
60pub use hyphae_handshake::Error;
61
62// Re-export common `quinn_hyphae` types.
63pub use builder::HandshakeBuilder;
64pub use customization::HyphaePeerIdentity;
65
66#[cfg(test)]
67mod tests;