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)
{
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")
{ 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
{ 0 }
};
-static PyTypeObject dsapub_pytype_skel = {
+static const PyTypeObject dsapub_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"DSAPub", /* @tp_name@ */
sizeof(dsa_pyobj), /* @tp_basicsize@ */
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@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject dsapriv_pytype_skel = {
+static const PyTypeObject dsapriv_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"DSAPriv", /* @tp_name@ */
sizeof(dsa_pyobj), /* @tp_basicsize@ */
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@ */
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)
{
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
{ 0 }
};
-static PyTypeObject kcdsapub_pytype_skel = {
+static const PyTypeObject kcdsapub_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"KCDSAPub", /* @tp_name@ */
sizeof(dsa_pyobj), /* @tp_basicsize@ */
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@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject kcdsapriv_pytype_skel = {
+static const PyTypeObject kcdsapriv_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"KCDSAPriv", /* @tp_name@ */
sizeof(dsa_pyobj), /* @tp_basicsize@ */
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@ */
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;
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;
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")
{ 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")
{ 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)")
+ KWSMTH(generate, "generate(NBITS, [event = pgen_nullev], [rng = rand], "
+ "[nsteps = 0]) -> R")
#undef METHNAME
{ 0 }
};
-static PyTypeObject rsapub_pytype_skel = {
+static const PyTypeObject rsapub_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"RSAPub", /* @tp_name@ */
sizeof(rsapub_pyobj), /* @tp_basicsize@ */
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@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject rsapriv_pytype_skel = {
+static const PyTypeObject rsapriv_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"RSAPriv", /* @tp_name@ */
sizeof(rsapriv_pyobj), /* @tp_basicsize@ */
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@ */
/*----- Global stuff ------------------------------------------------------*/
-static PyMethodDef methods[] = {
+static const struct nameval consts[] = {
+ CONST(X25519_KEYSZ), CONST(X25519_PUBSZ), CONST(X25519_OUTSZ),
+ CONST(X448_KEYSZ), CONST(X448_PUBSZ), CONST(X448_OUTSZ),
+ CONST(ED25519_KEYSZ), CONST(ED25519_PUBSZ), CONST(ED25519_SIGSZ),
+ CONST(ED25519_MAXPERSOSZ),
+ CONST(ED448_KEYSZ), CONST(ED448_PUBSZ), CONST(ED448_SIGSZ),
+ CONST(ED448_MAXPERSOSZ),
+ { 0 }
+};
+
+static const PyMethodDef methods[] = {
#define METHNAME(name) meth_##name
KWMETH(_p1crypt_encode, 0)
KWMETH(_p1crypt_decode, 0)
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)
INSERT("KCDSAPriv", kcdsapriv_pytype);
INSERT("RSAPub", rsapub_pytype);
INSERT("RSAPriv", rsapriv_pytype);
+ setconstants(mod, consts);
}
/*----- That's all, folks -------------------------------------------------*/