Struct scicrypt::cryptosystems::curve_el_gamal::CurveElGamalPK
source · [−]pub struct CurveElGamalPK { /* private fields */ }
Expand description
Encryption key for curve-based ElGamal
Implementations
sourceimpl CurveElGamalPK
impl CurveElGamalPK
sourcepub fn precompute(self) -> PrecomputedCurveElGamalPK
pub fn precompute(self) -> PrecomputedCurveElGamalPK
Precompute values for the encryption key to speed-up future encryptions
Trait Implementations
sourceimpl Associable<CurveElGamalPK> for CurveElGamalCiphertext
impl Associable<CurveElGamalPK> for CurveElGamalCiphertext
sourcefn associate(self, public_key: &PK) -> AssociatedCiphertext<'_, Self, PK>
fn associate(self, public_key: &PK) -> AssociatedCiphertext<'_, Self, PK>
‘Enriches’ a ciphertext by associating it with a corresponding public key. This allows to overlead operators for homomorphic operations.
sourceimpl Debug for CurveElGamalPK
impl Debug for CurveElGamalPK
sourceimpl DecryptionKey<CurveElGamalPK> for CurveElGamalSK
impl DecryptionKey<CurveElGamalPK> for CurveElGamalSK
sourcefn decrypt_raw(
&self,
_public_key: &CurveElGamalPK,
ciphertext: &CurveElGamalCiphertext
) -> RistrettoPoint
fn decrypt_raw(
&self,
_public_key: &CurveElGamalPK,
ciphertext: &CurveElGamalCiphertext
) -> RistrettoPoint
Decrypt the ciphertext using the secret key and its related public key.
sourcefn decrypt(
&self,
ciphertext: &AssociatedCiphertext<'pk, <PK as EncryptionKey>::Ciphertext, PK>
) -> <PK as EncryptionKey>::Plaintext
fn decrypt(
&self,
ciphertext: &AssociatedCiphertext<'pk, <PK as EncryptionKey>::Ciphertext, PK>
) -> <PK as EncryptionKey>::Plaintext
Decrypt the associated ciphertext using the secret key.
sourcefn combine(
decryption_shares: &[NOfNCurveElGamalShare],
_public_key: &CurveElGamalPK
) -> Result<RistrettoPoint, DecryptionError>
fn combine(
decryption_shares: &[NOfNCurveElGamalShare],
_public_key: &CurveElGamalPK
) -> Result<RistrettoPoint, DecryptionError>
Combine $t$ decryption shares belonging to distinct partial keys to finish decryption. It is the responsibility of the programmer to supply the right number of decryption shares to this function. Read more
sourcefn combine(
decryption_shares: &[TOfNCurveElGamalShare],
_public_key: &CurveElGamalPK
) -> Result<RistrettoPoint, DecryptionError>
fn combine(
decryption_shares: &[TOfNCurveElGamalShare],
_public_key: &CurveElGamalPK
) -> Result<RistrettoPoint, DecryptionError>
Combine $t$ decryption shares belonging to distinct partial keys to finish decryption. It is the responsibility of the programmer to supply the right number of decryption shares to this function. Read more
sourceimpl EncryptionKey for CurveElGamalPK
impl EncryptionKey for CurveElGamalPK
type Input = Scalar
type Input = Scalar
Input is the type used to multiply additive ciphertexts or exponentiate multiplicative ciphertexts.
type Plaintext = RistrettoPoint
type Plaintext = RistrettoPoint
The type of the plaintext to be encrypted.
type Ciphertext = CurveElGamalCiphertext
type Ciphertext = CurveElGamalCiphertext
The type of an encrypted plaintext, i.e. a ciphertext.
sourcefn encrypt_raw<R>(
&self,
plaintext: &RistrettoPoint,
rng: &mut GeneralRng<R>
) -> CurveElGamalCiphertext where
R: SecureRng,
fn encrypt_raw<R>(
&self,
plaintext: &RistrettoPoint,
rng: &mut GeneralRng<R>
) -> CurveElGamalCiphertext where
R: SecureRng,
Encrypt the plaintext using the public key and a cryptographic RNG.
sourcefn encrypt<R>(
&'pk self,
plaintext: &Self::Plaintext,
rng: &mut GeneralRng<R>
) -> AssociatedCiphertext<'pk, Self::Ciphertext, Self> where
R: SecureRng,
fn encrypt<R>(
&'pk self,
plaintext: &Self::Plaintext,
rng: &mut GeneralRng<R>
) -> AssociatedCiphertext<'pk, Self::Ciphertext, Self> where
R: SecureRng,
Encrypt the plaintext using the public key and a cryptographic RNG and immediately associate it with the public key.
sourceimpl HomomorphicAddition for CurveElGamalPK
impl HomomorphicAddition for CurveElGamalPK
sourcefn add(
&self,
ciphertext_a: <CurveElGamalPK as EncryptionKey>::Ciphertext,
ciphertext_b: <CurveElGamalPK as EncryptionKey>::Ciphertext
) -> <CurveElGamalPK as EncryptionKey>::Ciphertext
fn add(
&self,
ciphertext_a: <CurveElGamalPK as EncryptionKey>::Ciphertext,
ciphertext_b: <CurveElGamalPK as EncryptionKey>::Ciphertext
) -> <CurveElGamalPK as EncryptionKey>::Ciphertext
Combines two ciphertexts so that their decrypted value reflects some addition operation
sourcefn mul(
&self,
ciphertext: <CurveElGamalPK as EncryptionKey>::Ciphertext,
input: <CurveElGamalPK as EncryptionKey>::Input
) -> <CurveElGamalPK as EncryptionKey>::Ciphertext
fn mul(
&self,
ciphertext: <CurveElGamalPK as EncryptionKey>::Ciphertext,
input: <CurveElGamalPK as EncryptionKey>::Input
) -> <CurveElGamalPK as EncryptionKey>::Ciphertext
Applies some operation on a ciphertext so that the decrypted value reflects some multiplication with input
sourceimpl PartialDecryptionKey<CurveElGamalPK> for TOfNCurveElGamalSK
impl PartialDecryptionKey<CurveElGamalPK> for TOfNCurveElGamalSK
The type of the decryption share. If enough decryption shares of different keys are combined, they output the correct decryption.
sourcefn partial_decrypt_raw(
&self,
_public_key: &CurveElGamalPK,
ciphertext: &CurveElGamalCiphertext
) -> TOfNCurveElGamalShare
fn partial_decrypt_raw(
&self,
_public_key: &CurveElGamalPK,
ciphertext: &CurveElGamalCiphertext
) -> TOfNCurveElGamalShare
Partially decrypts a ciphertext, returning a valid decryption share.
sourcefn partial_decrypt(
&self,
ciphertext: &AssociatedCiphertext<'pk, <PK as EncryptionKey>::Ciphertext, PK>
) -> Self::DecryptionShare
fn partial_decrypt(
&self,
ciphertext: &AssociatedCiphertext<'pk, <PK as EncryptionKey>::Ciphertext, PK>
) -> Self::DecryptionShare
Partially decrypts a ciphertext, returning a valid decryption share.
sourceimpl PartialDecryptionKey<CurveElGamalPK> for NOfNCurveElGamalSK
impl PartialDecryptionKey<CurveElGamalPK> for NOfNCurveElGamalSK
The type of the decryption share. If enough decryption shares of different keys are combined, they output the correct decryption.
sourcefn partial_decrypt_raw(
&self,
_public_key: &CurveElGamalPK,
ciphertext: &CurveElGamalCiphertext
) -> NOfNCurveElGamalShare
fn partial_decrypt_raw(
&self,
_public_key: &CurveElGamalPK,
ciphertext: &CurveElGamalCiphertext
) -> NOfNCurveElGamalShare
Partially decrypts a ciphertext, returning a valid decryption share.
sourcefn partial_decrypt(
&self,
ciphertext: &AssociatedCiphertext<'pk, <PK as EncryptionKey>::Ciphertext, PK>
) -> Self::DecryptionShare
fn partial_decrypt(
&self,
ciphertext: &AssociatedCiphertext<'pk, <PK as EncryptionKey>::Ciphertext, PK>
) -> Self::DecryptionShare
Partially decrypts a ciphertext, returning a valid decryption share.
sourceimpl PartialEq<CurveElGamalPK> for CurveElGamalPK
impl PartialEq<CurveElGamalPK> for CurveElGamalPK
sourcefn eq(&self, other: &CurveElGamalPK) -> bool
fn eq(&self, other: &CurveElGamalPK) -> bool
This method tests for self
and other
values to be equal, and is used
by ==
. Read more
sourcefn ne(&self, other: &CurveElGamalPK) -> bool
fn ne(&self, other: &CurveElGamalPK) -> bool
This method tests for !=
.
impl StructuralPartialEq for CurveElGamalPK
Auto Trait Implementations
impl RefUnwindSafe for CurveElGamalPK
impl Send for CurveElGamalPK
impl Sync for CurveElGamalPK
impl Unpin for CurveElGamalPK
impl UnwindSafe for CurveElGamalPK
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> CheckedAs for T
impl<T> CheckedAs for T
sourcefn checked_as<Dst>(self) -> Option<Dst> where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst> where
T: CheckedCast<Dst>,
Casts the value.
sourceimpl<Src, Dst> CheckedCastFrom<Src> for Dst where
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dst where
Src: CheckedCast<Dst>,
sourcefn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
Casts the value.
sourceimpl<T> OverflowingAs for T
impl<T> OverflowingAs for T
sourcefn overflowing_as<Dst>(self) -> (Dst, bool) where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool) where
T: OverflowingCast<Dst>,
Casts the value.
sourceimpl<Src, Dst> OverflowingCastFrom<Src> for Dst where
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dst where
Src: OverflowingCast<Dst>,
sourcefn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
OverflowingCasts the value.
sourceimpl<T> SaturatingAs for T
impl<T> SaturatingAs for T
sourcefn saturating_as<Dst>(self) -> Dst where
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dst where
T: SaturatingCast<Dst>,
Casts the value.
sourceimpl<Src, Dst> SaturatingCastFrom<Src> for Dst where
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dst where
Src: SaturatingCast<Dst>,
sourcefn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
Casts the value.
sourceimpl<T> UnwrappedAs for T
impl<T> UnwrappedAs for T
sourcefn unwrapped_as<Dst>(self) -> Dst where
T: UnwrappedCast<Dst>,
fn unwrapped_as<Dst>(self) -> Dst where
T: UnwrappedCast<Dst>,
Casts the value.
sourceimpl<Src, Dst> UnwrappedCastFrom<Src> for Dst where
Src: UnwrappedCast<Dst>,
impl<Src, Dst> UnwrappedCastFrom<Src> for Dst where
Src: UnwrappedCast<Dst>,
sourcefn unwrapped_cast_from(src: Src) -> Dst
fn unwrapped_cast_from(src: Src) -> Dst
UnwrappedCasts the value.
sourceimpl<T> WrappingAs for T
impl<T> WrappingAs for T
sourcefn wrapping_as<Dst>(self) -> Dst where
T: WrappingCast<Dst>,
fn wrapping_as<Dst>(self) -> Dst where
T: WrappingCast<Dst>,
Casts the value.
sourceimpl<Src, Dst> WrappingCastFrom<Src> for Dst where
Src: WrappingCast<Dst>,
impl<Src, Dst> WrappingCastFrom<Src> for Dst where
Src: WrappingCast<Dst>,
sourcefn wrapping_cast_from(src: Src) -> Dst
fn wrapping_cast_from(src: Src) -> Dst
WrappingCasts the value.