From 61a549fb3344b390cc10e99191617757b3f38ecc Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Tue, 15 Oct 2019 12:09:44 +0100 Subject: [PATCH] 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. --- ec.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) 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; -- 2.11.0