*.c: Make all of the type-definition tables read-only.
[catacomb-python] / algorithms.c
index d190a08..af98018 100644 (file)
@@ -213,7 +213,7 @@ static PyObject *ksget_max(PyObject *me, void *hunoz)
   return (PyInt_FromLong(x));
 }
 
-static PyMemberDef keysz_pymembers[] = {
+static const PyMemberDef keysz_pymembers[] = {
 #define MEMBERSTRUCT keysz_pyobj
 #define default dfl /* ugh! */
   MEMBER(default, T_INT,  READONLY, "KSZ.default -> default key size")
@@ -222,7 +222,7 @@ static PyMemberDef keysz_pymembers[] = {
   { 0 }
 };
 
-static PyGetSetDef keyszany_pygetset[] = {
+static const PyGetSetDef keyszany_pygetset[] = {
 #define GETSETNAME(op, name) ka##op##_##name
   GET  (min,           "KSZ.min -> smallest allowed key size")
   GET  (max,           "KSZ.max -> largest allowed key size")
@@ -230,7 +230,7 @@ static PyGetSetDef keyszany_pygetset[] = {
   { 0 }
 };
 
-static PyMemberDef keyszrange_pymembers[] = {
+static const PyMemberDef keyszrange_pymembers[] = {
 #define MEMBERSTRUCT keyszrange_pyobj
   MEMBER(min,  T_INT,    READONLY, "KSZ.min -> smallest allowed key size")
   MEMBER(max,  T_INT,    READONLY, "KSZ.max -> largest allowed key size")
@@ -240,7 +240,7 @@ static PyMemberDef keyszrange_pymembers[] = {
   { 0 }
 };
 
-static PyGetSetDef keyszset_pygetset[] = {
+static const PyGetSetDef keyszset_pygetset[] = {
 #define GETSETNAME(op, name) ks##op##_##name
   GET  (min,           "KSZ.min -> smallest allowed key size")
   GET  (max,           "KSZ.max -> largest allowed key size")
@@ -248,7 +248,7 @@ static PyGetSetDef keyszset_pygetset[] = {
   { 0 }
 };
 
-static PyMemberDef keyszset_pymembers[] = {
+static const PyMemberDef keyszset_pymembers[] = {
 #define MEMBERSTRUCT keyszset_pyobj
   MEMBER(set,  T_OBJECT, READONLY, "KSZ.set -> allowed key sizes")
 #undef MEMBERSTRUCT
@@ -289,7 +289,7 @@ static PyTypeObject keysz_pytype_skel = {
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
   0,                                   /* @tp_methods@ */
-  keysz_pymembers,                     /* @tp_members@ */
+  PYMEMBERS(keysz),                    /* @tp_members@ */
   0,                                   /* @tp_getset@ */
   0,                                   /* @tp_base@ */
   0,                                   /* @tp_dict@ */
@@ -339,7 +339,7 @@ static PyTypeObject keyszany_pytype_skel = {
   0,                                   /* @tp_iternext@ */
   0,                                   /* @tp_methods@ */
   0,                                   /* @tp_members@ */
-  keyszany_pygetset,                   /* @tp_getset@ */
+  PYGETSET(keyszany),                  /* @tp_getset@ */
   0,                                   /* @tp_base@ */
   0,                                   /* @tp_dict@ */
   0,                                   /* @tp_descr_get@ */
@@ -388,7 +388,7 @@ static PyTypeObject keyszrange_pytype_skel = {
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
   0,                                   /* @tp_methods@ */
-  keyszrange_pymembers,                        /* @tp_members@ */
+  PYMEMBERS(keyszrange),               /* @tp_members@ */
   0,                                   /* @tp_getset@ */
   0,                                   /* @tp_base@ */
   0,                                   /* @tp_dict@ */
@@ -437,8 +437,8 @@ static PyTypeObject keyszset_pytype_skel = {
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
   0,                                   /* @tp_methods@ */
-  keyszset_pymembers,                  /* @tp_members@ */
-  keyszset_pygetset,                   /* @tp_getset@ */
+  PYMEMBERS(keyszset),                 /* @tp_members@ */
+  PYGETSET(keyszset),                  /* @tp_getset@ */
   0,                                   /* @tp_base@ */
   0,                                   /* @tp_dict@ */
   0,                                   /* @tp_descr_get@ */
@@ -627,7 +627,7 @@ end:
   return (0);
 }
 
-static PyGetSetDef gccipher_pygetset[] = {
+static const PyGetSetDef gccipher_pygetset[] = {
 #define GETSETNAME(op, name) gcc##op##_##name
   GET  (keysz,         "CC.keysz -> acceptable key sizes")
   GET  (blksz,         "CC.blksz -> block size, or zero")
@@ -636,7 +636,7 @@ static PyGetSetDef gccipher_pygetset[] = {
   { 0 }
 };
 
-static PyMethodDef gcipher_pymethods[] = {
+static const PyMethodDef gcipher_pymethods[] = {
 #define METHNAME(name) gcmeth_##name
   METH (encrypt,       "C.encrypt(PT) -> CT")
   METH (enczero,       "C.enczero(N) -> CT")
@@ -683,7 +683,7 @@ static PyTypeObject gccipher_pytype_skel = {
   0,                                   /* @tp_iternext@ */
   0,                                   /* @tp_methods@ */
   0,                                   /* @tp_members@ */
-  gccipher_pygetset,                   /* @tp_getset@ */
+  PYGETSET(gccipher),                  /* @tp_getset@ */
   0,                                   /* @tp_base@ */
   0,                                   /* @tp_dict@ */
   0,                                   /* @tp_descr_get@ */
@@ -729,7 +729,7 @@ static PyTypeObject gcipher_pytype_skel = {
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
-  gcipher_pymethods,                   /* @tp_methods@ */
+  PYMETHODS(gcipher),                  /* @tp_methods@ */
   0,                                   /* @tp_members@ */
   0,                                   /* @tp_getset@ */
   0,                                   /* @tp_base@ */
@@ -938,7 +938,7 @@ static PyObject *gcaeget_ohd(PyObject *me, void *hunoz)
 static PyObject *gcaeget_flags(PyObject *me, void *hunoz)
   { return (PyInt_FromLong(GCAEAD_AEC(me)->f)); }
 
-static PyGetSetDef gcaead_pygetset[] = {
+static const PyGetSetDef gcaead_pygetset[] = {
 #define GETSETNAME(op, name) gcae##op##_##name
   GET  (keysz,         "AEC.keysz -> acceptable key sizes")
   GET  (noncesz,       "AEC.noncesz -> acceptable nonce sizes")
@@ -1042,7 +1042,7 @@ end:
   return (rc);
 }
 
-static PyMethodDef gaeadkey_pymethods[] = {
+static const PyMethodDef gaeadkey_pymethods[] = {
 #define METHNAME(name) gaekmeth_##name
   METH (aad,           "KEY.aad() -> AAD")
   KWMETH(enc,          "KEY.enc(NONCE, [hsz], [msz], [tsz]) -> ENC")
@@ -1100,7 +1100,7 @@ static PyObject *gaeaget_hsz(PyObject *me, void *hunoz)
 static PyObject *gaeaget_hlen(PyObject *me, void *hunoz)
   { return (gaea_check(me) ? 0 : getulong(GAEADAAD_HLEN(me))); }
 
-static PyGetSetDef gaeadaad_pygetset[] = {
+static const PyGetSetDef gaeadaad_pygetset[] = {
 #define GETSETNAME(op, name) gaea##op##_##name
   GET  (hsz,           "AAD.hsz -> precommitted header length or `None'")
   GET  (hlen,          "AAD.hlen -> header length so far")
@@ -1181,7 +1181,7 @@ static PyObject *gaeameth_hashstrz(PyObject *me, PyObject *arg)
   RETURN_ME;
 }
 
-static PyMethodDef gaeadaad_pymethods[] = {
+static const PyMethodDef gaeadaad_pymethods[] = {
 #define METHNAME(name) gaeameth_##name
   METH (copy,          "AAD.copy() -> AAD'")
   METH (hash,          "AAD.hash(H)")
@@ -1237,7 +1237,7 @@ static PyObject *gaeeget_tsz(PyObject *me, void *hunoz)
 static PyObject *gaeeget_mlen(PyObject *me, void *hunoz)
   { return getulong(GAEADENC_MLEN(me)); }
 
-static PyGetSetDef gaeadenc_pygetset[] = {
+static const PyGetSetDef gaeadenc_pygetset[] = {
 #define GETSETNAME(op, name) gaee##op##_##name
   GET  (hsz,           "ENC.hsz -> precommitted header length or `None'")
   GET  (msz,           "ENC.msz -> precommitted message length or `None'")
@@ -1362,7 +1362,7 @@ end:
   return (rc);
 }
 
-static PyMethodDef gaeadenc_pymethods[] = {
+static const PyMethodDef gaeadenc_pymethods[] = {
 #define METHNAME(name) gaeemeth_##name
   METH (aad,           "ENC.aad() -> AAD")
   KWMETH(reinit,       "ENC.reinit(NONCE, [hsz], [msz], [tsz])")
@@ -1412,7 +1412,7 @@ static PyObject *gaedget_tsz(PyObject *me, void *hunoz)
 static PyObject *gaedget_clen(PyObject *me, void *hunoz)
   { return getulong(GAEADDEC_CLEN(me)); }
 
-static PyGetSetDef gaeaddec_pygetset[] = {
+static const PyGetSetDef gaeaddec_pygetset[] = {
 #define GETSETNAME(op, name) gaed##op##_##name
   GET  (hsz,           "DEC.hsz -> precommitted header length or `None'")
   GET  (csz,          "DEC.csz -> precommitted ciphertext length or `None'")
@@ -1525,7 +1525,7 @@ end:
   return (rc);
 }
 
-static PyMethodDef gaeaddec_pymethods[] = {
+static const PyMethodDef gaeaddec_pymethods[] = {
 #define METHNAME(name) gaedmeth_##name
   METH (aad,           "DEC.aad() -> AAD")
   KWMETH(reinit,       "DEC.reinit(NONCE, [hsz], [csz], [tsz])")
@@ -1570,7 +1570,7 @@ static PyTypeObject gcaead_pytype_skel = {
   0,                                   /* @tp_iternext@ */
   0,                                   /* @tp_methods@ */
   0,                                   /* @tp_members@ */
-  gcaead_pygetset,                     /* @tp_getset@ */
+  PYGETSET(gcaead),                    /* @tp_getset@ */
   0,                                   /* @tp_base@ */
   0,                                   /* @tp_dict@ */
   0,                                   /* @tp_descr_get@ */
@@ -1616,7 +1616,7 @@ static PyTypeObject gaeadkey_pytype_skel = {
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
-  gaeadkey_pymethods,                  /* @tp_methods@ */
+  PYMETHODS(gaeadkey),                 /* @tp_methods@ */
   0,                                   /* @tp_members@ */
   0,                                   /* @tp_getset@ */
   0,                                   /* @tp_base@ */
@@ -1712,9 +1712,9 @@ static PyTypeObject gaeadaad_pytype_skel = {
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
-  gaeadaad_pymethods,                  /* @tp_methods@ */
+  PYMETHODS(gaeadaad),                 /* @tp_methods@ */
   0,                                   /* @tp_members@ */
-  gaeadaad_pygetset,                   /* @tp_getset@ */
+  PYGETSET(gaeadaad),                  /* @tp_getset@ */
   0,                                   /* @tp_base@ */
   0,                                   /* @tp_dict@ */
   0,                                   /* @tp_descr_get@ */
@@ -1808,9 +1808,9 @@ static PyTypeObject gaeadenc_pytype_skel = {
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
-  gaeadenc_pymethods,                  /* @tp_methods@ */
+  PYMETHODS(gaeadenc),                 /* @tp_methods@ */
   0,                                   /* @tp_members@ */
-  gaeadenc_pygetset,                   /* @tp_getset@ */
+  PYGETSET(gaeadenc),                  /* @tp_getset@ */
   0,                                   /* @tp_base@ */
   0,                                   /* @tp_dict@ */
   0,                                   /* @tp_descr_get@ */
@@ -1904,9 +1904,9 @@ static PyTypeObject gaeaddec_pytype_skel = {
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
-  gaeaddec_pymethods,                  /* @tp_methods@ */
+  PYMETHODS(gaeaddec),                 /* @tp_methods@ */
   0,                                   /* @tp_members@ */
-  gaeaddec_pygetset,                   /* @tp_getset@ */
+  PYGETSET(gaeaddec),                  /* @tp_getset@ */
   0,                                   /* @tp_base@ */
   0,                                   /* @tp_dict@ */
   0,                                   /* @tp_descr_get@ */
@@ -2048,7 +2048,7 @@ static PyObject *ghmeth_done(PyObject *me, PyObject *arg)
   return (rc);
 }
 
-static PyGetSetDef gchash_pygetset[] = {
+static const PyGetSetDef gchash_pygetset[] = {
 #define GETSETNAME(op, name) gch##op##_##name
   GET  (bufsz,         "CH.bufsz -> hash buffer size, or zero")
   GET  (hashsz,        "CH.hashsz -> hash output size")
@@ -2057,7 +2057,7 @@ static PyGetSetDef gchash_pygetset[] = {
   { 0 }
 };
 
-static PyMethodDef ghash_pymethods[] = {
+static const PyMethodDef ghash_pymethods[] = {
 #define METHNAME(name) ghmeth_##name
   METH (copy,          "H.copy() -> HH")
   METH (hash,          "H.hash(M)")
@@ -2108,7 +2108,7 @@ static PyTypeObject gchash_pytype_skel = {
   0,                                   /* @tp_iternext@ */
   0,                                   /* @tp_methods@ */
   0,                                   /* @tp_members@ */
-  gchash_pygetset,                     /* @tp_getset@ */
+  PYGETSET(gchash),                    /* @tp_getset@ */
   0,                                   /* @tp_base@ */
   0,                                   /* @tp_dict@ */
   0,                                   /* @tp_descr_get@ */
@@ -2154,7 +2154,7 @@ static PyTypeObject ghash_pytype_skel = {
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
-  ghash_pymethods,                     /* @tp_methods@ */
+  PYMETHODS(ghash),                    /* @tp_methods@ */
   0,                                   /* @tp_members@ */
   0,                                   /* @tp_getset@ */
   0,                                   /* @tp_base@ */
@@ -2278,7 +2278,7 @@ static PyObject *gcmget_keysz(PyObject *me, void *hunoz)
 static PyObject *gcmget_tagsz(PyObject *me, void *hunoz)
   { return (PyInt_FromLong(GCMAC_CM(me)->hashsz)); }
 
-static PyGetSetDef gcmac_pygetset[] = {
+static const PyGetSetDef gcmac_pygetset[] = {
 #define GETSETNAME(op, name) gcm##op##_##name
   GET  (keysz,         "CM.keysz -> acceptable key sizes")
   GET  (tagsz,         "CM.tagsz -> MAC output size")
@@ -2322,7 +2322,7 @@ static PyTypeObject gcmac_pytype_skel = {
   0,                                   /* @tp_iternext@ */
   0,                                   /* @tp_methods@ */
   0,                                   /* @tp_members@ */
-  gcmac_pygetset,                      /* @tp_getset@ */
+  PYGETSET(gcmac),                     /* @tp_getset@ */
   0,                                   /* @tp_base@ */
   0,                                   /* @tp_dict@ */
   0,                                   /* @tp_descr_get@ */
@@ -2614,7 +2614,7 @@ end:
   return (0);
 }
 
-static PyGetSetDef poly1305cls_pygetset[] = {
+static const PyGetSetDef poly1305cls_pygetset[] = {
 #define GETSETNAME(op, name) poly1305cls##op##_##name
   GET  (keysz,         "PC.keysz -> acceptable key sizes")
   GET  (masksz,        "PC.masksz -> mask size")
@@ -2624,7 +2624,7 @@ static PyGetSetDef poly1305cls_pygetset[] = {
   { 0 }
 };
 
-static PyMethodDef poly1305hash_pymethods[] = {
+static const PyMethodDef poly1305hash_pymethods[] = {
 #define METHNAME(name) polymeth_##name
   METH (copy,          "P.copy() -> PP")
   METH (hash,          "P.hash(M)")
@@ -2678,7 +2678,7 @@ static PyTypeObject poly1305cls_pytype_skel = {
   0,                                   /* @tp_iternext@ */
   0,                                   /* @tp_methods@ */
   0,                                   /* @tp_members@ */
-  poly1305cls_pygetset,                        /* @tp_getset@ */
+  PYGETSET(poly1305cls),               /* @tp_getset@ */
   0,                                   /* @tp_base@ */
   0,                                   /* @tp_dict@ */
   0,                                   /* @tp_descr_get@ */
@@ -2772,7 +2772,7 @@ static PyTypeObject poly1305hash_pytype_skel = {
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
-  poly1305hash_pymethods,              /* @tp_methods@ */
+  PYMETHODS(poly1305hash),             /* @tp_methods@ */
   0,                                   /* @tp_members@ */
   0,                                   /* @tp_getset@ */
   0,                                   /* @tp_base@ */
@@ -2925,14 +2925,14 @@ end:
   return (rc);
 }
 
-static PyGetSetDef kxvik_pygetset[] = {
+static const PyGetSetDef kxvik_pygetset[] = {
 #define GETSETNAME(op, name) kxvik##op##_##name
   GETSET(nround,       "KECCAK.nround -> number of rounds")
 #undef GETSETNAME
   { 0 }
 };
 
-static PyMethodDef kxvik_pymethods[] = {
+static const PyMethodDef kxvik_pymethods[] = {
 #define METHNAME(func) kxvikmeth_##func
   METH (copy,          "KECCAK.copy() -> KECCAK'")
   METH (mix,           "KECCAK.mix(DATA)")
@@ -2975,9 +2975,9 @@ static PyTypeObject kxvik_pytype_skel = {
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
-  kxvik_pymethods,                     /* @tp_methods@ */
+  PYMETHODS(kxvik),                    /* @tp_methods@ */
   0,                                   /* @tp_members@ */
-  kxvik_pygetset,                      /* @tp_getset@ */
+  PYGETSET(kxvik),                     /* @tp_getset@ */
   0,                                   /* @tp_base@ */
   0,                                   /* @tp_dict@ */
   0,                                   /* @tp_descr_get@ */
@@ -3161,7 +3161,7 @@ static PyObject *shakeget_state(PyObject *me, void *hunoz)
                              st == 1 ? "squeeze" : "dead"));
 }
 
-static PyGetSetDef shake_pygetset[] = {
+static const PyGetSetDef shake_pygetset[] = {
 #define GETSETNAME(op, name) shake##op##_##name
   GET  (rate,          "S.rate -> rate, in bytes")
   GET  (buffered,      "S.buffered -> amount currently buffered")
@@ -3170,7 +3170,7 @@ static PyGetSetDef shake_pygetset[] = {
   { 0 }
 };
 
-static PyMethodDef shake_pymethods[] = {
+static const PyMethodDef shake_pymethods[] = {
 #define METHNAME(func) shakemeth_##func
   METH (copy,          "S.copy() -> SS")
   METH (hash,          "S.hash(M)")
@@ -3222,9 +3222,9 @@ static PyTypeObject shake_pytype_skel = {
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
-  shake_pymethods,                     /* @tp_methods@ */
+  PYMETHODS(shake),                    /* @tp_methods@ */
   0,                                   /* @tp_members@ */
-  shake_pygetset,                      /* @tp_getset@ */
+  PYGETSET(shake),                     /* @tp_getset@ */
   0,                                   /* @tp_base@ */
   0,                                   /* @tp_dict@ */
   0,                                   /* @tp_descr_get@ */
@@ -3465,7 +3465,7 @@ end:
   return (rc);
 }
 
-static PyGetSetDef gcprp_pygetset[] = {
+static const PyGetSetDef gcprp_pygetset[] = {
 #define GETSETNAME(op, name) gcp##op##_##name
   GET  (keysz,         "CP.keysz -> acceptable key sizes")
   GET  (blksz,         "CP.blksz -> block size")
@@ -3474,7 +3474,7 @@ static PyGetSetDef gcprp_pygetset[] = {
   { 0 }
 };
 
-static PyMethodDef gprp_pymethods[] = {
+static const PyMethodDef gprp_pymethods[] = {
 #define METHNAME(name) gpmeth_##name
   METH (encrypt,       "P.encrypt(PT) -> CT")
   METH (decrypt,       "P.decrypt(CT) -> PT")
@@ -3517,7 +3517,7 @@ static PyTypeObject gcprp_pytype_skel = {
   0,                                   /* @tp_iternext@ */
   0,                                   /* @tp_methods@ */
   0,                                   /* @tp_members@ */
-  gcprp_pygetset,                      /* @tp_getset@ */
+  PYGETSET(gcprp),                     /* @tp_getset@ */
   0,                                   /* @tp_base@ */
   0,                                   /* @tp_dict@ */
   0,                                   /* @tp_descr_get@ */
@@ -3563,7 +3563,7 @@ static PyTypeObject gprp_pytype_skel = {
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
-  gprp_pymethods,                      /* @tp_methods@ */
+  PYMETHODS(gprp),                     /* @tp_methods@ */
   0,                                   /* @tp_members@ */
   0,                                   /* @tp_getset@ */
   0,                                   /* @tp_base@ */
@@ -3580,7 +3580,7 @@ static PyTypeObject gprp_pytype_skel = {
 
 /*----- Main code ---------------------------------------------------------*/
 
-static PyMethodDef methods[] = {
+static const PyMethodDef methods[] = {
 #define METHNAME(func) meth_##func
   METH (_KeySZ_fromdl, "fromdl(N) -> M: "
                    "convert integer discrete log field size to work factor")