Lines Matching full:in2

299  * Compare projective points 'in1' and 'in2'. On success, 'cmp' is set to
300 * the result of the comparison (0 if in1 == in2, !0 if in1 != in2). The
303 int prj_pt_cmp(prj_pt_src_t in1, prj_pt_src_t in2, int *cmp) in prj_pt_cmp() argument
311 ret = prj_pt_check_initialized(in2); EG(ret, err); in prj_pt_cmp()
313 MUST_HAVE((in1->crv == in2->crv), ret, err); in prj_pt_cmp()
316 ret = fp_init(&X2, (in2->X).ctx); EG(ret, err); in prj_pt_cmp()
318 ret = fp_init(&Y2, (in2->Y).ctx); EG(ret, err); in prj_pt_cmp()
325 ret = fp_mul_monty(&X1, &(in1->X), &(in2->Z)); EG(ret, err); in prj_pt_cmp()
326 ret = fp_mul_monty(&X2, &(in2->X), &(in1->Z)); EG(ret, err); in prj_pt_cmp()
327 ret = fp_mul_monty(&Y1, &(in1->Y), &(in2->Z)); EG(ret, err); in prj_pt_cmp()
328 ret = fp_mul_monty(&Y2, &(in2->Y), &(in1->Z)); EG(ret, err); in prj_pt_cmp()
330 ret = fp_mul_monty(&X1, &(in1->X), &(in2->Z)); EG(ret, err); in prj_pt_cmp()
331 ret = fp_mul_monty(&X2, &(in2->X), &(in1->Z)); EG(ret, err); in prj_pt_cmp()
332 ret = fp_mul_monty(&Y1, &(in1->Y), &(in2->Z)); EG(ret, err); in prj_pt_cmp()
333 ret = fp_mul_monty(&Y2, &(in2->Y), &(in1->Z)); EG(ret, err); in prj_pt_cmp()
351 * NOTE: this internal functions assumes that upper layer have checked that in1 and in2
354 ATTRIBUTE_WARN_UNUSED_RET static inline int _prj_pt_eq_or_opp_X(prj_pt_src_t in1, prj_pt_src_t in2,… in _prj_pt_eq_or_opp_X() argument
366 ret = fp_init(&X2, (in2->X).ctx); EG(ret, err); in _prj_pt_eq_or_opp_X()
367 ret = fp_mul_monty(&X1, &(in1->X), &(in2->Z)); EG(ret, err); in _prj_pt_eq_or_opp_X()
368 ret = fp_mul_monty(&X2, &(in2->X), &(in1->Z)); EG(ret, err); in _prj_pt_eq_or_opp_X()
379 * NOTE: this internal functions assumes that upper layer have checked that in1 and in2
382 ATTRIBUTE_WARN_UNUSED_RET static inline int _prj_pt_eq_or_opp_Y(prj_pt_src_t in1, prj_pt_src_t in2,… in _prj_pt_eq_or_opp_Y() argument
394 ret = fp_init(&Y2, (in2->Y).ctx); EG(ret, err); in _prj_pt_eq_or_opp_Y()
395 ret = fp_mul_monty(&Y1, &(in1->Y), &(in2->Z)); EG(ret, err); in _prj_pt_eq_or_opp_Y()
396 ret = fp_mul_monty(&Y2, &(in2->Y), &(in1->Z)); EG(ret, err); in _prj_pt_eq_or_opp_Y()
407 * The functions tests if given projective points 'in1' and 'in2' are equal or
412 int prj_pt_eq_or_opp(prj_pt_src_t in1, prj_pt_src_t in2, int *eq_or_opp) in prj_pt_eq_or_opp() argument
417 ret = prj_pt_check_initialized(in2); EG(ret, err); in prj_pt_eq_or_opp()
418 MUST_HAVE((in1->crv == in2->crv), ret, err); in prj_pt_eq_or_opp()
421 ret = _prj_pt_eq_or_opp_X(in1, in2, &cmp); EG(ret, err); in prj_pt_eq_or_opp()
422 ret = _prj_pt_eq_or_opp_Y(in1, in2, &_eq_or_opp); in prj_pt_eq_or_opp()
730 * - in1 and in2 are initialized
731 * - in1 and in2 are on the same curve
732 * - in1/in2 and out must not be aliased
733 * - in1 and in2 must not be equal, opposite or have identical value
740 prj_pt_src_t in2) in ___prj_pt_add_monty_no_cf() argument
761 ret = fp_mul_monty(&Y1Z2, &(in1->Y), &(in2->Z)); EG(ret, err); in ___prj_pt_add_monty_no_cf()
764 ret = fp_mul_monty(&X1Z2, &(in1->X), &(in2->Z)); EG(ret, err); in ___prj_pt_add_monty_no_cf()
767 ret = fp_mul_monty(&Z1Z2, &(in1->Z), &(in2->Z)); EG(ret, err); in ___prj_pt_add_monty_no_cf()
770 ret = fp_mul_monty(&u, &(in2->Y), &(in1->Z)); EG(ret, err); in ___prj_pt_add_monty_no_cf()
777 ret = fp_mul_monty(&v, &(in2->X), &(in1->Z)); EG(ret, err); in ___prj_pt_add_monty_no_cf()
826 …RN_UNUSED_RET static int __prj_pt_add_monty_no_cf(prj_pt_t out, prj_pt_src_t in1, prj_pt_src_t in2) in __prj_pt_add_monty_no_cf() argument
831 ret = prj_pt_check_initialized(in2); EG(ret, err); in __prj_pt_add_monty_no_cf()
832 MUST_HAVE((in1->crv == in2->crv), ret, err); in __prj_pt_add_monty_no_cf()
836 /* in1 at infinity, output in2 in all cases */ in __prj_pt_add_monty_no_cf()
837 ret = prj_pt_init(out, in2->crv); EG(ret, err); in __prj_pt_add_monty_no_cf()
838 ret = prj_pt_copy(out, in2); EG(ret, err); in __prj_pt_add_monty_no_cf()
840 /* in1 not at infinity, output in2 */ in __prj_pt_add_monty_no_cf()
841 ret = prj_pt_iszero(in2, &iszero); EG(ret, err); in __prj_pt_add_monty_no_cf()
843 /* in2 at infinity, output in1 */ in __prj_pt_add_monty_no_cf()
847 /* enither in1, nor in2 at infinity */ in __prj_pt_add_monty_no_cf()
850 * The following test which guarantees in1 and in2 are not in __prj_pt_add_monty_no_cf()
856 ret = prj_pt_eq_or_opp(in1, in2, &eq_or_opp); EG(ret, err); in __prj_pt_add_monty_no_cf()
858 /* in1 and in2 are either equal or opposite */ in __prj_pt_add_monty_no_cf()
859 ret = prj_pt_cmp(in1, in2, &cmp); EG(ret, err); in __prj_pt_add_monty_no_cf()
861 /* in1 == in2 => doubling w/o cf */ in __prj_pt_add_monty_no_cf()
864 /* in1 == -in2 => output zero (point at infinity) */ in __prj_pt_add_monty_no_cf()
870 * in1 and in2 are neither 0, nor equal or in __prj_pt_add_monty_no_cf()
874 ret = ___prj_pt_add_monty_no_cf(out, in1, in2); EG(ret, err); in __prj_pt_add_monty_no_cf()
962 * - in1 and in2 are initialized
963 * - in1 and in2 are on the same curve
964 * - in1/in2 and out must not be aliased
965 * - in1 and in2 must not be an "exceptional" pair, i.e. (in1-in2) is not a point
973 prj_pt_src_t in2) in __prj_pt_add_monty_cf() argument
990 ret = fp_mul_monty(&t0, &in1->X, &in2->X); EG(ret, err); in __prj_pt_add_monty_cf()
991 ret = fp_mul_monty(&t1, &in1->Y, &in2->Y); EG(ret, err); in __prj_pt_add_monty_cf()
992 ret = fp_mul_monty(&t2, &in1->Z, &in2->Z); EG(ret, err); in __prj_pt_add_monty_cf()
994 ret = fp_add_monty(&t4, &in2->X, &in2->Y); EG(ret, err); in __prj_pt_add_monty_cf()
1000 ret = fp_add_monty(&t5, &in2->X, &in2->Z); EG(ret, err); in __prj_pt_add_monty_cf()
1006 ret = fp_add_monty(&out->X, &in2->Y, &in2->Z); EG(ret, err); in __prj_pt_add_monty_cf()
1152 * - requiring caller to check in1 and in2 parameter
1159 prj_pt_src_t in2) in _prj_pt_add_monty() argument
1162 return __prj_pt_add_monty_cf(out, in1, in2); in _prj_pt_add_monty()
1164 return __prj_pt_add_monty_no_cf(out, in1, in2); in _prj_pt_add_monty()
1172 * - in1 and in2 are initialized
1173 * - in1 and in2 are on the same curve
1180 prj_pt_src_t in2) in _prj_pt_add_monty_aliased() argument
1186 ret = _prj_pt_add_monty(&out_cpy, in1, in2); EG(ret, err); in _prj_pt_add_monty_aliased()
1197 * init checks of 'in1' and 'in2' parameters, along with the check they
1200 * 'in1' or 'in2' parameter.
1204 int prj_pt_add(prj_pt_t out, prj_pt_src_t in1, prj_pt_src_t in2) in prj_pt_add() argument
1209 ret = prj_pt_check_initialized(in2); EG(ret, err); in prj_pt_add()
1210 MUST_HAVE((in1->crv == in2->crv), ret, err); in prj_pt_add()
1212 if ((out == in1) || (out == in2)) { in prj_pt_add()
1213 ret = _prj_pt_add_monty_aliased(out, in1, in2); in prj_pt_add()
1215 ret = _prj_pt_add_monty(out, in1, in2); in prj_pt_add()