*.c: Use Python `METH_NOARGS' methods where applicable.
[catacomb-python] / pubkey.c
index ad3bcd4..2c906cd 100644 (file)
--- a/pubkey.c
+++ b/pubkey.c
@@ -108,11 +108,8 @@ end:
   return (rc);
 }
 
-static PyObject *dsameth_beginhash(PyObject *me, PyObject *arg)
-{
-  if (!PyArg_ParseTuple(arg, ":beginhash")) return (0);
-  return (ghash_pywrap(DSA_HASH(me), gdsa_beginhash(DSA_D(me))));
-}
+static PyObject *dsameth_beginhash(PyObject *me)
+  { return (ghash_pywrap(DSA_HASH(me), gdsa_beginhash(DSA_D(me)))); }
 
 static PyObject *dsameth_endhash(PyObject *me, PyObject *arg)
 {
@@ -188,23 +185,23 @@ end:
   return (rc);
 }
 
-static PyMethodDef dsapub_pymethods[] = {
+static const PyMethodDef dsapub_pymethods[] = {
 #define METHNAME(name) dsameth_##name
-  METH (beginhash,     "D.beginhash() -> hash object")
+  NAMETH(beginhash,    "D.beginhash() -> hash object")
   METH (endhash,       "D.endhash(H) -> BYTES")
   METH (verify,        "D.verify(MSG, (R, S)) -> true/false")
 #undef METHNAME
   { 0 }
 };
 
-static PyMethodDef dsapriv_pymethods[] = {
+static const PyMethodDef dsapriv_pymethods[] = {
 #define METHNAME(name) dsameth_##name
   KWMETH(sign,         "D.sign(MSG, [k = K]) -> R, S")
 #undef METHNAME
   { 0 }
 };
 
-static PyMemberDef dsapub_pymembers[] = {
+static const PyMemberDef dsapub_pymembers[] = {
 #define MEMBERSTRUCT dsa_pyobj
   MEMBER(G,    T_OBJECT, READONLY, "D.G -> group to work in")
   MEMBER(p,    T_OBJECT, READONLY, "D.p -> public key (group element")
@@ -214,7 +211,7 @@ static PyMemberDef dsapub_pymembers[] = {
   { 0 }
 };
 
-static PyMemberDef dsapriv_pymembers[] = {
+static const PyMemberDef dsapriv_pymembers[] = {
 #define MEMBERSTRUCT dsa_pyobj
   MEMBER(u,    T_OBJECT, READONLY, "D.u -> private key (exponent)")
 #undef MEMBERSTRUCT
@@ -254,8 +251,8 @@ static PyTypeObject dsapub_pytype_skel = {
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
-  dsapub_pymethods,                    /* @tp_methods@ */
-  dsapub_pymembers,                    /* @tp_members@ */
+  PYMETHODS(dsapub),                   /* @tp_methods@ */
+  PYMEMBERS(dsapub),                   /* @tp_members@ */
   0,                                   /* @tp_getset@ */
   0,                                   /* @tp_base@ */
   0,                                   /* @tp_dict@ */
@@ -303,8 +300,8 @@ static PyTypeObject dsapriv_pytype_skel = {
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
-  dsapriv_pymethods,                   /* @tp_methods@ */
-  dsapriv_pymembers,                   /* @tp_members@ */
+  PYMETHODS(dsapriv),                  /* @tp_methods@ */
+  PYMEMBERS(dsapriv),                  /* @tp_members@ */
   0,                                   /* @tp_getset@ */
   0,                                   /* @tp_base@ */
   0,                                   /* @tp_dict@ */
@@ -363,11 +360,8 @@ end:
   return (rc);
 }
 
-static PyObject *kcdsameth_beginhash(PyObject *me, PyObject *arg)
-{
-  if (!PyArg_ParseTuple(arg, ":beginhash")) return (0);
-  return (ghash_pywrap(DSA_HASH(me), gkcdsa_beginhash(DSA_D(me))));
-}
+static PyObject *kcdsameth_beginhash(PyObject *me)
+  { return (ghash_pywrap(DSA_HASH(me), gkcdsa_beginhash(DSA_D(me)))); }
 
 static PyObject *kcdsameth_endhash(PyObject *me, PyObject *arg)
 {
@@ -426,16 +420,16 @@ end:
   return (rc);
 }
 
-static PyMethodDef kcdsapub_pymethods[] = {
+static const PyMethodDef kcdsapub_pymethods[] = {
 #define METHNAME(name) kcdsameth_##name
-  METH (beginhash,     "D.beginhash() -> hash object")
+  NAMETH(beginhash,    "D.beginhash() -> hash object")
   METH (endhash,       "D.endhash(H) -> BYTES")
   METH (verify,        "D.verify(MSG, (R, S)) -> true/false")
 #undef METHNAME
   { 0 }
 };
 
-static PyMethodDef kcdsapriv_pymethods[] = {
+static const PyMethodDef kcdsapriv_pymethods[] = {
 #define METHNAME(name) kcdsameth_##name
   KWMETH(sign,         "D.sign(MSG, [k = K]) -> R, S")
 #undef METHNAME
@@ -475,8 +469,8 @@ static PyTypeObject kcdsapub_pytype_skel = {
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
-  kcdsapub_pymethods,                  /* @tp_methods@ */
-  dsapub_pymembers,                    /* @tp_members@ */
+  PYMETHODS(kcdsapub),                 /* @tp_methods@ */
+  PYMEMBERS(dsapub),                   /* @tp_members@ */
   0,                                   /* @tp_getset@ */
   0,                                   /* @tp_base@ */
   0,                                   /* @tp_dict@ */
@@ -524,8 +518,8 @@ static PyTypeObject kcdsapriv_pytype_skel = {
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
-  kcdsapriv_pymethods,                 /* @tp_methods@ */
-  dsapriv_pymembers,                   /* @tp_members@ */
+  PYMETHODS(kcdsapriv),                        /* @tp_methods@ */
+  PYMEMBERS(dsapriv),                  /* @tp_members@ */
   0,                                   /* @tp_getset@ */
   0,                                   /* @tp_base@ */
   0,                                   /* @tp_dict@ */
@@ -726,8 +720,7 @@ end:
   return (rc);
 }
 
-static PyObject *meth__RSAPriv_generate(PyObject *me,
-                                       PyObject *arg, PyObject *kw)
+static PyObject *rsameth_generate(PyObject *me, PyObject *arg, PyObject *kw)
 {
   grand *r = &rand_global;
   unsigned nbits;
@@ -737,12 +730,12 @@ static PyObject *meth__RSAPriv_generate(PyObject *me,
   struct excinfo exc = EXCINFO_INIT;
   pypgev evt = { { 0 } };
   static const char *const kwlist[] =
-    { "class", "nbits", "event", "rng", "nsteps", "e", 0 };
+    { "nbits", "event", "rng", "nsteps", "e", 0 };
   PyObject *rc = 0;
 
   evt.exc = &exc;
-  if (!PyArg_ParseTupleAndKeywords(arg, kw, "OO&|O&O&O&O&:generate", KWLIST,
-                                  &me, convuint, &nbits, convpgev, &evt,
+  if (!PyArg_ParseTupleAndKeywords(arg, kw, "O&|O&O&O&O&:generate", KWLIST,
+                                  convuint, &nbits, convpgev, &evt,
                                   convgrand, &r, convuint, &n,
                                   convmp, &e))
     goto end;
@@ -757,7 +750,7 @@ end:
   return (rc);
 }
 
-static PyGetSetDef rsapub_pygetset[] = {
+static const PyGetSetDef rsapub_pygetset[] = {
 #define GETSETNAME(op, name) rsa##op##_##name
   GET  (n,             "R.n -> N")
   GET  (e,             "R.e -> E")
@@ -765,14 +758,14 @@ static PyGetSetDef rsapub_pygetset[] = {
   { 0 }
 };
 
-static PyMethodDef rsapub_pymethods[] = {
+static const PyMethodDef rsapub_pymethods[] = {
 #define METHNAME(name) rsameth_##name
   METH (pubop,         "R.pubop(X) -> X^E (mod N)")
 #undef METHNAME
   { 0 }
 };
 
-static PyGetSetDef rsapriv_pygetset[] = {
+static const PyGetSetDef rsapriv_pygetset[] = {
 #define GETSETNAME(op, name) rsa##op##_##name
   GET  (d,             "R.d -> D")
   GET  (p,             "R.p -> P")
@@ -785,9 +778,11 @@ static PyGetSetDef rsapriv_pygetset[] = {
   { 0 }
 };
 
-static PyMethodDef rsapriv_pymethods[] = {
+static const PyMethodDef rsapriv_pymethods[] = {
 #define METHNAME(name) rsameth_##name
-  KWMETH(privop,       "R.privop(X, [rng = None]) -> X^D (mod N)")
+  KWMETH(privop,               "R.privop(X, [rng = None]) -> X^D (mod N)")
+  KWSMTH(generate, "generate(NBITS, [event = pgen_nullev], [rng = rand], "
+                                                       "[nsteps = 0]) -> R")
 #undef METHNAME
   { 0 }
 };
@@ -825,9 +820,9 @@ static PyTypeObject rsapub_pytype_skel = {
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
-  rsapub_pymethods,                    /* @tp_methods@ */
+  PYMETHODS(rsapub),                   /* @tp_methods@ */
   0,                                   /* @tp_members@ */
-  rsapub_pygetset,                     /* @tp_getset@ */
+  PYGETSET(rsapub),                    /* @tp_getset@ */
   0,                                   /* @tp_base@ */
   0,                                   /* @tp_dict@ */
   0,                                   /* @tp_descr_get@ */
@@ -874,9 +869,9 @@ static PyTypeObject rsapriv_pytype_skel = {
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
-  rsapriv_pymethods,                   /* @tp_methods@ */
+  PYMETHODS(rsapriv),                  /* @tp_methods@ */
   0,                                   /* @tp_members@ */
-  rsapriv_pygetset,                    /* @tp_getset@ */
+  PYGETSET(rsapriv),                   /* @tp_getset@ */
   0,                                   /* @tp_base@ */
   0,                                   /* @tp_dict@ */
   0,                                   /* @tp_descr_get@ */
@@ -1261,7 +1256,7 @@ EDDSAS(DEFEDDSA)
 
 /*----- Global stuff ------------------------------------------------------*/
 
-static PyMethodDef methods[] = {
+static const PyMethodDef methods[] = {
 #define METHNAME(name) meth_##name
   KWMETH(_p1crypt_encode, 0)
   KWMETH(_p1crypt_decode, 0)
@@ -1271,8 +1266,6 @@ static PyMethodDef methods[] = {
   KWMETH(_oaep_decode, 0)
   KWMETH(_pss_encode,  0)
   KWMETH(_pss_decode,  0)
-  KWMETH(_RSAPriv_generate, "generate(NBITS, [event = pgen_nullev], "
-                                         "[rng = rand], [nsteps = 0]) -> R")
 #define DEFMETH(X, x)                                                  \
   METH (x,             "" #x "(KEY, PUBLIC) -> SHARED")
   XDHS(DEFMETH)