mirror of
https://github.com/serai-dex/serai.git
synced 2025-12-12 14:09:25 +00:00
fmt & clippy :)
This commit is contained in:
@@ -34,14 +34,15 @@ lazy_static! {
|
|||||||
|
|
||||||
/// Monero's `H` generator multiplied 2^i for each index, i.e. H, 2H, 4H, 8H, ...
|
/// Monero's `H` generator multiplied 2^i for each index, i.e. H, 2H, 4H, 8H, ...
|
||||||
/// used in old range proofs.
|
/// used in old range proofs.
|
||||||
/// https://github.com/monero-project/monero/blob/94e67bf96bbc010241f29ada6abc89f49a81759c/src/ringct/rctTypes.h#L628
|
/// https://github.com/monero-project/monero/blob/94e67bf96bbc010241f29ada6abc89f49a81759c/src/
|
||||||
|
/// ringct/rctTypes.h#L628
|
||||||
pub static ref H2: [DalekPoint; 64] = generate_H2();
|
pub static ref H2: [DalekPoint; 64] = generate_H2();
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(non_snake_case)]
|
#[allow(non_snake_case)]
|
||||||
fn generate_H2() -> [DalekPoint; 64] {
|
fn generate_H2() -> [DalekPoint; 64] {
|
||||||
let mut temp = Vec::with_capacity(64);
|
let mut temp = Vec::with_capacity(64);
|
||||||
for i in 0..64 {
|
for i in 0 .. 64 {
|
||||||
temp.push(Scalar::from(2_u128.pow(i)) * *H)
|
temp.push(Scalar::from(2_u128.pow(i)) * *H)
|
||||||
}
|
}
|
||||||
temp.try_into().unwrap()
|
temp.try_into().unwrap()
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
use std::fmt::Debug;
|
use std::fmt::Debug;
|
||||||
use std::io::{self, Read, Write};
|
use std::io::{self, Read, Write};
|
||||||
|
|
||||||
use curve25519_dalek::edwards::{CompressedEdwardsY, EdwardsPoint};
|
use curve25519_dalek::edwards::EdwardsPoint;
|
||||||
use curve25519_dalek::scalar::Scalar;
|
use curve25519_dalek::scalar::Scalar;
|
||||||
use curve25519_dalek::traits::Identity;
|
use curve25519_dalek::traits::Identity;
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@ impl RangeSig {
|
|||||||
|
|
||||||
let mut C_temp = EdwardsPoint::identity();
|
let mut C_temp = EdwardsPoint::identity();
|
||||||
|
|
||||||
for i in 0..64 {
|
for i in 0 .. 64 {
|
||||||
bbs0.push(Scalar::from_bytes_mod_order(self.asig.s0[i]));
|
bbs0.push(Scalar::from_bytes_mod_order(self.asig.s0[i]));
|
||||||
bbs1.push(Scalar::from_bytes_mod_order(self.asig.s1[i]));
|
bbs1.push(Scalar::from_bytes_mod_order(self.asig.s1[i]));
|
||||||
|
|
||||||
@@ -85,13 +85,18 @@ impl RangeSig {
|
|||||||
} else {
|
} else {
|
||||||
verify_borromean(P1, P2, bbee, bbs0, bbs1)
|
verify_borromean(P1, P2, bbee, bbs0, bbs1)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn verify_borromean(P1: Vec<EdwardsPoint>, P2: Vec<EdwardsPoint>, bbee: Scalar, bbs0: Vec<Scalar>, bbs1: Vec<Scalar>) -> bool {
|
fn verify_borromean(
|
||||||
|
P1: Vec<EdwardsPoint>,
|
||||||
|
P2: Vec<EdwardsPoint>,
|
||||||
|
bbee: Scalar,
|
||||||
|
bbs0: Vec<Scalar>,
|
||||||
|
bbs1: Vec<Scalar>,
|
||||||
|
) -> bool {
|
||||||
let mut LV: Vec<u8> = Vec::with_capacity(2048);
|
let mut LV: Vec<u8> = Vec::with_capacity(2048);
|
||||||
for i in 0..64 {
|
for i in 0 .. 64 {
|
||||||
let LL = EdwardsPoint::vartime_double_scalar_mul_basepoint(&bbee, &P1[i], &bbs0[i]);
|
let LL = EdwardsPoint::vartime_double_scalar_mul_basepoint(&bbee, &P1[i], &bbs0[i]);
|
||||||
let chash = hash_to_scalar(LL.compress().as_bytes());
|
let chash = hash_to_scalar(LL.compress().as_bytes());
|
||||||
let LV_temp = EdwardsPoint::vartime_double_scalar_mul_basepoint(&chash, &P2[i], &bbs1[i]);
|
let LV_temp = EdwardsPoint::vartime_double_scalar_mul_basepoint(&chash, &P2[i], &bbs1[i]);
|
||||||
@@ -99,10 +104,5 @@ fn verify_borromean(P1: Vec<EdwardsPoint>, P2: Vec<EdwardsPoint>, bbee: Scalar,
|
|||||||
}
|
}
|
||||||
let eecomp = hash_to_scalar(&LV);
|
let eecomp = hash_to_scalar(&LV);
|
||||||
|
|
||||||
if !(eecomp == bbee) {
|
eecomp == bbee
|
||||||
false
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,28 +33,28 @@ impl Mlsag {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fn verify(&self, msg: &[u8; 32], ring: &[[EdwardsPoint; 2]], I: &EdwardsPoint) -> bool {
|
pub fn verify(&self, msg: &[u8; 32], ring: &[[EdwardsPoint; 2]], I: &EdwardsPoint) -> bool {
|
||||||
let mut buf = Vec::with_capacity(32 * 6);
|
let mut buf = Vec::with_capacity(32 * 6);
|
||||||
|
|
||||||
|
|
||||||
let mut ci = self.cc;
|
let mut ci = self.cc;
|
||||||
|
|
||||||
for i in 0..ring.len() {
|
for (i, ring_member) in ring.iter().enumerate() {
|
||||||
buf.extend_from_slice(msg);
|
buf.extend_from_slice(msg);
|
||||||
buf.extend_from_slice(ring[i][0].compress().as_bytes());
|
buf.extend_from_slice(ring_member[0].compress().as_bytes());
|
||||||
|
|
||||||
let L1 = EdwardsPoint::vartime_double_scalar_mul_basepoint(&ci, &ring[i][0], &self.ss[i][0]);
|
let L1 =
|
||||||
|
EdwardsPoint::vartime_double_scalar_mul_basepoint(&ci, &ring_member[0], &self.ss[i][0]);
|
||||||
buf.extend_from_slice(L1.compress().as_bytes());
|
buf.extend_from_slice(L1.compress().as_bytes());
|
||||||
|
|
||||||
let temp = hash_to_point(ring[i][0]);
|
let temp = hash_to_point(ring_member[0]);
|
||||||
|
|
||||||
let R = self.ss[i][0] * temp + ci * I;
|
let R = self.ss[i][0] * temp + ci * I;
|
||||||
buf.extend_from_slice(R.compress().as_bytes());
|
buf.extend_from_slice(R.compress().as_bytes());
|
||||||
|
|
||||||
buf.extend_from_slice(ring[i][1].compress().as_bytes());
|
buf.extend_from_slice(ring_member[1].compress().as_bytes());
|
||||||
|
|
||||||
|
let L2 =
|
||||||
let L2 = EdwardsPoint::vartime_double_scalar_mul_basepoint(&ci, &ring[i][1], &self.ss[i][1]);
|
EdwardsPoint::vartime_double_scalar_mul_basepoint(&ci, &ring_member[1], &self.ss[i][1]);
|
||||||
buf.extend_from_slice(L2.compress().as_bytes());
|
buf.extend_from_slice(L2.compress().as_bytes());
|
||||||
|
|
||||||
ci = hash_to_scalar(&buf);
|
ci = hash_to_scalar(&buf);
|
||||||
|
|||||||
@@ -258,14 +258,16 @@ impl Transaction {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if prefix.version == 1 {
|
if prefix.version == 1 {
|
||||||
|
|
||||||
signatures = prefix
|
signatures = prefix
|
||||||
.inputs
|
.inputs
|
||||||
.iter()
|
.iter()
|
||||||
.filter_map(|input| match input {
|
.filter_map(|input| match input {
|
||||||
Input::ToKey { key_offsets, .. } => {
|
Input::ToKey { key_offsets, .. } => Some(
|
||||||
Some(key_offsets.iter().map(|_| Ok((read_scalar(r)?, read_scalar(r)?))).collect::<Result<_, io::Error>>())
|
key_offsets
|
||||||
}
|
.iter()
|
||||||
|
.map(|_| Ok((read_scalar(r)?, read_scalar(r)?)))
|
||||||
|
.collect::<Result<_, io::Error>>(),
|
||||||
|
),
|
||||||
_ => None,
|
_ => None,
|
||||||
})
|
})
|
||||||
.collect::<Result<_, _>>()?;
|
.collect::<Result<_, _>>()?;
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ fn amount_decryption(amount: &EcdhInfo, key: Scalar) -> u64 {
|
|||||||
// get first 64 bits (d2b in rctTypes.cpp)
|
// get first 64 bits (d2b in rctTypes.cpp)
|
||||||
let amount_significant_bytes =
|
let amount_significant_bytes =
|
||||||
amount_scalar.to_bytes()[0 .. 8].try_into().expect("Can't fail");
|
amount_scalar.to_bytes()[0 .. 8].try_into().expect("Can't fail");
|
||||||
|
|
||||||
u64::from_le_bytes(amount_significant_bytes)
|
u64::from_le_bytes(amount_significant_bytes)
|
||||||
}
|
}
|
||||||
EcdhInfo::Bulletproof { amount } => {
|
EcdhInfo::Bulletproof { amount } => {
|
||||||
|
|||||||
Reference in New Issue
Block a user