Skip to content

Commit 32b13e9

Browse files
authored
Merge f8bdbf1 into 62404d7
2 parents 62404d7 + f8bdbf1 commit 32b13e9

2 files changed

Lines changed: 12 additions & 19 deletions

File tree

noir_stdlib/src/embedded_curve_ops.nr

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -112,17 +112,11 @@ pub fn multi_scalar_mul<let N: u32>(
112112
}
113113

114114
#[foreign(multi_scalar_mul)]
115-
fn multi_scalar_mul_array_return<let N: u32>(
115+
pub(crate) fn multi_scalar_mul_array_return<let N: u32>(
116116
points: [EmbeddedCurvePoint; N],
117117
scalars: [EmbeddedCurveScalar; N],
118118
) -> [Field; 3] {}
119119

120-
#[foreign(multi_scalar_mul)]
121-
pub(crate) fn multi_scalar_mul_slice(
122-
points: [EmbeddedCurvePoint],
123-
scalars: [EmbeddedCurveScalar],
124-
) -> [Field; 3] {}
125-
126120
// docs:start:fixed_base_scalar_mul
127121
pub fn fixed_base_scalar_mul(scalar: EmbeddedCurveScalar) -> EmbeddedCurvePoint
128122
// docs:end:fixed_base_scalar_mul

noir_stdlib/src/hash/mod.nr

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,8 @@ pub mod sha512;
77

88
use crate::default::Default;
99
use crate::uint128::U128;
10-
use crate::collections::vec::Vec;
1110
use crate::embedded_curve_ops::{
12-
EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_slice,
11+
EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,
1312
};
1413
use crate::meta::derive_via;
1514

@@ -57,22 +56,22 @@ pub fn pedersen_hash<let N: u32>(input: [Field; N]) -> Field
5756

5857
#[no_predicates]
5958
pub fn pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {
60-
let mut scalars: Vec<EmbeddedCurveScalar> =
61-
Vec::from_slice([EmbeddedCurveScalar { lo: 0, hi: 0 }; N].as_slice()); //Vec::new();
62-
for i in 0..N {
63-
scalars.set(i, from_field_unsafe(input[i]));
64-
}
65-
scalars.push(EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field });
59+
let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];
60+
let mut generators: [EmbeddedCurvePoint; N + 1] =
61+
[EmbeddedCurvePoint::point_at_infinity(); N + 1];
6662
let domain_generators: [EmbeddedCurvePoint; N] =
6763
derive_generators("DEFAULT_DOMAIN_SEPARATOR".as_bytes(), separator);
68-
let mut vec_generators = Vec::new();
64+
6965
for i in 0..N {
70-
vec_generators.push(domain_generators[i]);
66+
scalars[i] = from_field_unsafe(input[i]);
67+
generators[i] = domain_generators[i];
7168
}
69+
scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };
70+
7271
let length_generator: [EmbeddedCurvePoint; 1] =
7372
derive_generators("pedersen_hash_length".as_bytes(), 0);
74-
vec_generators.push(length_generator[0]);
75-
multi_scalar_mul_slice(vec_generators.slice, scalars.slice)[0]
73+
generators[N] = length_generator[0];
74+
multi_scalar_mul_array_return(generators, scalars)[0]
7675
}
7776

7877
#[field(bn254)]

0 commit comments

Comments
 (0)