Skip to content

Commit d03a2fd

Browse files
committed
ensure wires len to N_BITS
1 parent 0834f30 commit d03a2fd

File tree

8 files changed

+55
-31
lines changed

8 files changed

+55
-31
lines changed

g16ckt/src/gadgets/bn254/fq.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,13 @@ impl WiresObject for Fq {
4747

4848
impl FromWires for Fq {
4949
fn from_wires(wires: &[WireId]) -> Option<Self> {
50-
Some(Self(crate::gadgets::bigint::BigIntWires::from_bits(
51-
wires.iter().copied(),
52-
)))
50+
if wires.len() == Fq::N_BITS {
51+
Some(Self(crate::gadgets::bigint::BigIntWires::from_bits(
52+
wires.iter().copied(),
53+
)))
54+
} else {
55+
None
56+
}
5357
}
5458
}
5559

g16ckt/src/gadgets/bn254/fq12.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ impl WiresObject for Fq12 {
3535

3636
impl FromWires for Fq12 {
3737
fn from_wires(wires: &[WireId]) -> Option<Self> {
38-
if wires.len() >= 1524 {
38+
if wires.len() == Fq12::N_BITS {
3939
// 2 * 3 * 2 * 254 = 3048/2 = 1524 wires per Fq6
4040
let mid = wires.len() / 2;
4141
let fq6_1 = Fq6::from_wires(&wires[..mid])?;

g16ckt/src/gadgets/bn254/fq2.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ impl WiresObject for Fq2 {
4848

4949
impl crate::circuit::FromWires for Fq2 {
5050
fn from_wires(wires: &[WireId]) -> Option<Self> {
51-
if wires.len() >= 508 {
51+
if wires.len() == Fq2::N_BITS {
5252
// 2 * 254 bits
5353
let (fq1_wires, fq2_wires) = wires.split_at(254);
5454
let fq1 = Fq::from_wires(fq1_wires)?;

g16ckt/src/gadgets/bn254/fq6.rs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,17 @@ impl WiresObject for Fq6 {
3535

3636
impl FromWires for Fq6 {
3737
fn from_wires(wires: &[WireId]) -> Option<Self> {
38-
let len = wires.len() / 3;
39-
let mut chunks = wires.chunks(len);
40-
Some(Self([
41-
Fq2::from_wires(chunks.next()?)?,
42-
Fq2::from_wires(chunks.next()?)?,
43-
Fq2::from_wires(chunks.next()?)?,
44-
]))
38+
if wires.len() == Fq6::N_BITS {
39+
let len = wires.len() / 3;
40+
let mut chunks = wires.chunks(len);
41+
Some(Self([
42+
Fq2::from_wires(chunks.next()?)?,
43+
Fq2::from_wires(chunks.next()?)?,
44+
Fq2::from_wires(chunks.next()?)?,
45+
]))
46+
} else {
47+
None
48+
}
4549
}
4650
}
4751

g16ckt/src/gadgets/bn254/fr.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,13 @@ impl WiresObject for Fr {
5555

5656
impl crate::circuit::FromWires for Fr {
5757
fn from_wires(wires: &[WireId]) -> Option<Self> {
58-
Some(Self(crate::gadgets::bigint::BigIntWires::from_bits(
59-
wires.iter().copied(),
60-
)))
58+
if wires.len() == Fr::N_BITS {
59+
Some(Self(crate::gadgets::bigint::BigIntWires::from_bits(
60+
wires.iter().copied(),
61+
)))
62+
} else {
63+
None
64+
}
6165
}
6266
}
6367

g16ckt/src/gadgets/bn254/g1.rs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,17 @@ impl WiresObject for G1Projective {
3838

3939
impl FromWires for G1Projective {
4040
fn from_wires(wires: &[WireId]) -> Option<Self> {
41-
let len = wires.len() / 3;
42-
let mut chunks = wires.chunks(len);
43-
Some(Self {
44-
x: Fq::from_wires(chunks.next()?)?,
45-
y: Fq::from_wires(chunks.next()?)?,
46-
z: Fq::from_wires(chunks.next()?)?,
47-
})
41+
if wires.len() == G1Projective::N_BITS {
42+
let len = wires.len() / 3;
43+
let mut chunks = wires.chunks(len);
44+
Some(Self {
45+
x: Fq::from_wires(chunks.next()?)?,
46+
y: Fq::from_wires(chunks.next()?)?,
47+
z: Fq::from_wires(chunks.next()?)?,
48+
})
49+
} else {
50+
None
51+
}
4852
}
4953
}
5054

g16ckt/src/gadgets/bn254/g2.rs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,17 @@ impl WiresObject for G2Projective {
4141

4242
impl FromWires for G2Projective {
4343
fn from_wires(wires: &[WireId]) -> Option<Self> {
44-
let len = wires.len() / 3;
45-
let mut chunks = wires.chunks(len);
46-
Some(Self {
47-
x: Fq2::from_wires(chunks.next()?)?,
48-
y: Fq2::from_wires(chunks.next()?)?,
49-
z: Fq2::from_wires(chunks.next()?)?,
50-
})
44+
if wires.len() == G2Projective::N_BITS {
45+
let len = wires.len() / 3;
46+
let mut chunks = wires.chunks(len);
47+
Some(Self {
48+
x: Fq2::from_wires(chunks.next()?)?,
49+
y: Fq2::from_wires(chunks.next()?)?,
50+
z: Fq2::from_wires(chunks.next()?)?,
51+
})
52+
} else {
53+
None
54+
}
5155
}
5256
}
5357

g16ckt/src/gadgets/bn254/pairing.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -336,9 +336,13 @@ fn g2_line_coeffs_add<C: CircuitContext>(
336336

337337
impl FromWires for (G2Projective, Fq6) {
338338
fn from_wires(wires: &[crate::WireId]) -> Option<Self> {
339-
let (g2, fq6) = wires.split_at(G2Projective::ARITY);
339+
if wires.len() == G2Projective::N_BITS + Fq6::N_BITS {
340+
let (g2, fq6) = wires.split_at(G2Projective::ARITY);
340341

341-
Some((G2Projective::from_wires(g2)?, Fq6::from_wires(fq6)?))
342+
Some((G2Projective::from_wires(g2)?, Fq6::from_wires(fq6)?))
343+
} else {
344+
None
345+
}
342346
}
343347
}
344348

0 commit comments

Comments
 (0)