From 35b54cd60dc5d750cf08fe82d2a9cf5802da22c5 Mon Sep 17 00:00:00 2001 From: Timofey Luin Date: Fri, 10 May 2024 15:40:42 +0200 Subject: [PATCH] add missing num_is_not_zero check --- halo2-ecc/src/ecc/hash_to_curve.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/halo2-ecc/src/ecc/hash_to_curve.rs b/halo2-ecc/src/ecc/hash_to_curve.rs index 998c465e..82fab42d 100644 --- a/halo2-ecc/src/ecc/hash_to_curve.rs +++ b/halo2-ecc/src/ecc/hash_to_curve.rs @@ -314,6 +314,8 @@ where // Implements [Appendix F.2.1 of draft-irtf-cfrg-hash-to-curve-16][sqrt_ration] // + // Assumption: `num` != 0 + // // [sqrt_ration]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#appendix-F.2.1 fn sqrt_ratio( &self, @@ -325,6 +327,9 @@ where let num_v = field_chip.get_assigned_value(&num.clone().into()); let div_v = field_chip.get_assigned_value(&div.clone().into()); + let num_is_zero = field_chip.is_zero(ctx, num.clone()); + field_chip.gate().assert_is_const(ctx, &num_is_zero, &F::ZERO); + let (is_square, y) = FC::FieldType::sqrt_ratio(&num_v, &div_v); let is_square = ctx.load_witness(F::from(is_square.unwrap_u8() as u64));