From e00ae0a814f58f8cf0888f1cfa3b45080bd7a36a Mon Sep 17 00:00:00 2001 From: Dmitriy Ryajov Date: Sat, 27 Jan 2024 16:19:15 -0600 Subject: [PATCH] use slice_to_point for proper conversion --- src/ffi_types.rs | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/ffi_types.rs b/src/ffi_types.rs index b72f8f8..aed5cb1 100644 --- a/src/ffi_types.rs +++ b/src/ffi_types.rs @@ -4,7 +4,6 @@ use ark_bn254::{Bn254, Fq, Fq2, Fr, G1Affine, G2Affine}; use ark_ff::{BigInteger, PrimeField}; use ark_serialize::CanonicalDeserialize; use ark_std::Zero; -use num_bigint::BigUint; // Helper for converting a PrimeField to little endian byte slice fn slice_to_point(point: &[u8; 32]) -> F { @@ -164,9 +163,9 @@ impl From<&ark_groth16::VerifyingKey> for VerifyingKey { impl From<&[Fr]> for Inputs { fn from(src: &[Fr]) -> Self { let els: Vec<[u8; 32]> = src - .iter() - .map(|point| point_to_slice(*point)) - .collect(); + .iter() + .map(|point| point_to_slice(*point)) + .collect(); let len = els.len(); Self { @@ -181,10 +180,7 @@ impl From for Vec { let els: Vec = unsafe { (&*slice_from_raw_parts(src.elms, src.len)) .iter() - .map(|point| { - let uint = BigUint::from_bytes_le(point); - Fr::from(uint) - }) + .map(|point| slice_to_point(point)) .collect() };