};
static PyTypeObject keysz_pytype_skel = {
- PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */
+ PyObject_HEAD_INIT(0) 0, /* Header */
"catacomb.KeySZ", /* @tp_name@ */
sizeof(keysz_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
};
static PyTypeObject keyszany_pytype_skel = {
- PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */
+ PyObject_HEAD_INIT(0) 0, /* Header */
"catacomb.KeySZAny", /* @tp_name@ */
sizeof(keysz_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
};
static PyTypeObject keyszrange_pytype_skel = {
- PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */
+ PyObject_HEAD_INIT(0) 0, /* Header */
"catacomb.KeySZRange", /* @tp_name@ */
sizeof(keyszrange_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
};
static PyTypeObject keyszset_pytype_skel = {
- PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */
+ PyObject_HEAD_INIT(0) 0, /* Header */
"catacomb.KeySZSet", /* @tp_name@ */
sizeof(keyszset_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
};
static PyTypeObject gccipher_pytype_skel = {
- PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */
+ PyObject_HEAD_INIT(0) 0, /* Header */
"catacomb.GCCipher", /* @tp_name@ */
sizeof(gccipher_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
};
static PyTypeObject gcipher_pytype_skel = {
- PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */
+ PyObject_HEAD_INIT(0) 0, /* Header */
"catacomb.GCipher", /* @tp_name@ */
sizeof(gcipher_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
{ 0 }
};
+#define GHMETH_HASHU_(n, W, w) \
+ static PyObject *ghmeth_hashu##w(PyObject *me, PyObject *arg) \
+ { \
+ uint##n x; \
+ if (!PyArg_ParseTuple(arg, "O&:hashu" #w, convu##n, &x)) goto end; \
+ GH_HASHU##W(GHASH_H(me), x); \
+ RETURN_ME; \
+ end: \
+ return (0); \
+ }
+DOUINTCONV(GHMETH_HASHU_)
+
+#define GHMETH_HASHBUF_(n, W, w) \
+ static PyObject *ghmeth_hashbuf##w(PyObject *me, PyObject *arg) \
+ { \
+ char *p; \
+ int sz; \
+ if (!PyArg_ParseTuple(arg, "s#:hashbuf" #w, &p, &sz)) goto end; \
+ if (sz > MASK##n) TYERR("string too long"); \
+ GH_HASHBUF##W(GHASH_H(me), p, sz); \
+ RETURN_ME; \
+ end: \
+ return (0); \
+ }
+DOUINTCONV(GHMETH_HASHBUF_)
+
+static PyObject *ghmeth_hashstrz(PyObject *me, PyObject *arg)
+{
+ char *p;
+ if (!PyArg_ParseTuple(arg, "s:hashstrz", &p)) return (0);
+ GH_HASHSTRZ(GHASH_H(me), p);
+ RETURN_ME;
+}
+
static PyMethodDef ghash_pymethods[] = {
#define METHNAME(name) ghmeth_##name
METH (hash, "H.hash(M)")
+#define METHU_(n, W, w) METH(hashu##w, "H.hashu" #w "(WORD)")
+ DOUINTCONV(METHU_)
+#define METHBUF_(n, W, w) METH(hashbuf##w, "H.hashbuf" #w "(BYTES)")
+ DOUINTCONV(METHBUF_)
+ METH (hashstrz, "H.hashstrz(STRING)")
METH (done, "H.done() -> HASH")
#undef METHNAME
{ 0 }
};
static PyTypeObject gchash_pytype_skel = {
- PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */
+ PyObject_HEAD_INIT(0) 0, /* Header */
"catacomb.GCHash", /* @tp_name@ */
sizeof(gchash_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
};
static PyTypeObject ghash_pytype_skel = {
- PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */
+ PyObject_HEAD_INIT(0) 0, /* Header */
"catacomb.GHash", /* @tp_name@ */
sizeof(ghash_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
};
static PyTypeObject gcmac_pytype_skel = {
- PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */
+ PyObject_HEAD_INIT(0) 0, /* Header */
"catacomb.GCMAC", /* @tp_name@ */
sizeof(gchash_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
};
static PyTypeObject gmac_pytype_skel = {
- PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */
+ PyObject_HEAD_INIT(0) 0, /* Header */
"catacomb.GMAC", /* @tp_name@ */
sizeof(gmac_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
};
static PyTypeObject gmhash_pytype_skel = {
- PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */
+ PyObject_HEAD_INIT(0) 0, /* Header */
"catacomb.GMACHash", /* @tp_name@ */
sizeof(ghash_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */