arnaucube
arnaucube/circom-compatPublic Self-hosted repository
feat: add deserialize_field2 function
Georgios Konstantopoulos me@gakonst.com
Wed, 11 Aug 2021 23:45:50 +0300
commit

29de734540adb0a951ecdaf50e1edddfcb63f9a2

parent

cf225249ae0b99877100d6693920db3891f0a1f6

1 files changed, 9 insertions(+), 8 deletions(-)

jump to
M src/zkey.rs → src/zkey.rs

@@ -35,7 +35,7 @@ collections::HashMap,

io::{Read, Result as IoResult, Seek, SeekFrom}, }; -use ark_bn254::{Bn254, Fq, Fq2, G1Affine, G2Affine}; +use ark_bn254::{Bn254, Fq, Fq2, Fr, G1Affine, G2Affine}; use ark_groth16::{ProvingKey, VerifyingKey}; use num_traits::Zero;

@@ -264,6 +264,12 @@ // if you use ark_ff::PrimeField::from_repr it multiplies by R

Ok(Fq::new(bigint)) } +pub fn deserialize_field2<R: Read>(reader: &mut R) -> IoResult<Fq2> { + let c0 = deserialize_field(reader)?; + let c1 = deserialize_field(reader)?; + Ok(Fq2::new(c0, c1)) +} + fn deserialize_g1<R: Read>(reader: &mut R) -> IoResult<G1Affine> { let x = deserialize_field(reader)?; let y = deserialize_field(reader)?;

@@ -272,13 +278,8 @@ Ok(G1Affine::new(x, y, infinity))

} fn deserialize_g2<R: Read>(reader: &mut R) -> IoResult<G2Affine> { - let c0 = deserialize_field(reader)?; - let c1 = deserialize_field(reader)?; - let f1 = Fq2::new(c0, c1); - - let c0 = deserialize_field(reader)?; - let c1 = deserialize_field(reader)?; - let f2 = Fq2::new(c0, c1); + let f1 = deserialize_field2(reader)?; + let f2 = deserialize_field2(reader)?; let infinity = f1.is_zero() && f2.is_zero(); Ok(G2Affine::new(f1, f2, infinity)) }