pub struct IntegerElGamal { /* private fields */ }
Expand description

Multiplicatively homomorphic ElGamal over a safe prime group where the generator is 4.

As an example we compute the product between 4 and 6 using ElGamal’s homomorphic property.

let mut rng = GeneralRng::new(OsRng);
let el_gamal = IntegerElGamal::setup(&Default::default());
let (public_key, secret_key) = el_gamal.generate_keys(&mut rng);

let ciphertext_1 = public_key.encrypt(&Integer::from(4), &mut rng);
let ciphertext_2 = public_key.encrypt(&Integer::from(6), &mut rng);

println!("[4] * [6] = [{}]", secret_key.decrypt(&(ciphertext_1 * ciphertext_2)));
// Prints: "[4] * [6] = [24]".

Trait Implementations

Uses previously randomly generated safe primes as the modulus for pre-set modulus sizes.

Generates a fresh ElGamal keypair.

let el_gamal = IntegerElGamal::setup(&Default::default());
let (public_key, secret_key) = el_gamal.generate_keys(&mut rng);

The public key, used for encrypting plaintexts.

The secret key, used for decrypting ciphertexts.

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Casts the value.

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Casts the value.

Casts the value.

Casts the value.

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Casts the value.

OverflowingCasts the value.

Should always be Self

Casts the value.

Casts the value.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

Casts the value.

UnwrappedCasts the value.

Casts the value.

WrappingCasts the value.