pub struct CiphertextWithValue<G: Group, V: Zeroize = <G as ScalarOps>::Scalar> { /* private fields */ }
Expand description

ElGamal Ciphertext together with fully retained information about the encrypted value and randomness used to create the ciphertext.

This type can be used to produce certain kinds of proofs, such as SumOfSquaresProof.

Implementations§

source§

impl<G: Group, V> CiphertextWithValue<G, V>
where V: Copy + Zeroize, G::Scalar: From<V>,

source

pub fn new<R: CryptoRng + RngCore>( value: V, receiver: &PublicKey<G>, rng: &mut R ) -> Self

Encrypts a value for the specified receiver.

This is a lower-level operation compared to PublicKey::encrypt() and should be used if the resulting ciphertext is necessary to produce proofs.

source

pub fn generalize(self) -> CiphertextWithValue<G>

Converts the enclosed value into a scalar.

source§

impl<G: Group, V> CiphertextWithValue<G, V>
where V: Zeroize, G::Scalar: From<V>,

source

pub fn inner(&self) -> &Ciphertext<G>

Returns a reference to the contained Ciphertext.

Trait Implementations§

source§

impl<G: Debug + Group, V: Debug + Zeroize> Debug for CiphertextWithValue<G, V>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<G: Group, V: Zeroize> From<CiphertextWithValue<G, V>> for Ciphertext<G>

source§

fn from(ciphertext: CiphertextWithValue<G, V>) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl<G, V> Freeze for CiphertextWithValue<G, V>
where V: Freeze, <G as ElementOps>::Element: Freeze, <G as ScalarOps>::Scalar: Freeze,

§

impl<G, V> RefUnwindSafe for CiphertextWithValue<G, V>

§

impl<G, V> Send for CiphertextWithValue<G, V>
where V: Send, <G as ElementOps>::Element: Send, <G as ScalarOps>::Scalar: Send,

§

impl<G, V> Sync for CiphertextWithValue<G, V>
where V: Sync, <G as ElementOps>::Element: Sync, <G as ScalarOps>::Scalar: Sync,

§

impl<G, V> Unpin for CiphertextWithValue<G, V>
where V: Unpin, <G as ElementOps>::Element: Unpin, <G as ScalarOps>::Scalar: Unpin,

§

impl<G, V> UnwindSafe for CiphertextWithValue<G, V>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

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

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V