Struct scicrypt::cryptosystems::paillier::PaillierPK
source · [−]pub struct PaillierPK {
pub n: UnsignedInteger,
pub g: UnsignedInteger,
}
Expand description
Public key for the Paillier cryptosystem.
Fields
n: UnsignedInteger
Public modulus n for encryption
g: UnsignedInteger
Public generator g for encryption
Trait Implementations
sourceimpl Associable<PaillierPK> for PaillierCiphertext
impl Associable<PaillierPK> for PaillierCiphertext
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 PaillierPK
impl Clone for PaillierPK
sourcefn clone(&self) -> PaillierPK
fn clone(&self) -> PaillierPK
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 PaillierPK
impl Debug for PaillierPK
sourceimpl DecryptionKey<PaillierPK> for PaillierSK
impl DecryptionKey<PaillierPK> for PaillierSK
sourcefn decrypt_raw(
&self,
public_key: &PaillierPK,
ciphertext: &PaillierCiphertext
) -> UnsignedInteger
fn decrypt_raw(
&self,
public_key: &PaillierPK,
ciphertext: &PaillierCiphertext
) -> UnsignedInteger
Decrypts a rich Paillier ciphertext using the secret key.
println!("The decrypted message is {}", secret_key.decrypt(&ciphertext));
// Prints: "The decrypted message is 5".
sourcefn decrypt_identity_raw(
&self,
public_key: &PaillierPK,
ciphertext: &<PaillierPK as EncryptionKey>::Ciphertext
) -> bool
fn decrypt_identity_raw(
&self,
public_key: &PaillierPK,
ciphertext: &<PaillierPK 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.
sourceimpl<'de> Deserialize<'de> for PaillierPK
impl<'de> Deserialize<'de> for PaillierPK
sourcefn deserialize<__D>(
__deserializer: __D
) -> Result<PaillierPK, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D
) -> Result<PaillierPK, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
sourceimpl EncryptionKey for PaillierPK
impl EncryptionKey for PaillierPK
type Input = UnsignedInteger
type Input = UnsignedInteger
Input is the type used to multiply additive ciphertexts or exponentiate multiplicative ciphertexts.
type Plaintext = UnsignedInteger
type Plaintext = UnsignedInteger
The type of the plaintext to be encrypted.
type Ciphertext = PaillierCiphertext
type Ciphertext = PaillierCiphertext
The type of an encrypted plaintext, i.e. a ciphertext.
type Randomness = UnsignedInteger
type Randomness = UnsignedInteger
The type of the randomness used.
sourcefn encrypt_without_randomness(
&self,
plaintext: &<PaillierPK as EncryptionKey>::Plaintext
) -> <PaillierPK as EncryptionKey>::Ciphertext
fn encrypt_without_randomness(
&self,
plaintext: &<PaillierPK as EncryptionKey>::Plaintext
) -> <PaillierPK 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: <PaillierPK as EncryptionKey>::Ciphertext,
rng: &mut GeneralRng<R>
) -> <PaillierPK as EncryptionKey>::Ciphertextwhere
R: SecureRng,
fn randomize<R>(
&self,
ciphertext: <PaillierPK as EncryptionKey>::Ciphertext,
rng: &mut GeneralRng<R>
) -> <PaillierPK as EncryptionKey>::Ciphertextwhere
R: SecureRng,
Randomizes the ciphertext with the supplied rng.
sourcefn randomize_with(
&self,
ciphertext: <PaillierPK as EncryptionKey>::Ciphertext,
randomness: &<PaillierPK as EncryptionKey>::Randomness
) -> <PaillierPK as EncryptionKey>::Ciphertext
fn randomize_with(
&self,
ciphertext: <PaillierPK as EncryptionKey>::Ciphertext,
randomness: &<PaillierPK as EncryptionKey>::Randomness
) -> <PaillierPK 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 PaillierPK
impl HomomorphicAddition for PaillierPK
sourcefn add(
&self,
ciphertext_a: &<PaillierPK as EncryptionKey>::Ciphertext,
ciphertext_b: &<PaillierPK as EncryptionKey>::Ciphertext
) -> <PaillierPK as EncryptionKey>::Ciphertext
fn add(
&self,
ciphertext_a: &<PaillierPK as EncryptionKey>::Ciphertext,
ciphertext_b: &<PaillierPK as EncryptionKey>::Ciphertext
) -> <PaillierPK as EncryptionKey>::Ciphertext
Combines two ciphertexts so that their decrypted value reflects some addition operation
sourcefn mul_constant(
&self,
ciphertext: &<PaillierPK as EncryptionKey>::Ciphertext,
input: &<PaillierPK as EncryptionKey>::Input
) -> <PaillierPK as EncryptionKey>::Ciphertext
fn mul_constant(
&self,
ciphertext: &<PaillierPK as EncryptionKey>::Ciphertext,
input: &<PaillierPK as EncryptionKey>::Input
) -> <PaillierPK as EncryptionKey>::Ciphertext
Applies some operation on a ciphertext so that the decrypted value reflects some multiplication with input
sourcefn sub(
&self,
ciphertext_a: &<PaillierPK as EncryptionKey>::Ciphertext,
ciphertext_b: &<PaillierPK as EncryptionKey>::Ciphertext
) -> <PaillierPK as EncryptionKey>::Ciphertext
fn sub(
&self,
ciphertext_a: &<PaillierPK as EncryptionKey>::Ciphertext,
ciphertext_b: &<PaillierPK as EncryptionKey>::Ciphertext
) -> <PaillierPK as EncryptionKey>::Ciphertext
Combines two ciphertexts so that their decrypted value reflects some subtract operation
sourcefn add_constant(
&self,
ciphertext: &<PaillierPK as EncryptionKey>::Ciphertext,
constant: &<PaillierPK as EncryptionKey>::Plaintext
) -> <PaillierPK as EncryptionKey>::Ciphertext
fn add_constant(
&self,
ciphertext: &<PaillierPK as EncryptionKey>::Ciphertext,
constant: &<PaillierPK as EncryptionKey>::Plaintext
) -> <PaillierPK as EncryptionKey>::Ciphertext
Combines two ciphertexts so that their decrypted value reflects some addition operation with a constant
sourcefn sub_constant(
&self,
ciphertext: &<PaillierPK as EncryptionKey>::Ciphertext,
constant: &<PaillierPK as EncryptionKey>::Plaintext
) -> <PaillierPK as EncryptionKey>::Ciphertext
fn sub_constant(
&self,
ciphertext: &<PaillierPK as EncryptionKey>::Ciphertext,
constant: &<PaillierPK as EncryptionKey>::Plaintext
) -> <PaillierPK as EncryptionKey>::Ciphertext
Combines two ciphertexts so that their decrypted value reflects some subtract operation with a constant
sourceimpl PartialEq<PaillierPK> for PaillierPK
impl PartialEq<PaillierPK> for PaillierPK
sourcefn eq(&self, other: &PaillierPK) -> bool
fn eq(&self, other: &PaillierPK) -> bool
This method tests for self
and other
values to be equal, and is used
by ==
. Read more
sourceimpl Serialize for PaillierPK
impl Serialize for PaillierPK
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 PaillierPK
impl StructuralEq for PaillierPK
impl StructuralPartialEq for PaillierPK
Auto Trait Implementations
impl RefUnwindSafe for PaillierPK
impl Send for PaillierPK
impl !Sync for PaillierPK
impl Unpin for PaillierPK
impl UnwindSafe for PaillierPK
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.