X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb-python/blobdiff_plain/92d8797b11ec4b7c5e9b1b2e2721d2e2ec26cee8..31ff254edd8d9c6927a67838ec4418ad8ba42652:/catacomb.c diff --git a/catacomb.c b/catacomb.c index f02d39e..60dae45 100644 --- a/catacomb.c +++ b/catacomb.c @@ -30,38 +30,6 @@ /*----- Main code ---------------------------------------------------------*/ -static const struct nameval consts[] = { -#define CF(f, x) { #x, f, x } -#define C(x) { #x, (x) >= 0 ? 0 : CF_SIGNED, x } - C(FTY_PRIME), C(FTY_BINARY), - C(PGEN_PASS), C(PGEN_FAIL), C(PGEN_BEGIN), C(PGEN_TRY), C(PGEN_DONE), - C(PGEN_ABORT), - C(MPW_MAX), - C(RAND_IBITS), - C(PMODE_READ), C(PMODE_VERIFY), - C(KOPEN_READ), C(KOPEN_WRITE), C(KOPEN_NOFILE), - CF(0, KEXP_FOREVER), CF(0, KEXP_EXPIRE), - C(KF_ENCMASK), C(KENC_BINARY), C(KENC_MP), C(KENC_STRUCT), - C(KENC_ENCRYPT), C(KENC_STRING), C(KENC_EC), - C(KF_CATMASK), C(KCAT_SYMM), C(KCAT_PRIV), C(KCAT_PUB), C(KCAT_SHARE), - C(KF_NONSECRET), - C(KF_BURN), C(KF_OPT), - C(EC_XONLY), C(EC_YBIT), C(EC_LSB), C(EC_CMPR), C(EC_EXPLY), C(EC_SORT), - C(X25519_KEYSZ), C(X25519_PUBSZ), C(X25519_OUTSZ), - C(X448_KEYSZ), C(X448_PUBSZ), C(X448_OUTSZ), - C(ED25519_KEYSZ), C(ED25519_PUBSZ), C(ED25519_SIGSZ), - C(ED25519_MAXPERSOSZ), - C(ED448_KEYSZ), C(ED448_PUBSZ), C(ED448_SIGSZ), C(ED448_MAXPERSOSZ), - C(AEADF_PCHSZ), C(AEADF_PCMSZ), C(AEADF_PCTSZ), - C(AEADF_AADNDEP), C(AEADF_AADFIRST), C(AEADF_NOAAD), -#define ENTRY(tag, val, str) C(KERR_##tag), - KEY_ERRORS(ENTRY) -#undef ENTRY -#undef C -#undef CF - { 0 } -}; - PyObject *mexp_common(PyObject *me, PyObject *arg, size_t efsz, PyObject *(*id)(PyObject *), @@ -129,6 +97,19 @@ end: return (z); } +int convmpw(PyObject *o, void *pp) +{ + unsigned long u; + unsigned *p = pp; + + if (!convulong(o, &u)) goto end; + if (u > MPW_MAX) VALERR("out of range"); + *p = u; + return (1); +end: + return (0); +} + static PyObject *smallprimes(void) { PyObject *v = PyList_New(NPRIME); @@ -149,16 +130,16 @@ static PyObject *meth__ego(PyObject *me, PyObject *arg) RETURN_NONE; } -static PyMethodDef methods[] = { +static const PyMethodDef methods[] = { #define METHNAME(func) meth_##func - METH (_ego, "_ego(ARGV0)") + METH (_ego, "_ego(ARGV0)") #undef METHNAME { 0 } }; static void init_random(void) { -#if PY_MAJOR_VERSION >= 3 || (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION >= 6) +#if PY_VERSION_HEX >= 0x02060000 char *seed; uint32 r; @@ -174,13 +155,14 @@ static void init_random(void) EXPORT void init_base(void) { PyObject *mod; + + modname = PyString_FromString("catacomb"); addmethods(methods); INIT_MODULES; init_random(); mod = Py_InitModule("catacomb._base", donemethods()); INSERT_MODULES; INSERT("smallprimes", smallprimes()); - setconstants(mod, consts); } /*----- That's all, folks -------------------------------------------------*/