mirror of
https://github.com/comit-network/xmr-btc-swap.git
synced 2025-04-25 10:19:18 -04:00
Add dedicated test to clsag module
This commit is contained in:
parent
1bd8eb83d1
commit
9255cc8f68
@ -89,7 +89,7 @@ pub fn sign(
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn verify(sig: &Signature, ring: [EdwardsPoint; RING_SIZE], msg: &[u8; 32]) -> bool {
|
pub fn verify(sig: &Signature, ring: [EdwardsPoint; RING_SIZE], msg: &[u8]) -> bool {
|
||||||
let ring_concat = ring
|
let ring_concat = ring
|
||||||
.iter()
|
.iter()
|
||||||
.flat_map(|pk| pk.compress().as_bytes().to_vec())
|
.flat_map(|pk| pk.compress().as_bytes().to_vec())
|
||||||
@ -261,6 +261,7 @@ fn hash_to_scalar(elements: &[&[u8]]) -> Scalar {
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
use rand::rngs::OsRng;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn const_is_inv_eight() {
|
fn const_is_inv_eight() {
|
||||||
@ -268,4 +269,49 @@ mod tests {
|
|||||||
|
|
||||||
assert_eq!(inv_eight, INV_EIGHT);
|
assert_eq!(inv_eight, INV_EIGHT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn sign_and_verify() {
|
||||||
|
let msg_to_sign = b"hello world, monero is amazing!!";
|
||||||
|
|
||||||
|
let s_prime_a = Scalar::random(&mut OsRng);
|
||||||
|
let s_b = Scalar::random(&mut OsRng);
|
||||||
|
|
||||||
|
let pk = (s_prime_a + s_b) * ED25519_BASEPOINT_POINT;
|
||||||
|
|
||||||
|
let (r_a, R_a, R_prime_a) = {
|
||||||
|
let r_a = Scalar::random(&mut OsRng);
|
||||||
|
let R_a = r_a * ED25519_BASEPOINT_POINT;
|
||||||
|
|
||||||
|
let pk_hashed_to_point = hash_point_to_point(pk);
|
||||||
|
|
||||||
|
let R_prime_a = r_a * pk_hashed_to_point;
|
||||||
|
|
||||||
|
(r_a, R_a, R_prime_a)
|
||||||
|
};
|
||||||
|
|
||||||
|
let mut ring = [EdwardsPoint::default(); RING_SIZE];
|
||||||
|
ring[0] = pk;
|
||||||
|
|
||||||
|
ring[1..].fill_with(|| {
|
||||||
|
let x = Scalar::random(&mut OsRng);
|
||||||
|
x * ED25519_BASEPOINT_POINT
|
||||||
|
});
|
||||||
|
|
||||||
|
let mut commitment_ring = [EdwardsPoint::default(); RING_SIZE];
|
||||||
|
|
||||||
|
let real_commitment_blinding = Scalar::random(&mut OsRng);
|
||||||
|
commitment_ring[0] = real_commitment_blinding * ED25519_BASEPOINT_POINT; // + 0 * H
|
||||||
|
commitment_ring[1..].fill_with(|| {
|
||||||
|
let x = Scalar::random(&mut OsRng);
|
||||||
|
x * ED25519_BASEPOINT_POINT
|
||||||
|
});
|
||||||
|
|
||||||
|
// TODO: document
|
||||||
|
let pseudo_output_commitment = commitment_ring[0];
|
||||||
|
|
||||||
|
let signature = sign(msg_to_sign, todo!(), todo!(), todo!(), todo!(), todo!(), todo!(), todo!(), todo!(), todo!(), todo!(), todo!());
|
||||||
|
|
||||||
|
assert!(verify(&signature, todo!(), todo!()))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user