Skip to content

Commit

Permalink
Made ProjectiveCurve CanonicalSerialize and CanonicalDeserialize (ark…
Browse files Browse the repository at this point in the history
  • Loading branch information
rozbb authored Jan 31, 2021
1 parent bb83f11 commit 5c50642
Show file tree
Hide file tree
Showing 3 changed files with 98 additions and 0 deletions.
2 changes: 2 additions & 0 deletions ec/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,8 @@ pub trait ProjectiveCurve:
+ Sized
+ ToBytes
+ FromBytes
+ CanonicalSerialize
+ CanonicalDeserialize
+ Copy
+ Clone
+ Default
Expand Down
48 changes: 48 additions & 0 deletions ec/src/models/short_weierstrass_jacobian.rs
Original file line number Diff line number Diff line change
Expand Up @@ -753,6 +753,34 @@ impl<P: Parameters> CanonicalSerialize for GroupAffine<P> {
}
}

impl<P: Parameters> CanonicalSerialize for GroupProjective<P> {
#[allow(unused_qualifications)]
#[inline]
fn serialize<W: Write>(&self, writer: W) -> Result<(), SerializationError> {
let aff = GroupAffine::<P>::from(self.clone());
aff.serialize(writer)
}

#[inline]
fn serialized_size(&self) -> usize {
let aff = GroupAffine::<P>::from(self.clone());
aff.serialized_size()
}

#[allow(unused_qualifications)]
#[inline]
fn serialize_uncompressed<W: Write>(&self, writer: W) -> Result<(), SerializationError> {
let aff = GroupAffine::<P>::from(self.clone());
aff.serialize_uncompressed(writer)
}

#[inline]
fn uncompressed_size(&self) -> usize {
let aff = GroupAffine::<P>::from(self.clone());
aff.uncompressed_size()
}
}

impl<P: Parameters> CanonicalDeserialize for GroupAffine<P> {
#[allow(unused_qualifications)]
fn deserialize<R: Read>(reader: R) -> Result<Self, SerializationError> {
Expand Down Expand Up @@ -792,6 +820,26 @@ impl<P: Parameters> CanonicalDeserialize for GroupAffine<P> {
}
}

impl<P: Parameters> CanonicalDeserialize for GroupProjective<P> {
#[allow(unused_qualifications)]
fn deserialize<R: Read>(reader: R) -> Result<Self, SerializationError> {
let aff = GroupAffine::<P>::deserialize(reader)?;
Ok(aff.into())
}

#[allow(unused_qualifications)]
fn deserialize_uncompressed<R: Read>(reader: R) -> Result<Self, SerializationError> {
let aff = GroupAffine::<P>::deserialize_uncompressed(reader)?;
Ok(aff.into())
}

#[allow(unused_qualifications)]
fn deserialize_unchecked<R: Read>(reader: R) -> Result<Self, SerializationError> {
let aff = GroupAffine::<P>::deserialize_unchecked(reader)?;
Ok(aff.into())
}
}

impl<M: Parameters, ConstraintF: Field> ToConstraintField<ConstraintF> for GroupAffine<M>
where
M::BaseField: ToConstraintField<ConstraintF>,
Expand Down
48 changes: 48 additions & 0 deletions ec/src/models/twisted_edwards_extended.rs
Original file line number Diff line number Diff line change
Expand Up @@ -745,6 +745,34 @@ impl<P: Parameters> CanonicalSerialize for GroupAffine<P> {
}
}

impl<P: Parameters> CanonicalSerialize for GroupProjective<P> {
#[allow(unused_qualifications)]
#[inline]
fn serialize<W: Write>(&self, writer: W) -> Result<(), SerializationError> {
let aff = GroupAffine::<P>::from(self.clone());
aff.serialize(writer)
}

#[inline]
fn serialized_size(&self) -> usize {
let aff = GroupAffine::<P>::from(self.clone());
aff.serialized_size()
}

#[allow(unused_qualifications)]
#[inline]
fn serialize_uncompressed<W: Write>(&self, writer: W) -> Result<(), SerializationError> {
let aff = GroupAffine::<P>::from(self.clone());
aff.serialize_uncompressed(writer)
}

#[inline]
fn uncompressed_size(&self) -> usize {
let aff = GroupAffine::<P>::from(self.clone());
aff.uncompressed_size()
}
}

impl<P: Parameters> CanonicalDeserialize for GroupAffine<P> {
#[allow(unused_qualifications)]
fn deserialize<R: Read>(mut reader: R) -> Result<Self, SerializationError> {
Expand Down Expand Up @@ -782,6 +810,26 @@ impl<P: Parameters> CanonicalDeserialize for GroupAffine<P> {
}
}

impl<P: Parameters> CanonicalDeserialize for GroupProjective<P> {
#[allow(unused_qualifications)]
fn deserialize<R: Read>(reader: R) -> Result<Self, SerializationError> {
let aff = GroupAffine::<P>::deserialize(reader)?;
Ok(aff.into())
}

#[allow(unused_qualifications)]
fn deserialize_uncompressed<R: Read>(reader: R) -> Result<Self, SerializationError> {
let aff = GroupAffine::<P>::deserialize_uncompressed(reader)?;
Ok(aff.into())
}

#[allow(unused_qualifications)]
fn deserialize_unchecked<R: Read>(reader: R) -> Result<Self, SerializationError> {
let aff = GroupAffine::<P>::deserialize_unchecked(reader)?;
Ok(aff.into())
}
}

impl<M: Parameters, ConstraintF: Field> ToConstraintField<ConstraintF> for GroupAffine<M>
where
M::BaseField: ToConstraintField<ConstraintF>,
Expand Down

0 comments on commit 5c50642

Please sign in to comment.