Allow CS being none for into_edwards (#15)

This commit is contained in:
Weikeng Chen
2020-11-16 00:11:35 -08:00
committed by GitHub
parent f4691621ee
commit 18824c0c83

View File

@@ -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)?;