snarkvm_curves/templates/
to_field_vec.rs1use crate::{
17 templates::{
18 short_weierstrass_jacobian::{Affine as SWAffine, Projective as SWProjective},
19 twisted_edwards_extended::{Affine as TEAffine, Projective as TEProjective},
20 },
21 traits::{ProjectiveCurve, ShortWeierstrassParameters, TwistedEdwardsParameters},
22};
23use snarkvm_fields::{ConstraintFieldError, Field, ToConstraintField};
24
25impl<M: TwistedEdwardsParameters, F: Field> ToConstraintField<F> for TEAffine<M>
26where
27 M::BaseField: ToConstraintField<F>,
28{
29 #[inline]
30 fn to_field_elements(&self) -> Result<Vec<F>, ConstraintFieldError> {
31 let mut x_fe = self.x.to_field_elements()?;
32 let y_fe = self.y.to_field_elements()?;
33 x_fe.extend_from_slice(&y_fe);
34 Ok(x_fe)
35 }
36}
37
38impl<M: TwistedEdwardsParameters, F: Field> ToConstraintField<F> for TEProjective<M>
39where
40 M::BaseField: ToConstraintField<F>,
41{
42 #[inline]
43 fn to_field_elements(&self) -> Result<Vec<F>, ConstraintFieldError> {
44 let affine = self.to_affine();
45 let mut x_fe = affine.x.to_field_elements()?;
46 let y_fe = affine.y.to_field_elements()?;
47 x_fe.extend_from_slice(&y_fe);
48 Ok(x_fe)
49 }
50}
51
52impl<M: ShortWeierstrassParameters, F: Field> ToConstraintField<F> for SWAffine<M>
53where
54 M::BaseField: ToConstraintField<F>,
55{
56 #[inline]
57 fn to_field_elements(&self) -> Result<Vec<F>, ConstraintFieldError> {
58 let mut x_fe = self.x.to_field_elements()?;
59 let y_fe = self.y.to_field_elements()?;
60 let infinity_fe = self.infinity.to_field_elements()?;
61 x_fe.extend_from_slice(&y_fe);
62 x_fe.extend_from_slice(&infinity_fe);
63 Ok(x_fe)
64 }
65}
66
67impl<M: ShortWeierstrassParameters, F: Field> ToConstraintField<F> for SWProjective<M>
68where
69 M::BaseField: ToConstraintField<F>,
70{
71 #[inline]
72 fn to_field_elements(&self) -> Result<Vec<F>, ConstraintFieldError> {
73 let affine = self.to_affine();
74 let mut x_fe = affine.x.to_field_elements()?;
75 let y_fe = affine.y.to_field_elements()?;
76 x_fe.extend_from_slice(&y_fe);
77 Ok(x_fe)
78 }
79}