Browse Source

Allow CS being none for into_edwards (#15)

master
Weikeng Chen 4 years ago
committed by GitHub
parent
commit
18824c0c83
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 19 additions and 8 deletions
  1. +19
    -8
      src/groups/curves/twisted_edwards/mod.rs

+ 19
- 8
src/groups/curves/twisted_edwards/mod.rs

@ -112,15 +112,26 @@ mod montgomery_affine_impl {
#[tracing::instrument(target = "r1cs")]
pub fn into_edwards(&self) -> Result<AffineVar<P, F>, SynthesisError> {
let cs = self.cs();
let mode = if cs.is_none() {
AllocationMode::Constant
} else {
AllocationMode::Witness
};
// Compute u = x / y
let u = F::new_witness(ark_relations::ns!(cs, "u"), || {
let y_inv = self
.y
.value()?
.inverse()
.ok_or(SynthesisError::DivisionByZero)?;
Ok(self.x.value()? * &y_inv)
})?;
let u = F::new_variable(
ark_relations::ns!(cs, "u"),
|| {
let y_inv = self
.y
.value()?
.inverse()
.ok_or(SynthesisError::DivisionByZero)?;
Ok(self.x.value()? * &y_inv)
},
mode,
)?;
u.mul_equals(&self.y, &self.x)?;

Loading…
Cancel
Save