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;