Don't perform field inverse/squaring during affine conversion if point is already in affine.

This commit is contained in:
Sean Bowe
2016-10-14 12:03:50 -06:00
parent bf023ee215
commit 90656b0bbf
2 changed files with 7 additions and 0 deletions
+5
View File
@@ -112,6 +112,11 @@ impl<P: GroupParams> G<P> {
pub fn to_affine(&self) -> Option<AffineG<P>> {
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();
+2
View File
@@ -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);
}
}