Expand description
§RustCrypto: X-Wing KEM
Pure Rust implementation of X-Wing, a general-purpose post-quantum/traditional hybrid key encapsulation mechanism (PQ/T KEM) built on X25519 and ML-KEM-768. Built on the ml-kem and x25519-dalek crates.
Current implementation matches the draft RFC version 06.
The original paper: X-Wing The Hybrid KEM You’ve Been Looking For
§About
§⚠️ Security Warning
The implementation contained in this crate has never been independently audited!
USE AT YOUR OWN RISK!
§License
Licensed under either of:
at your option.
§Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
§Usage
This crate implements the X-Wing Key Encapsulation Method (X-Wing-KEM) algorithm. X-Wing-KEM is a KEM in the sense that it creates an (decapsulation key, encapsulation key) pair, such that anyone can use the encapsulation key to establish a shared key with the holder of the decapsulation key. X-Wing-KEM is a general-purpose hybrid post-quantum KEM, combining x25519 and ML-KEM-768.
use kem::{Decapsulate, Encapsulate};
use rand_core::TryRngCore;
let mut rng = &mut rand::rngs::OsRng.unwrap_err();
let (sk, pk) = x_wing::generate_key_pair(rng);
let (ct, ss_sender) = pk.encapsulate(rng).unwrap();
let ss_receiver = sk.decapsulate(&ct).unwrap();
assert_eq!(ss_sender, ss_receiver);Re-exports§
pub use kem;
Structs§
- Ciphertext
- X-Wing ciphertext.
- Decapsulation
Key - X-Wing decapsulation key or private key.
- Encapsulation
Key - X-Wing encapsulation or public key.
Constants§
- CIPHERTEXT_
SIZE - Size in bytes of the
Ciphertext. - DECAPSULATION_
KEY_ SIZE - Size in bytes of the
DecapsulationKey. - ENCAPSULATION_
KEY_ SIZE - Size in bytes of the
EncapsulationKey.
Traits§
- Decapsulate
- A value that can be used to decapsulate an encapsulated key.
- Encapsulate
- A value that can be encapsulated to. Often, this will just be a public key. However, it can also be a bundle of public keys, or it can include a sender’s private key for authenticated encapsulation.
Functions§
- generate_
key_ pair - Generate a X-Wing key pair using the provided rng.
- generate_
key_ pair_ from_ os_ rng os_rng - Generate a X-Wing key pair using
OsRng.
Type Aliases§
- Shared
Secret - Shared secret key.