Rename dlog.rs to discrete_log.rs
This commit is contained in:
parent
23d3b540a1
commit
5445e13828
|
@ -16,7 +16,7 @@ const TWO18: u32 = 262144; // 2^18
|
||||||
///
|
///
|
||||||
/// The goal of discrete log is to find x such that x * generator = target.
|
/// The goal of discrete log is to find x such that x * generator = target.
|
||||||
#[derive(Serialize, Deserialize, Copy, Clone, Debug, Eq, PartialEq)]
|
#[derive(Serialize, Deserialize, Copy, Clone, Debug, Eq, PartialEq)]
|
||||||
pub struct DiscreteLogInstance {
|
pub struct DiscreteLog {
|
||||||
/// Generator point for discrete log
|
/// Generator point for discrete log
|
||||||
pub generator: RistrettoPoint,
|
pub generator: RistrettoPoint,
|
||||||
/// Target point for discrete log
|
/// Target point for discrete log
|
||||||
|
@ -56,7 +56,7 @@ pub fn decode_u32_precomputation_for_G() -> HashMap<[u8; 32], u32> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Solves the discrete log instance using a 18/14 bit offline/online split
|
/// Solves the discrete log instance using a 18/14 bit offline/online split
|
||||||
impl DiscreteLogInstance {
|
impl DiscreteLog {
|
||||||
/// Solves the discrete log problem under the assumption that the solution
|
/// Solves the discrete log problem under the assumption that the solution
|
||||||
/// is a 32-bit number.
|
/// is a 32-bit number.
|
||||||
pub fn decode_u32(self) -> Option<u32> {
|
pub fn decode_u32(self) -> Option<u32> {
|
||||||
|
@ -120,7 +120,7 @@ mod tests {
|
||||||
fn test_decode_correctness() {
|
fn test_decode_correctness() {
|
||||||
let amount: u32 = 65545;
|
let amount: u32 = 65545;
|
||||||
|
|
||||||
let instance = DiscreteLogInstance {
|
let instance = DiscreteLog {
|
||||||
generator: G,
|
generator: G,
|
||||||
target: Scalar::from(amount) * G,
|
target: Scalar::from(amount) * G,
|
||||||
};
|
};
|
|
@ -2,7 +2,7 @@
|
||||||
use rand::{rngs::OsRng, CryptoRng, RngCore};
|
use rand::{rngs::OsRng, CryptoRng, RngCore};
|
||||||
use {
|
use {
|
||||||
crate::encryption::{
|
crate::encryption::{
|
||||||
dlog::DiscreteLogInstance,
|
discrete_log::DiscreteLog,
|
||||||
pedersen::{Pedersen, PedersenBase, PedersenComm, PedersenDecHandle, PedersenOpen},
|
pedersen::{Pedersen, PedersenBase, PedersenComm, PedersenDecHandle, PedersenOpen},
|
||||||
},
|
},
|
||||||
arrayref::{array_ref, array_refs},
|
arrayref::{array_ref, array_refs},
|
||||||
|
@ -80,16 +80,16 @@ impl ElGamal {
|
||||||
|
|
||||||
/// On input a secret key and a ciphertext, the function decrypts the ciphertext.
|
/// On input a secret key and a ciphertext, the function decrypts the ciphertext.
|
||||||
///
|
///
|
||||||
/// The output of the function is of type `DiscreteLogInstance`. The exact message
|
/// The output of the function is of type `DiscreteLog`. The exact message
|
||||||
/// can be recovered via the DiscreteLogInstance's decode method.
|
/// can be recovered via the DiscreteLog's decode method.
|
||||||
pub fn decrypt(sk: &ElGamalSK, ct: &ElGamalCiphertext) -> DiscreteLogInstance {
|
pub fn decrypt(sk: &ElGamalSK, ct: &ElGamalCiphertext) -> DiscreteLog {
|
||||||
let ElGamalSK(s) = sk;
|
let ElGamalSK(s) = sk;
|
||||||
let ElGamalCiphertext {
|
let ElGamalCiphertext {
|
||||||
message_comm,
|
message_comm,
|
||||||
decrypt_handle,
|
decrypt_handle,
|
||||||
} = ct;
|
} = ct;
|
||||||
|
|
||||||
DiscreteLogInstance {
|
DiscreteLog {
|
||||||
generator: PedersenBase::default().G,
|
generator: PedersenBase::default().G,
|
||||||
target: message_comm.get_point() - s * decrypt_handle.get_point(),
|
target: message_comm.get_point() - s * decrypt_handle.get_point(),
|
||||||
}
|
}
|
||||||
|
@ -167,7 +167,7 @@ impl ElGamalSK {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Utility method for code ergonomics.
|
/// Utility method for code ergonomics.
|
||||||
pub fn decrypt(&self, ct: &ElGamalCiphertext) -> DiscreteLogInstance {
|
pub fn decrypt(&self, ct: &ElGamalCiphertext) -> DiscreteLog {
|
||||||
ElGamal::decrypt(self, ct)
|
ElGamal::decrypt(self, ct)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -262,7 +262,7 @@ impl ElGamalCiphertext {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Utility method for code ergonomics.
|
/// Utility method for code ergonomics.
|
||||||
pub fn decrypt(&self, sk: &ElGamalSK) -> DiscreteLogInstance {
|
pub fn decrypt(&self, sk: &ElGamalSK) -> DiscreteLog {
|
||||||
ElGamal::decrypt(sk, self)
|
ElGamal::decrypt(sk, self)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -360,7 +360,7 @@ mod tests {
|
||||||
let msg: u32 = 57;
|
let msg: u32 = 57;
|
||||||
let ct = ElGamal::encrypt(&pk, msg);
|
let ct = ElGamal::encrypt(&pk, msg);
|
||||||
|
|
||||||
let expected_instance = DiscreteLogInstance {
|
let expected_instance = DiscreteLog {
|
||||||
generator: PedersenBase::default().G,
|
generator: PedersenBase::default().G,
|
||||||
target: Scalar::from(msg) * PedersenBase::default().G,
|
target: Scalar::from(msg) * PedersenBase::default().G,
|
||||||
};
|
};
|
||||||
|
@ -385,7 +385,7 @@ mod tests {
|
||||||
let ct_1 = decrypt_handle_1.to_elgamal_ctxt(comm);
|
let ct_1 = decrypt_handle_1.to_elgamal_ctxt(comm);
|
||||||
let ct_2 = decrypt_handle_2.to_elgamal_ctxt(comm);
|
let ct_2 = decrypt_handle_2.to_elgamal_ctxt(comm);
|
||||||
|
|
||||||
let expected_instance = DiscreteLogInstance {
|
let expected_instance = DiscreteLog {
|
||||||
generator: PedersenBase::default().G,
|
generator: PedersenBase::default().G,
|
||||||
target: Scalar::from(msg) * PedersenBase::default().G,
|
target: Scalar::from(msg) * PedersenBase::default().G,
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
pub mod dlog;
|
pub mod discrete_log;
|
||||||
pub mod elgamal;
|
pub mod elgamal;
|
||||||
pub mod pedersen;
|
pub mod pedersen;
|
||||||
|
|
Loading…
Reference in New Issue