Skip to main content

PkeParams

Trait PkeParams 

Source
pub trait PkeParams: Kem<SharedKeySize = U32> + ParameterSet {
    type NttVectorSize: ArraySize;
    type EncryptionKeySize: ArraySize;

    // Required methods
    fn encode_u12(
        p: &NttVector<BaseField, Self::K>,
    ) -> Array<u8, <Self as PkeParams>::NttVectorSize>;
    fn decode_u12(
        v: &Array<u8, <Self as PkeParams>::NttVectorSize>,
    ) -> NttVector<BaseField, Self::K>;
    fn concat_ct(
        u: Array<u8, EncodedVectorSize<<Self as ParameterSet>::Du, <Self as ParameterSet>::K>>,
        v: Array<u8, EncodedPolynomialSize<<Self as ParameterSet>::Dv>>,
    ) -> Ciphertext<Self>;
    fn split_ct(
        ct: &Ciphertext<Self>,
    ) -> (&Array<u8, EncodedVectorSize<<Self as ParameterSet>::Du, <Self as ParameterSet>::K>>, &Array<u8, EncodedPolynomialSize<<Self as ParameterSet>::Dv>>);
    fn concat_ek(
        t_hat: Array<u8, <Self as PkeParams>::NttVectorSize>,
        rho: B32,
    ) -> Array<u8, <Self as PkeParams>::EncryptionKeySize>;
    fn split_ek(
        ek: &Array<u8, <Self as PkeParams>::EncryptionKeySize>,
    ) -> (&Array<u8, <Self as PkeParams>::NttVectorSize>, &B32);
}
Expand description

Derived parameter relevant to K-PKE

Required Associated Types§

Required Methods§

Source

fn encode_u12( p: &NttVector<BaseField, Self::K>, ) -> Array<u8, <Self as PkeParams>::NttVectorSize>

Source

fn decode_u12( v: &Array<u8, <Self as PkeParams>::NttVectorSize>, ) -> NttVector<BaseField, Self::K>

Source

fn concat_ct( u: Array<u8, EncodedVectorSize<<Self as ParameterSet>::Du, <Self as ParameterSet>::K>>, v: Array<u8, EncodedPolynomialSize<<Self as ParameterSet>::Dv>>, ) -> Ciphertext<Self>

Source

fn split_ct( ct: &Ciphertext<Self>, ) -> (&Array<u8, EncodedVectorSize<<Self as ParameterSet>::Du, <Self as ParameterSet>::K>>, &Array<u8, EncodedPolynomialSize<<Self as ParameterSet>::Dv>>)

Source

fn concat_ek( t_hat: Array<u8, <Self as PkeParams>::NttVectorSize>, rho: B32, ) -> Array<u8, <Self as PkeParams>::EncryptionKeySize>

Source

fn split_ek( ek: &Array<u8, <Self as PkeParams>::EncryptionKeySize>, ) -> (&Array<u8, <Self as PkeParams>::NttVectorSize>, &B32)

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§