Trait ml_kem::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

Object Safety§

This trait is not object safe.

Implementors§

source§

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

§

type SharedKeySize = UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>

§

type CiphertextSize = <P as PkeParams>::CiphertextSize

§

type DecapsulationKey = DecapsulationKey<P>

§

type EncapsulationKey = EncapsulationKey<P>