diff --git a/src/gadgets/biguint.rs b/src/gadgets/biguint.rs index 80c72a1d..e5075f5b 100644 --- a/src/gadgets/biguint.rs +++ b/src/gadgets/biguint.rs @@ -276,4 +276,28 @@ mod tests { verify(proof, &data.verifier_only, &data.common) } + + #[test] + fn test_biguint_mul() -> Result<()> { + let x_value = BigUint::from_u128(123123123123123123123123123123123123).unwrap(); + let y_value = BigUint::from_u128(456456456456456456456456456456456456).unwrap(); + let expected_z_value = &x_value * &y_value; + + type F = CrandallField; + let config = CircuitConfig::large_config(); + let pw = PartialWitness::new(); + let mut builder = CircuitBuilder::::new(config); + + let x = builder.constant_biguint(x_value); + let y = builder.constant_biguint(y_value); + let z = builder.mul_biguint(x, y); + let expected_z = builder.constant_biguint(expected_z_value); + + builder.connect_biguint(z, expected_z); + + let data = builder.build(); + let proof = data.prove(pw).unwrap(); + + verify(proof, &data.verifier_only, &data.common) + } }