Skip to content

Commit 4293300

Browse files
committed
Use hash_to_field for griffin param generation as well
1 parent 65dd659 commit 4293300

File tree

1 file changed

+9
-24
lines changed
  • crates/primitives/src/transcripts/griffin

1 file changed

+9
-24
lines changed

crates/primitives/src/transcripts/griffin/mod.rs

Lines changed: 9 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
3939
// SOFTWARE.
4040

41-
use ark_ff::{LegendreSymbol, PrimeField};
41+
use ark_ff::{LegendreSymbol, PrimeField, field_hashers::hash_to_field};
4242
use ark_r1cs_std::{
4343
GR1CSVar,
4444
alloc::AllocVar,
@@ -121,31 +121,16 @@ impl<F: PrimeField> GriffinParams<F> {
121121
}
122122

123123
fn instantiate_rc(t: usize, rounds: usize, shake: &mut Shake128Reader) -> Vec<Vec<F>> {
124-
fn field_element_from_shake<F: PrimeField>(reader: &mut impl XofReader) -> F {
125-
let mut buf = vec![0u8; F::MODULUS_BIT_SIZE.div_ceil(8) as usize];
126-
127-
loop {
128-
reader.read(&mut buf);
129-
if let Some(element) = F::from_random_bytes(&buf) {
130-
return element;
131-
}
132-
}
133-
}
134-
135124
(0..rounds - 1)
136-
.map(|_| (0..t).map(|_| field_element_from_shake(shake)).collect())
125+
.map(|_| (0..t).map(|_| hash_to_field::<_, _, 128>(shake)).collect())
137126
.collect()
138127
}
139128

140129
fn instantiate_alpha_beta(t: usize, shake: &mut Shake128Reader) -> Vec<[F; 2]> {
141-
fn field_element_from_shake_without_0<F: PrimeField>(reader: &mut impl XofReader) -> F {
142-
let mut buf = vec![0u8; F::MODULUS_BIT_SIZE.div_ceil(8) as usize];
143-
130+
fn hash_to_non_zero_field<F: PrimeField>(reader: &mut impl XofReader) -> F {
144131
loop {
145-
reader.read(&mut buf);
146-
if let Some(element) = F::from_random_bytes(&buf)
147-
&& !element.is_zero()
148-
{
132+
let element = hash_to_field::<F, _, 128>(reader);
133+
if !element.is_zero() {
149134
return element;
150135
}
151136
}
@@ -155,11 +140,11 @@ impl<F: PrimeField> GriffinParams<F> {
155140

156141
// random alpha/beta
157142
loop {
158-
let alpha = field_element_from_shake_without_0::<F>(shake);
159-
let mut beta = field_element_from_shake_without_0::<F>(shake);
143+
let alpha = hash_to_non_zero_field::<F>(shake);
144+
let mut beta = hash_to_non_zero_field::<F>(shake);
160145
// distinct
161146
while alpha == beta {
162-
beta = field_element_from_shake_without_0::<F>(shake);
147+
beta = hash_to_non_zero_field::<F>(shake);
163148
}
164149
let mut symbol = alpha;
165150
symbol.square_in_place();
@@ -181,7 +166,7 @@ impl<F: PrimeField> GriffinParams<F> {
181166
beta.mul_assign(&F::from((i * i) as u64));
182167
// distinct
183168
while alpha == beta {
184-
beta = field_element_from_shake_without_0::<F>(shake);
169+
beta = hash_to_non_zero_field::<F>(shake);
185170
}
186171

187172
#[cfg(debug_assertions)]

0 commit comments

Comments
 (0)