Trait KemCore

Source
pub trait KemCore {
    type SharedKeySize: ArraySize;
    type CiphertextSize: ArraySize;
    type DecapsulationKey: Decapsulate<Ciphertext<Self>, SharedKey<Self>> + EncodedSizeUser + Debug + PartialEq;
    type EncapsulationKey: Encapsulate<Ciphertext<Self>, SharedKey<Self>> + EncapsulateDeterministic<Ciphertext<Self>, SharedKey<Self>> + EncodedSizeUser + Debug + PartialEq;

    // Required methods
    fn generate(
        rng: &mut impl CryptoRngCore,
    ) -> (Self::DecapsulationKey, Self::EncapsulationKey);
    fn generate_deterministic(
        d: &B32,
        z: &B32,
    ) -> (Self::DecapsulationKey, Self::EncapsulationKey);
}
Expand description

A generic interface to a Key Encapsulation Method

Required Associated Types§

Source

type SharedKeySize: ArraySize

The size of a shared key generated by this KEM

Source

type CiphertextSize: ArraySize

The size of a ciphertext encapsulating a shared key

Source

type DecapsulationKey: Decapsulate<Ciphertext<Self>, SharedKey<Self>> + EncodedSizeUser + Debug + PartialEq

A decapsulation key for this KEM

Source

type EncapsulationKey: Encapsulate<Ciphertext<Self>, SharedKey<Self>> + EncapsulateDeterministic<Ciphertext<Self>, SharedKey<Self>> + EncodedSizeUser + Debug + PartialEq

Available on crate feature deterministic only.

An encapsulation key for this KEM

Required Methods§

Source

fn generate( rng: &mut impl CryptoRngCore, ) -> (Self::DecapsulationKey, Self::EncapsulationKey)

Generate a new (decapsulation, encapsulation) key pair

Source

fn generate_deterministic( d: &B32, z: &B32, ) -> (Self::DecapsulationKey, Self::EncapsulationKey)

Available on crate feature deterministic only.

Generate a new (decapsulation, encapsulation) key pair deterministically

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<P> KemCore for Kem<P>
where P: KemParams,