From: Mark Wooding Date: Tue, 15 Oct 2019 11:09:44 +0000 (+0100) Subject: ec.c (ecpt_pyrichcompare): Fix point comparisons. X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb-python/commitdiff_plain/61a549fb3344b390cc10e99191617757b3f38ecc ec.c (ecpt_pyrichcompare): Fix point comparisons. Previously we'd just reject comparisons of points with different curves. Instead, support comparing curveless points with curvy ones by just comparing the points coordinatewise. Unfortunately, to make equality be transitive, this means permitting comparisons between points on different curves, which is unpleasant. --- diff --git a/ec.c b/ec.c index 1bf24cf..cfe785a 100644 --- a/ec.c +++ b/ec.c @@ -206,15 +206,13 @@ static long ecpt_pyhash(PyObject *me) static PyObject *ecpt_pyrichcompare(PyObject *x, PyObject *y, int op) { - ec_curve *c; - PyObject *cobj; ec p = EC_INIT, q = EC_INIT; int b; PyObject *rc = 0; - if (ecbinop(x, y, &c, &cobj, &p, &q)) RETURN_NOTIMPL; - EC_OUT(c, &p, &p); - EC_OUT(c, &q, &q); + if (!ECPT_PYCHECK(y)) RETURN_NOTIMPL; + getecptout(&p, x); + getecptout(&q, y); switch (op) { case Py_EQ: b = EC_EQ(&p, &q); break; case Py_NE: b = !EC_EQ(&p, &q); break;