#include <longintrepr.h>
#include <structmember.h>
+#undef ULLONG_MAX
+#undef ULONG_LONG_MAX
+
#include <mLib/darray.h>
#include <mLib/dstr.h>
#include <mLib/macros.h>
+#include <mLib/quis.h>
#include <catacomb/buf.h>
#include <catacomb/dsarand.h>
#include <catacomb/sslprf.h>
#include <catacomb/tlsprf.h>
+#include <catacomb/blkc.h>
#include <catacomb/gcipher.h>
#include <catacomb/ghash.h>
#include <catacomb/passphrase.h>
#include <catacomb/pixie.h>
+#include <catacomb/share.h>
+#include <catacomb/gfshare.h>
+
/*----- Utility macros ----------------------------------------------------*/
#define RETURN_OBJ(obj) do { Py_INCREF(obj); return (obj); } while (0)
#define ZDIVERR(str) EXCERR(PyExc_ZeroDivisionError, str)
#define SYNERR(str) EXCERR(PyExc_SyntaxError, str)
#define SYSERR(str) EXCERR(PyExc_SystemError, str)
+#define INDEXERR(idx) do { \
+ PyErr_SetObject(PyExc_KeyError, idx); \
+ goto end; \
+} while (0)
#define OSERR(name) do { \
PyErr_SetFromErrnoWithFilename(PyExc_OSError, name); \
goto end; \
PyModule_AddObject(mod, name, _o); \
} while (0)
+#define INSEXC(name, var, base, meth) \
+ INSERT(name, var = mkexc(mod, base, name, meth))
+
#define METH(func, doc) \
{ #func, METHNAME(func), METH_VARARGS, doc },
#define KWMETH(func, doc) \
#define MEMBER(name, ty, f, doc) \
{ #name, ty, offsetof(MEMBERSTRUCT, name), f, doc },
-#define MODULES(DO) \
- DO(bytestring) \
- DO(rand) DO(algorithms) DO(pubkey) DO(pgen) \
- DO(mp) DO(field) DO(ec) DO(group) \
- DO(passphrase)
+#define MODULES(_) \
+ _(bytestring) _(buffer) \
+ _(rand) _(algorithms) _(pubkey) _(pgen) \
+ _(mp) _(field) _(ec) _(group) \
+ _(passphrase) _(share) _(key)
#define DOMODINIT(m) m##_pyinit();
#define DOMODINSERT(m) m##_pyinsert(mod);
#define INIT_MODULES do { MODULES(DOMODINIT) } while (0)
typedef struct fe_pyobj {
PyObject_HEAD
field *f;
- PyObject *fobj; /* to keep it alive */
mp *x;
} fe_pyobj;
extern int toecpt(ec_curve *, ec *, PyObject *);
extern int getecpt(ec_curve *, ec *, PyObject *);
extern void getecptout(ec *, PyObject *);
-extern int convec(PyObject *, void *);
+extern int convecpt(PyObject *, void *);
typedef struct eccurve_pyobj {
PyHeapTypeObject ty;
extern PyObject *gmac_pywrap(PyObject *, gmac *, unsigned);
extern int convgmac(PyObject *, void *);
-/*----- Public key crypto -------------------------------------------------*/
-
/*----- Key generation ----------------------------------------------------*/
typedef struct pfilt_pyobj {
void (*drop)(void *));
extern int convulong(PyObject *, void *);
-extern int convu32(PyObject *, void *);
+#define DECL_CONVU_(n) extern int convu##n(PyObject *, void *);
+DOUINTSZ(DECL_CONVU_)
extern int convmpw(PyObject *, void *);
extern int convuint(PyObject *, void *);
extern int convszt(PyObject *, void *);
extern int convbool(PyObject *, void *);
extern PyObject *abstract_pynew(PyTypeObject *, PyObject *, PyObject *);
extern PyObject *getbool(int);
-extern PyObject *getu32(uint32);
+#define DECL_GETU_(n) extern PyObject *getu##n(uint##n);
+DOUINTSZ(DECL_GETU_)
+extern PyObject * mkexc(PyObject *, PyObject *, const char *, PyMethodDef *);
extern void *newtype(PyTypeObject *, const PyTypeObject *, const char *);
extern PyTypeObject *inittype(PyTypeObject *);
extern void addmethods(const PyMethodDef *);