ec zz = EC_INIT;
if (ECPT_PYCHECK(x)) { PyObject *t; t = x; x = y; y = t; }
- if (!ECPT_PYCHECK(y) || (xx = tomp(x)) == 0) RETURN_NOTIMPL;
+ if (!ECPT_PYCHECK(y)) RETURN_NOTIMPL;
+ if (FE_PYCHECK(x) && FE_F(x)->ops->ty == FTY_PRIME)
+ xx = F_OUT(FE_F(x), MP_NEW, FE_X(x));
+ else if ((xx = implicitmp(x)) == 0)
+ RETURN_NOTIMPL;
ec_imul(ECPT_C(y), &zz, ECPT_P(y), xx);
MP_DROP(xx);
return (ecpt_pywrap(ECPT_COBJ(y), &zz));
return (rc);
}
+#ifdef PY2
static PyObject *ecpt_pylong(PyObject *me)
{
ec p = EC_INIT;
EC_DESTROY(&p);
return (rc);
}
+#endif
static PyObject *ecpt_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)
{
0, /* @nb_add@ */
0, /* @nb_subtract@ */
0, /* @nb_multiply@ */
+#ifdef PY2
0, /* @nb_divide@ */
+#endif
0, /* @nb_remainder@ */
0, /* @nb_divmod@ */
0, /* @nb_power@ */
0, /* @nb_and@ */
0, /* @nb_xor@ */
0, /* @nb_or@ */
+#ifdef PY2
0, /* @nb_coerce@ */
+#endif
ecpt_pyint, /* @nb_int@ */
- ecpt_pylong, /* @nb_long@ */
+ PY23(ecpt_pylong, 0), /* @nb_long@ */
0, /* @nb_float@ */
+#ifdef PY2
0, /* @nb_oct@ */
0, /* @nb_hex@ */
+#endif
0, /* @nb_inplace_add@ */
0, /* @nb_inplace_subtract@ */
0, /* @nb_inplace_multiply@ */
+#ifdef PY2
0, /* @nb_inplace_divide@ */
+#endif
0, /* @nb_inplace_remainder@ */
0, /* @nb_inplace_power@ */
0, /* @nb_inplace_lshift@ */
static const PyMemberDef ecpt_pymembers[] = {
#define MEMBERSTRUCT ecpt_pyobj
- MEMRNM(curve, T_OBJECT, ob_type, READONLY,
+ MEMRNM(curve, T_OBJECT, PY23(ob_type, ob_base.ob_type), READONLY,
"P.curve -> elliptic curve containing P")
#undef MEMBERSTRUCT
{ 0 }
ecpt_pyadd, /* @nb_add@ */
ecpt_pysub, /* @nb_subtract@ */
ecpt_pymul, /* @nb_multiply@ */
+#ifdef PY2
0, /* @nb_divide@ */
+#endif
0, /* @nb_remainder@ */
0, /* @nb_divmod@ */
0, /* @nb_power@ */
0, /* @nb_and@ */
0, /* @nb_xor@ */
0, /* @nb_or@ */
+#ifdef PY2
0, /* @nb_coerce@ */
+#endif
0, /* @nb_int@ */
0, /* @nb_long@ */
0, /* @nb_float@ */
+#ifdef PY2
0, /* @nb_oct@ */
0, /* @nb_hex@ */
+#endif
0, /* @nb_inplace_add@ */
0, /* @nb_inplace_subtract@ */
0, /* @tp_traverse@ */
0, /* @tp_clear@ */
- eccurve_pyrichcompare, /* @tp_richcompare@ */
+ 0, /* @tp_richcompare@ */
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
0, /* @tp_traverse@ */
0, /* @tp_clear@ */
- eccurve_pyrichcompare, /* @tp_richcompare@ */
+ 0, /* @tp_richcompare@ */
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
0, /* @tp_traverse@ */
0, /* @tp_clear@ */
- eccurve_pyrichcompare, /* @tp_richcompare@ */
+ 0, /* @tp_richcompare@ */
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
0, /* @tp_traverse@ */
0, /* @tp_clear@ */
- eccurve_pyrichcompare, /* @tp_richcompare@ */
+ 0, /* @tp_richcompare@ */
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */