pub trait Kem:
Copy
+ Clone
+ Debug
+ Default
+ Eq
+ Ord
+ Send
+ Sync
+ 'static {
type DecapsulationKey: TryDecapsulate<Kem = Self> + Generate;
type EncapsulationKey: Encapsulate<Kem = Self> + Clone + Debug + Eq;
type SharedKeySize: ArraySize;
type CiphertextSize: ArraySize;
// Provided methods
fn generate_keypair_from_rng<R>(
rng: &mut R,
) -> (Self::DecapsulationKey, Self::EncapsulationKey)
where R: CryptoRng { ... }
fn generate_keypair() -> (Self::DecapsulationKey, Self::EncapsulationKey) { ... }
}Expand description
Key encapsulation mechanism.
This trait describes the entire type family used by a KEM.
Required Associated Types§
Sourcetype DecapsulationKey: TryDecapsulate<Kem = Self> + Generate
type DecapsulationKey: TryDecapsulate<Kem = Self> + Generate
KEM decryption key (i.e. private key) which can decrypt encrypted shared secret ciphertexts
which were encrypted by Kem::EncapsulationKey.
Sourcetype EncapsulationKey: Encapsulate<Kem = Self> + Clone + Debug + Eq
type EncapsulationKey: Encapsulate<Kem = Self> + Clone + Debug + Eq
KEM encryption key (i.e. public key) which encrypts shared secrets into ciphertexts which
can be decrypted by Kem::DecapsulationKey.
Size of the shared key/secret returned by both encapsulation and decapsulation.
Sourcetype CiphertextSize: ArraySize
type CiphertextSize: ArraySize
Size of the ciphertext (a.k.a. “encapsulated key”) produced by Self::EncapsulationKey.
Provided Methods§
Sourcefn generate_keypair_from_rng<R>(
rng: &mut R,
) -> (Self::DecapsulationKey, Self::EncapsulationKey)where
R: CryptoRng,
fn generate_keypair_from_rng<R>(
rng: &mut R,
) -> (Self::DecapsulationKey, Self::EncapsulationKey)where
R: CryptoRng,
Generate a random KEM keypair using the provided random number generator.
Sourcefn generate_keypair() -> (Self::DecapsulationKey, Self::EncapsulationKey)
fn generate_keypair() -> (Self::DecapsulationKey, Self::EncapsulationKey)
Generate a random KEM keypair using the system’s secure RNG.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".