Struct scicrypt::cryptosystems::curve_el_gamal::CurveElGamalPK
source · [−]pub struct CurveElGamalPK {
pub point: RistrettoPoint,
}
Expand description
Encryption key for curve-based ElGamal
Fields
point: RistrettoPoint
Public key as a RistrettoPoint
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 Clone for CurveElGamalPK
impl Clone for CurveElGamalPK
sourcefn clone(&self) -> CurveElGamalPK
fn clone(&self) -> CurveElGamalPK
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
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_identity_raw(
&self,
_public_key: &CurveElGamalPK,
ciphertext: &<CurveElGamalPK as EncryptionKey>::Ciphertext
) -> bool
fn decrypt_identity_raw(
&self,
_public_key: &CurveElGamalPK,
ciphertext: &<CurveElGamalPK as EncryptionKey>::Ciphertext
) -> bool
Returns true if the encrypted value equals the identity. This is typically faster than a full decryption.
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 decrypt_identity(
&self,
ciphertext: &AssociatedCiphertext<'pk, <PK as EncryptionKey>::Ciphertext, PK>
) -> bool
fn decrypt_identity(
&self,
ciphertext: &AssociatedCiphertext<'pk, <PK as EncryptionKey>::Ciphertext, PK>
) -> bool
Returns true if the associated ciphertext encrypts the identity. This is typically faster than a full decryption.
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<'de> Deserialize<'de> for CurveElGamalPK
impl<'de> Deserialize<'de> for CurveElGamalPK
sourcefn deserialize<__D>(
__deserializer: __D
) -> Result<CurveElGamalPK, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D
) -> Result<CurveElGamalPK, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. 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.
type Randomness = Scalar
type Randomness = Scalar
The type of the randomness used.
sourcefn encrypt_without_randomness(
&self,
plaintext: &<CurveElGamalPK as EncryptionKey>::Plaintext
) -> <CurveElGamalPK as EncryptionKey>::Ciphertext
fn encrypt_without_randomness(
&self,
plaintext: &<CurveElGamalPK as EncryptionKey>::Plaintext
) -> <CurveElGamalPK as EncryptionKey>::Ciphertext
WARNING: This is not a full encryption. The resulting ciphertext is completely insecure. ‘Encrypts’ the plaintext using the public key deterministically, essentially creating a trivial ciphertext. The encryption is not secure until you call randomize
or randomize_with
with suitable randomness.
sourcefn randomize<R>(
&self,
ciphertext: <CurveElGamalPK as EncryptionKey>::Ciphertext,
rng: &mut GeneralRng<R>
) -> <CurveElGamalPK as EncryptionKey>::Ciphertextwhere
R: SecureRng,
fn randomize<R>(
&self,
ciphertext: <CurveElGamalPK as EncryptionKey>::Ciphertext,
rng: &mut GeneralRng<R>
) -> <CurveElGamalPK as EncryptionKey>::Ciphertextwhere
R: SecureRng,
Randomizes the ciphertext with the supplied rng.
sourcefn randomize_with(
&self,
ciphertext: <CurveElGamalPK as EncryptionKey>::Ciphertext,
randomness: &<CurveElGamalPK as EncryptionKey>::Randomness
) -> <CurveElGamalPK as EncryptionKey>::Ciphertext
fn randomize_with(
&self,
ciphertext: <CurveElGamalPK as EncryptionKey>::Ciphertext,
randomness: &<CurveElGamalPK as EncryptionKey>::Randomness
) -> <CurveElGamalPK as EncryptionKey>::Ciphertext
Randomizes the ciphertext with the user supplied randomness.
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.
sourcefn encrypt_raw<R>(
&self,
plaintext: &Self::Plaintext,
rng: &mut GeneralRng<R>
) -> Self::Ciphertextwhere
R: SecureRng,
fn encrypt_raw<R>(
&self,
plaintext: &Self::Plaintext,
rng: &mut GeneralRng<R>
) -> Self::Ciphertextwhere
R: SecureRng,
Encrypt the plaintext using the public key and a cryptographic RNG.
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_constant(
&self,
ciphertext: &<CurveElGamalPK as EncryptionKey>::Ciphertext,
input: &<CurveElGamalPK as EncryptionKey>::Input
) -> <CurveElGamalPK as EncryptionKey>::Ciphertext
fn mul_constant(
&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
sourcefn sub(
&self,
ciphertext_a: &<CurveElGamalPK as EncryptionKey>::Ciphertext,
ciphertext_b: &<CurveElGamalPK as EncryptionKey>::Ciphertext
) -> <CurveElGamalPK as EncryptionKey>::Ciphertext
fn sub(
&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 subtract operation
sourcefn add_constant(
&self,
ciphertext: &<CurveElGamalPK as EncryptionKey>::Ciphertext,
constant: &<CurveElGamalPK as EncryptionKey>::Plaintext
) -> <CurveElGamalPK as EncryptionKey>::Ciphertext
fn add_constant(
&self,
ciphertext: &<CurveElGamalPK as EncryptionKey>::Ciphertext,
constant: &<CurveElGamalPK as EncryptionKey>::Plaintext
) -> <CurveElGamalPK as EncryptionKey>::Ciphertext
Combines two ciphertexts so that their decrypted value reflects some addition operation with a constant
sourcefn sub_constant(
&self,
ciphertext: &<CurveElGamalPK as EncryptionKey>::Ciphertext,
constant: &<CurveElGamalPK as EncryptionKey>::Plaintext
) -> <CurveElGamalPK as EncryptionKey>::Ciphertext
fn sub_constant(
&self,
ciphertext: &<CurveElGamalPK as EncryptionKey>::Ciphertext,
constant: &<CurveElGamalPK as EncryptionKey>::Plaintext
) -> <CurveElGamalPK as EncryptionKey>::Ciphertext
Combines two ciphertexts so that their decrypted value reflects some subtract operation with a constant
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 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 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
sourceimpl Serialize for CurveElGamalPK
impl Serialize for CurveElGamalPK
sourcefn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
impl Eq for CurveElGamalPK
impl StructuralEq for CurveElGamalPK
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 Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
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 Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
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 Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
sourcefn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
Casts the value.
sourceimpl<T> SaturatingAs for T
impl<T> SaturatingAs for T
sourcefn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
Casts the value.
sourceimpl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
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) -> Dstwhere
T: UnwrappedCast<Dst>,
fn unwrapped_as<Dst>(self) -> Dstwhere
T: UnwrappedCast<Dst>,
Casts the value.
sourceimpl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere
Src: UnwrappedCast<Dst>,
impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere
Src: UnwrappedCast<Dst>,
sourcefn unwrapped_cast_from(src: Src) -> Dst
fn unwrapped_cast_from(src: Src) -> Dst
Casts the value.
sourceimpl<T> WrappingAs for T
impl<T> WrappingAs for T
sourcefn wrapping_as<Dst>(self) -> Dstwhere
T: WrappingCast<Dst>,
fn wrapping_as<Dst>(self) -> Dstwhere
T: WrappingCast<Dst>,
Casts the value.
sourceimpl<Src, Dst> WrappingCastFrom<Src> for Dstwhere
Src: WrappingCast<Dst>,
impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere
Src: WrappingCast<Dst>,
sourcefn wrapping_cast_from(src: Src) -> Dst
fn wrapping_cast_from(src: Src) -> Dst
Casts the value.