mirror of
https://github.com/serai-dex/serai.git
synced 2025-12-11 05:29: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, ...
|
||||
/// 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();
|
||||
}
|
||||
|
||||
#[allow(non_snake_case)]
|
||||
fn generate_H2() -> [DalekPoint; 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.try_into().unwrap()
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
use std::fmt::Debug;
|
||||
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::traits::Identity;
|
||||
|
||||
@@ -70,7 +70,7 @@ impl RangeSig {
|
||||
|
||||
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]));
|
||||
bbs1.push(Scalar::from_bytes_mod_order(self.asig.s1[i]));
|
||||
|
||||
@@ -85,13 +85,18 @@ impl RangeSig {
|
||||
} else {
|
||||
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);
|
||||
for i in 0..64 {
|
||||
for i in 0 .. 64 {
|
||||
let LL = EdwardsPoint::vartime_double_scalar_mul_basepoint(&bbee, &P1[i], &bbs0[i]);
|
||||
let chash = hash_to_scalar(LL.compress().as_bytes());
|
||||
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);
|
||||
|
||||
if !(eecomp == bbee) {
|
||||
false
|
||||
}
|
||||
else {
|
||||
true
|
||||
}
|
||||
eecomp == bbee
|
||||
}
|
||||
|
||||
@@ -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 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(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());
|
||||
|
||||
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;
|
||||
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 = EdwardsPoint::vartime_double_scalar_mul_basepoint(&ci, &ring[i][1], &self.ss[i][1]);
|
||||
let L2 =
|
||||
EdwardsPoint::vartime_double_scalar_mul_basepoint(&ci, &ring_member[1], &self.ss[i][1]);
|
||||
buf.extend_from_slice(L2.compress().as_bytes());
|
||||
|
||||
ci = hash_to_scalar(&buf);
|
||||
|
||||
@@ -258,14 +258,16 @@ impl Transaction {
|
||||
};
|
||||
|
||||
if prefix.version == 1 {
|
||||
|
||||
signatures = prefix
|
||||
.inputs
|
||||
.iter()
|
||||
.filter_map(|input| match input {
|
||||
Input::ToKey { key_offsets, .. } => {
|
||||
Some(key_offsets.iter().map(|_| Ok((read_scalar(r)?, read_scalar(r)?))).collect::<Result<_, io::Error>>())
|
||||
}
|
||||
Input::ToKey { key_offsets, .. } => Some(
|
||||
key_offsets
|
||||
.iter()
|
||||
.map(|_| Ok((read_scalar(r)?, read_scalar(r)?)))
|
||||
.collect::<Result<_, io::Error>>(),
|
||||
),
|
||||
_ => None,
|
||||
})
|
||||
.collect::<Result<_, _>>()?;
|
||||
|
||||
@@ -104,7 +104,7 @@ fn amount_decryption(amount: &EcdhInfo, key: Scalar) -> u64 {
|
||||
// get first 64 bits (d2b in rctTypes.cpp)
|
||||
let amount_significant_bytes =
|
||||
amount_scalar.to_bytes()[0 .. 8].try_into().expect("Can't fail");
|
||||
|
||||
|
||||
u64::from_le_bytes(amount_significant_bytes)
|
||||
}
|
||||
EcdhInfo::Bulletproof { amount } => {
|
||||
|
||||
Reference in New Issue
Block a user