/* -*-c-*-
*
- * $Id$
- *
* Elliptic curves
*
* (c) 2004 Straylight/Edgeware
static long ecpt_pyhash(PyObject *me)
{
- long i;
+ uint32 h;
+ buf b;
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));
- i = 0xe0fdd039; /* random perturbance */
- if (p.x) i ^= mp_tolong(p.x);
- if (p.y) i ^= mp_tolong(p.y);
- if (i == -1) i = -2;
+ ec_putraw(ECPT_C(me), &b, &p);
EC_DESTROY(&p);
- return (i);
+ xfree(q);
+ h = unihash_hash(&unihash_global, h, BBASE(&b), BLEN(&b));
+ return (h % LONG_MAX);
}
static PyObject *ecpt_pyrichcompare(PyObject *x, PyObject *y, int op)
static PyTypeObject ecpt_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
- "catacomb.ECPt", /* @tp_name@ */
+ "ECPt", /* @tp_name@ */
sizeof(ecpt_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
static PyTypeObject ecptcurve_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
- "catacomb.ECPtCurve", /* @tp_name@ */
+ "ECPtCurve", /* @tp_name@ */
sizeof(ecpt_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
static PyTypeObject eccurve_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
- "catacomb.ECCurve", /* @tp_name@ */
+ "ECCurve", /* @tp_name@ */
sizeof(eccurve_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
static PyTypeObject ecprimecurve_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
- "catacomb.ECPrimeCurve", /* @tp_name@ */
+ "ECPrimeCurve", /* @tp_name@ */
sizeof(eccurve_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
static PyTypeObject ecprimeprojcurve_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
- "catacomb.ECPrimeProjCurve", /* @tp_name@ */
+ "ECPrimeProjCurve", /* @tp_name@ */
sizeof(eccurve_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
static PyTypeObject ecbincurve_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
- "catacomb.ECBinCurve", /* @tp_name@ */
+ "ECBinCurve", /* @tp_name@ */
sizeof(eccurve_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
static PyTypeObject ecbinprojcurve_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
- "catacomb.ECBinProjCurve", /* @tp_name@ */
+ "ECBinProjCurve", /* @tp_name@ */
sizeof(eccurve_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
static PyTypeObject ecinfo_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
- "catacomb.ECInfo", /* @tp_name@ */
+ "ECInfo", /* @tp_name@ */
sizeof(ecinfo_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
}
c = PyInt_FromLong(i);
found:
- PyDict_SetItemString(d, (/*unconst*/ char *)ectab[i].name, c);
+ PyDict_SetItemString(d, (/*unconst*/ char *)p, c);
Py_DECREF(c);
}
ncurves = i;