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§
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)
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.