diff --git a/src/groups/mod.rs b/src/groups/mod.rs index 8ff08ba..4afb8fd 100644 --- a/src/groups/mod.rs +++ b/src/groups/mod.rs @@ -112,6 +112,11 @@ impl G

{ pub fn to_affine(&self) -> Option> { if self.z.is_zero() { None + } else if self.z == P::Base::one() { + Some(AffineG { + x: self.x, + y: self.y + }) } else { let zinv = self.z.inverse().unwrap(); let zinv_squared = zinv.squared(); diff --git a/tests/serialization.rs b/tests/serialization.rs index 9125df5..9377312 100644 --- a/tests/serialization.rs +++ b/tests/serialization.rs @@ -35,6 +35,7 @@ fn group_serialization_and_deserialization() { a = a * b; assert!(reserialize(a) == a); + assert!(reserialize(reserialize(a)) == a); } let mut a = G2::one(); @@ -42,6 +43,7 @@ fn group_serialization_and_deserialization() { a = a * b; assert!(reserialize(a) == a); + assert!(reserialize(reserialize(a)) == a); } }