diff --git a/coins/monero/src/tests/bulletproofs.rs b/coins/monero/src/tests/bulletproofs.rs new file mode 100644 index 00000000..98ae1546 --- /dev/null +++ b/coins/monero/src/tests/bulletproofs.rs @@ -0,0 +1,21 @@ +use rand::rngs::OsRng; + +use crate::{Commitment, random_scalar, ringct::bulletproofs::Bulletproofs}; + +#[test] +fn bulletproofs() { + // Create Bulletproofs for all possible output quantities + for i in 1 .. 17 { + let commitments = + (1 ..= i).map(|i| Commitment::new(random_scalar(&mut OsRng), i)).collect::>(); + + assert!(Bulletproofs::new(&mut OsRng, &commitments) + .unwrap() + .verify(&mut OsRng, &commitments.iter().map(Commitment::calculate).collect::>())); + } + + // Check it errors if we try to create too many + assert!( + Bulletproofs::new(&mut OsRng, &[Commitment::new(random_scalar(&mut OsRng), 1); 17]).is_err() + ); +} diff --git a/coins/monero/src/tests/mod.rs b/coins/monero/src/tests/mod.rs index 0ef934c8..5af30bad 100644 --- a/coins/monero/src/tests/mod.rs +++ b/coins/monero/src/tests/mod.rs @@ -1,3 +1,4 @@ mod hash_to_point; mod clsag; +mod bulletproofs; mod address;