pub trait EncryptionScheme: Sized + ToBytes + FromBytes + Debug + Clone + Eq + From<Self::Parameters> {
    type CiphertextRandomizer: Clone + Debug + Default + Eq + Hash + ToBytes + FromBytes + ToBits;
    type Parameters: Clone + Debug + Eq;
    type PrivateKey: Clone + Debug + Default + Eq + Hash + ToBytes + FromBytes + ToBits + UniformRand;
    type PublicKey: Copy + Clone + Debug + Default + Eq + ToBytes + FromBytes;
    type ScalarRandomness: Copy + Clone + Debug + Default + Eq + Hash + ToBytes + FromBytes + UniformRand;
    type SymmetricKey: Copy + Clone + Debug + Default + Eq + Hash + ToBytes + FromBytes + Send + Sync;
    type SymmetricKeyCommitment: Copy + Clone + Debug + Default + Eq + Hash + ToBytes + FromBytes + Send + Sync;
    fn setup(message: &str) -> Self;
fn generate_private_key<R: Rng + CryptoRng>(
        &self,
        rng: &mut R
    ) -> Self::PrivateKey;
fn generate_public_key(
        &self,
        private_key: &Self::PrivateKey
    ) -> Self::PublicKey;
fn generate_asymmetric_key<R: Rng + CryptoRng>(
        &self,
        public_key: &Self::PublicKey,
        rng: &mut R
    ) -> (Self::ScalarRandomness, Self::CiphertextRandomizer, Self::SymmetricKey);
fn generate_symmetric_key(
        &self,
        private_key: &Self::PrivateKey,
        ciphertext_randomizer: Self::CiphertextRandomizer
    ) -> Option<Self::SymmetricKey>;
fn generate_symmetric_key_commitment(
        &self,
        symmetric_key: &Self::SymmetricKey
    ) -> Self::SymmetricKeyCommitment;
fn encrypt(
        &self,
        symmetric_key: &Self::SymmetricKey,
        message: &[u8]
    ) -> Result<Vec<u8>, EncryptionError>;
fn decrypt(
        &self,
        symmetric_key: &Self::SymmetricKey,
        ciphertext: &[u8]
    ) -> Result<Vec<u8>, EncryptionError>;
fn parameters(&self) -> &<Self as EncryptionScheme>::Parameters;
fn private_key_size_in_bits() -> usize; }

Associated Types

Required methods

Implementors