mirror of
https://github.com/arnaucube/sonobe.git
synced 2026-01-08 15:01:30 +01:00
Fix the incorrect NonNativeAffineVar::inputize implementation (#89)
* Fix the incorrect `NonNativeAffineVar::inputize` implementation * Fmt and clippy
This commit is contained in:
@@ -1,5 +1,4 @@
|
|||||||
use ark_ec::{AffineRepr, CurveGroup};
|
use ark_ec::{AffineRepr, CurveGroup};
|
||||||
use ark_ff::PrimeField;
|
|
||||||
use ark_r1cs_std::{
|
use ark_r1cs_std::{
|
||||||
alloc::{AllocVar, AllocationMode},
|
alloc::{AllocVar, AllocationMode},
|
||||||
fields::fp::FpVar,
|
fields::fp::FpVar,
|
||||||
@@ -95,20 +94,14 @@ where
|
|||||||
pub fn inputize(p: C) -> Result<(Vec<C::ScalarField>, Vec<C::ScalarField>), SynthesisError> {
|
pub fn inputize(p: C) -> Result<(Vec<C::ScalarField>, Vec<C::ScalarField>), SynthesisError> {
|
||||||
let affine = p.into_affine();
|
let affine = p.into_affine();
|
||||||
if affine.is_zero() {
|
if affine.is_zero() {
|
||||||
let x = NonNativeUintVar::inputize(
|
let x = NonNativeUintVar::inputize(C::BaseField::zero());
|
||||||
&(C::ScalarField::zero()).into(),
|
let y = NonNativeUintVar::inputize(C::BaseField::zero());
|
||||||
C::ScalarField::MODULUS_BIT_SIZE as usize,
|
|
||||||
);
|
|
||||||
let y = NonNativeUintVar::inputize(
|
|
||||||
&(C::ScalarField::zero()).into(),
|
|
||||||
C::ScalarField::MODULUS_BIT_SIZE as usize,
|
|
||||||
);
|
|
||||||
return Ok((x, y));
|
return Ok((x, y));
|
||||||
}
|
}
|
||||||
|
|
||||||
let (x, y) = affine.xy().unwrap();
|
let (x, y) = affine.xy().unwrap();
|
||||||
let x = NonNativeUintVar::inputize(&(*x).into(), C::ScalarField::MODULUS_BIT_SIZE as usize);
|
let x = NonNativeUintVar::inputize(*x);
|
||||||
let y = NonNativeUintVar::inputize(&(*y).into(), C::ScalarField::MODULUS_BIT_SIZE as usize);
|
let y = NonNativeUintVar::inputize(*y);
|
||||||
Ok((x, y))
|
Ok((x, y))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -256,10 +256,9 @@ impl<F: PrimeField, G: PrimeField> AllocVar<G, F> for NonNativeUintVar<F> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<F: PrimeField> NonNativeUintVar<F> {
|
impl<F: PrimeField> NonNativeUintVar<F> {
|
||||||
pub fn inputize(x: &BigUint, l: usize) -> Vec<F> {
|
pub fn inputize<T: PrimeField>(x: T) -> Vec<F> {
|
||||||
(0..l)
|
x.into_bigint()
|
||||||
.map(|i| x.bit(i as u64))
|
.to_bits_le()
|
||||||
.collect::<Vec<_>>()
|
|
||||||
.chunks(Self::bits_per_limb())
|
.chunks(Self::bits_per_limb())
|
||||||
.map(|chunk| F::from_bigint(F::BigInt::from_bits_le(chunk)).unwrap())
|
.map(|chunk| F::from_bigint(F::BigInt::from_bits_le(chunk)).unwrap())
|
||||||
.collect()
|
.collect()
|
||||||
|
|||||||
Reference in New Issue
Block a user