Trait snarkvm_algorithms::traits::encryption::EncryptionScheme[][src]

pub trait EncryptionScheme: Sized + Clone + From<Self::Parameters> + SignatureScheme {
    type Parameters: Clone + Debug + Eq + ToBytes + FromBytes;
    type PrivateKey: Clone + Debug + Default + Eq + Hash + ToBytes + FromBytes + UniformRand;
    type PublicKey: Clone + Debug + Default + Eq + ToBytes + FromBytes;
    type Text: Clone + Debug + Default + Eq + ToBytes + FromBytes;
    type Randomness: Clone + Debug + Default + Eq + Hash + ToBytes + FromBytes + UniformRand;
    type BlindingExponent: Clone + Debug + Default + Eq + Hash + ToBytes;
    fn setup<R: Rng>(rng: &mut R) -> Self;
fn generate_private_key<R: Rng>(&self, rng: &mut R) -> Self::PrivateKey;
fn generate_public_key(
        &self,
        private_key: &Self::PrivateKey
    ) -> Result<Self::PublicKey, EncryptionError>;
fn generate_randomness<R: Rng>(
        &self,
        public_key: &Self::PublicKey,
        rng: &mut R
    ) -> Result<Self::Randomness, EncryptionError>;
fn generate_blinding_exponents(
        &self,
        public_key: &Self::PublicKey,
        randomness: &Self::Randomness,
        message_length: usize
    ) -> Result<Vec<Self::BlindingExponent>, EncryptionError>;
fn encrypt(
        &self,
        public_key: &Self::PublicKey,
        randomness: &Self::Randomness,
        message: &[Self::Text]
    ) -> Result<Vec<Self::Text>, EncryptionError>;
fn decrypt(
        &self,
        private_key: &Self::PrivateKey,
        ciphertext: &[Self::Text]
    ) -> Result<Vec<Self::Text>, EncryptionError>;
fn parameters(&self) -> &Self::Parameters;
fn private_key_size_in_bits() -> usize; }

Associated Types

Required methods

fn setup<R: Rng>(rng: &mut R) -> Self[src]

fn generate_private_key<R: Rng>(&self, rng: &mut R) -> Self::PrivateKey[src]

fn generate_public_key(
    &self,
    private_key: &Self::PrivateKey
) -> Result<Self::PublicKey, EncryptionError>
[src]

fn generate_randomness<R: Rng>(
    &self,
    public_key: &Self::PublicKey,
    rng: &mut R
) -> Result<Self::Randomness, EncryptionError>
[src]

fn generate_blinding_exponents(
    &self,
    public_key: &Self::PublicKey,
    randomness: &Self::Randomness,
    message_length: usize
) -> Result<Vec<Self::BlindingExponent>, EncryptionError>
[src]

fn encrypt(
    &self,
    public_key: &Self::PublicKey,
    randomness: &Self::Randomness,
    message: &[Self::Text]
) -> Result<Vec<Self::Text>, EncryptionError>
[src]

fn decrypt(
    &self,
    private_key: &Self::PrivateKey,
    ciphertext: &[Self::Text]
) -> Result<Vec<Self::Text>, EncryptionError>
[src]

fn parameters(&self) -> &Self::Parameters[src]

fn private_key_size_in_bits() -> usize[src]

Implementors

impl<G: Group + ProjectiveCurve, SG: Group + CanonicalSerialize + CanonicalDeserialize, D: Digest + Send + Sync> EncryptionScheme for GroupEncryption<G, SG, D>[src]

type BlindingExponent = <G as Group>::ScalarField

type Parameters = GroupEncryptionParameters<G>

type PrivateKey = <G as Group>::ScalarField

type PublicKey = GroupEncryptionPublicKey<G>

type Randomness = <G as Group>::ScalarField

type Text = G

fn setup<R: Rng>(rng: &mut R) -> Self[src]

fn generate_private_key<R: Rng>(&self, rng: &mut R) -> Self::PrivateKey[src]

fn generate_public_key(
    &self,
    private_key: &Self::PrivateKey
) -> Result<Self::PublicKey, EncryptionError>
[src]

fn generate_randomness<R: Rng>(
    &self,
    public_key: &Self::PublicKey,
    rng: &mut R
) -> Result<Self::Randomness, EncryptionError>
[src]

fn generate_blinding_exponents(
    &self,
    public_key: &Self::PublicKey,
    randomness: &Self::Randomness,
    message_length: usize
) -> Result<Vec<Self::BlindingExponent>, EncryptionError>
[src]

fn encrypt(
    &self,
    public_key: &Self::PublicKey,
    randomness: &Self::Randomness,
    message: &[Self::Text]
) -> Result<Vec<Self::Text>, EncryptionError>
[src]

fn decrypt(
    &self,
    private_key: &Self::PrivateKey,
    ciphertext: &[Self::Text]
) -> Result<Vec<Self::Text>, EncryptionError>
[src]

fn parameters(&self) -> &Self::Parameters[src]

fn private_key_size_in_bits() -> usize[src]