aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlloyd <[email protected]>2010-02-25 20:12:21 +0000
committerlloyd <[email protected]>2010-02-25 20:12:21 +0000
commit679a1a57a19484c4cf2720f9b415b8a8df45b209 (patch)
treeb1dd0e013998341895a56a41051f1a51fc66a523
parent0f9e25393e389d2925899df63a061df01cf3da81 (diff)
s/GFpElement/Modular_Reducer/ in get_affine_{x,y}
-rw-r--r--src/math/gfpmath/point_gfp.cpp20
1 files changed, 6 insertions, 14 deletions
diff --git a/src/math/gfpmath/point_gfp.cpp b/src/math/gfpmath/point_gfp.cpp
index febba412c..24aa8d8af 100644
--- a/src/math/gfpmath/point_gfp.cpp
+++ b/src/math/gfpmath/point_gfp.cpp
@@ -217,14 +217,10 @@ BigInt PointGFp::get_affine_x() const
if(is_zero())
throw Illegal_Transformation("cannot convert to affine");
- GFpElement point_x(curve.get_p(), coord_x);
- GFpElement point_z(curve.get_p(), coord_z);
-
- GFpElement z2 = point_z * point_z;
- z2.inverse_in_place();
- z2 *= point_x;
+ Modular_Reducer mod_p(curve.get_p());
- return z2.get_value();
+ BigInt z2 = mod_p.square(coord_z);
+ return mod_p.multiply(coord_x, inverse_mod(z2, curve.get_p()));
}
BigInt PointGFp::get_affine_y() const
@@ -232,14 +228,10 @@ BigInt PointGFp::get_affine_y() const
if(is_zero())
throw Illegal_Transformation("cannot convert to affine");
- GFpElement point_y(curve.get_p(), coord_y);
- GFpElement point_z(curve.get_p(), coord_z);
-
- GFpElement z3 = point_z * point_z * point_z;
- z3.inverse_in_place();
- z3 *= point_y;
+ Modular_Reducer mod_p(curve.get_p());
- return z3.get_value();
+ BigInt z3 = mod_p.multiply(coord_z, mod_p.square(coord_z));
+ return mod_p.multiply(coord_y, inverse_mod(z3, curve.get_p()));
}
// Is this the point at infinity?