chiark
/
gitweb
/
~mdw
/
catacomb-python
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ec.c (ecpt_pyhash): Fix hashing.
[catacomb-python]
/
ec.c
diff --git
a/ec.c
b/ec.c
index 4ee4d05ea4259e1d06c961ac91b9bcd8d22ce3c0..1bf24cf4733ac498d67568646c93ceec66ae6ad4 100644
(file)
--- a/
ec.c
+++ b/
ec.c
@@
-195,19
+195,13
@@
static PyObject *ecpt_pymul(PyObject *x, PyObject *y)
static long ecpt_pyhash(PyObject *me)
{
uint32 h;
static long ecpt_pyhash(PyObject *me)
{
uint32 h;
- buf b;
ec p = EC_INIT;
ec p = EC_INIT;
- size_t sz = 2*ECPT_C(me)->f->noctets + 1;
- octet *q = xmalloc(sz);
- h = 0xe0fdd039 + ECPT_C(me)->f->ops->ty;
- buf_init(&b, q, sz);
- EC_OUT(ECPT_C(me), &p, ECPT_P(me));
- ec_putraw(ECPT_C(me), &b, &p);
+ getecptout(&p, me);
+ if (EC_ATINF(&p)) h = 0x81d81a94;
+ else h = 0xe0fdd039 ^ (2*mphash(p.x)) ^ (3*mphash(p.y));
EC_DESTROY(&p);
EC_DESTROY(&p);
- h = unihash_hash(&unihash_global, h, BBASE(&b), BLEN(&b));
- xfree(q);
- return (h % LONG_MAX);
+ return (h%LONG_MAX);
}
static PyObject *ecpt_pyrichcompare(PyObject *x, PyObject *y, int op)
}
static PyObject *ecpt_pyrichcompare(PyObject *x, PyObject *y, int op)