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?hp=31e55c65069899d8f88bc1cac435dc93e40d6d42 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;