X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb-python/blobdiff_plain/3aa33042dc760937bb9da54c09f7c668f00eb241..6140fbf7f12db17b61312571192eccc7d103e22b:/pubkey.c diff --git a/pubkey.c b/pubkey.c index ef44845..1e7e366 100644 --- a/pubkey.c +++ b/pubkey.c @@ -7,7 +7,7 @@ * (c) 2004 Straylight/Edgeware */ -/*----- Licensing notice --------------------------------------------------* +/*----- Licensing notice --------------------------------------------------* * * This file is part of the Python interface to Catacomb. * @@ -15,12 +15,12 @@ * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * + * * Catacomb/Python is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with Catacomb/Python; if not, write to the Free Software Foundation, * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. @@ -73,7 +73,7 @@ static PyObject *dsa_setup(PyTypeObject *ty, PyObject *G, PyObject *u, g->d.r = GRAND_R(rng); g->d.h = GCHASH_CH(hash); g->G = G; Py_INCREF(G); g->u = u; Py_INCREF(u); g->p = p; Py_INCREF(p); - rng = g->rng; Py_INCREF(rng); g->hash = hash; Py_INCREF(hash); + g->rng = rng; Py_INCREF(rng); g->hash = hash; Py_INCREF(hash); return ((PyObject *)g); end: FREEOBJ(g); @@ -87,7 +87,7 @@ static PyObject *dsapub_pynew(PyTypeObject *ty, PyObject *rc = 0; char *kwlist[] = { "G", "p", "u", "hash", "rng", 0 }; - if (!PyArg_ParseTupleAndKeywords(arg, kw, "O!O!O!|OO!:new", kwlist, + if (!PyArg_ParseTupleAndKeywords(arg, kw, "O!O!|OO!O!:new", kwlist, group_pytype, &G, ge_pytype, &p, &u, @@ -151,7 +151,7 @@ static PyObject *dsameth_verify(PyObject *me, PyObject *arg) goto end; if (n != DSA_D(me)->h->hashsz) VALERR("bad message length (doesn't match hash size)"); - rc = getbool(gdsa_verify(DSA_D(me), &s, p)); + rc = getbool(!gdsa_verify(DSA_D(me), &s, p)); end: mp_drop(s.r); mp_drop(s.s); @@ -165,13 +165,13 @@ static PyObject *dsapriv_pynew(PyTypeObject *ty, PyObject *rc = 0; char *kwlist[] = { "G", "p", "u", "hash", "rng", 0 }; - if (!PyArg_ParseTupleAndKeywords(arg, kw, "O!O!|O!OO!:new", kwlist, + if (!PyArg_ParseTupleAndKeywords(arg, kw, "O!O!O|O!O!:new", kwlist, group_pytype, &G, ge_pytype, &p, &u, gchash_pytype, &hash, grand_pytype, &rng) || - (rc = dsa_setup(dsapriv_pytype, G, p, u, rng, hash)) == 0) + (rc = dsa_setup(dsapriv_pytype, G, u, p, rng, hash)) == 0) goto end; end: return (rc); @@ -198,7 +198,7 @@ static PyMemberDef dsapub_pymembers[] = { MEMBER(G, T_OBJECT, READONLY, "D.G -> group to work in") MEMBER(p, T_OBJECT, READONLY, "D.p -> public key (group element") MEMBER(rng, T_OBJECT, READONLY, "D.rng -> random number generator") - MEMBER(hash, T_OBJECT, READONLY, "D.hash -> hash class") + MEMBER(hash, T_OBJECT, READONLY, "D.hash -> hash class") #undef MEMBERSTRUCT { 0 } }; @@ -211,7 +211,7 @@ static PyMemberDef dsapriv_pymembers[] = { }; static PyTypeObject dsapub_pytype_skel = { - PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */ + PyObject_HEAD_INIT(0) 0, /* Header */ "catacomb.DSAPub", /* @tp_name@ */ sizeof(dsa_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -242,7 +242,7 @@ static PyTypeObject dsapub_pytype_skel = { 0, /* @tp_richcompare@ */ 0, /* @tp_weaklistoffset@ */ 0, /* @tp_iter@ */ - 0, /* @tp_iternexr@ */ + 0, /* @tp_iternext@ */ dsapub_pymethods, /* @tp_methods@ */ dsapub_pymembers, /* @tp_members@ */ 0, /* @tp_getset@ */ @@ -259,7 +259,7 @@ static PyTypeObject dsapub_pytype_skel = { }; static PyTypeObject dsapriv_pytype_skel = { - PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */ + PyObject_HEAD_INIT(0) 0, /* Header */ "catacomb.DSAPriv", /* @tp_name@ */ sizeof(dsa_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -290,7 +290,7 @@ static PyTypeObject dsapriv_pytype_skel = { 0, /* @tp_richcompare@ */ 0, /* @tp_weaklistoffset@ */ 0, /* @tp_iter@ */ - 0, /* @tp_iternexr@ */ + 0, /* @tp_iternext@ */ dsapriv_pymethods, /* @tp_methods@ */ dsapriv_pymembers, /* @tp_members@ */ 0, /* @tp_getset@ */ @@ -313,13 +313,13 @@ static PyObject *kcdsapub_pynew(PyTypeObject *ty, PyObject *rc = 0; char *kwlist[] = { "G", "p", "u", "hash", "rng", 0 }; - if (!PyArg_ParseTupleAndKeywords(arg, kw, "O!O!O!|OO!:new", kwlist, + if (!PyArg_ParseTupleAndKeywords(arg, kw, "O!O!O|O!O!:new", kwlist, group_pytype, &G, ge_pytype, &p, &u, gchash_pytype, &hash, grand_pytype, &rng) || - (rc = dsa_setup(kcdsapub_pytype, G, p, u, rng, hash)) == 0) + (rc = dsa_setup(kcdsapub_pytype, G, u, p, rng, hash)) == 0) goto end; end: return (rc); @@ -332,13 +332,13 @@ static PyObject *kcdsapriv_pynew(PyTypeObject *ty, PyObject *rc = 0; char *kwlist[] = { "G", "p", "u", "hash", "rng", 0 }; - if (!PyArg_ParseTupleAndKeywords(arg, kw, "O!O!|O!OO!:new", kwlist, + if (!PyArg_ParseTupleAndKeywords(arg, kw, "O!O!|OO!O!:new", kwlist, group_pytype, &G, ge_pytype, &p, &u, gchash_pytype, &hash, grand_pytype, &rng) || - (rc = dsa_setup(kcdsapriv_pytype, G, p, u, rng, hash)) == 0) + (rc = dsa_setup(kcdsapriv_pytype, G, u, p, rng, hash)) == 0) goto end; end: return (rc); @@ -378,9 +378,9 @@ static PyObject *kcdsameth_sign(PyObject *me, PyObject *arg, PyObject *kw) if (n != DSA_D(me)->h->hashsz) VALERR("bad message length (doesn't match hash size)"); r = bytestring_pywrap(0, DSA_D(me)->h->hashsz); - s.r = PyString_AS_STRING(r); + s.r = (octet *)PyString_AS_STRING(r); gkcdsa_sign(DSA_D(me), &s, p, k); - rc = Py_BuildValue("(NN)", r, mp_pywrap(s.s)); + rc = Py_BuildValue("(ON)", r, mp_pywrap(s.s)); end: Py_XDECREF(r); mp_drop(k); @@ -401,7 +401,7 @@ static PyObject *kcdsameth_verify(PyObject *me, PyObject *arg) VALERR("bad message length (doesn't match hash size)"); if (rn != DSA_D(me)->h->hashsz) VALERR("bad signature `r' length (doesn't match hash size)"); - rc = getbool(gkcdsa_verify(DSA_D(me), &s, p)); + rc = getbool(!gkcdsa_verify(DSA_D(me), &s, p)); end: mp_drop(s.s); return (rc); @@ -424,7 +424,7 @@ static PyMethodDef kcdsapriv_pymethods[] = { }; static PyTypeObject kcdsapub_pytype_skel = { - PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */ + PyObject_HEAD_INIT(0) 0, /* Header */ "catacomb.KCDSAPub", /* @tp_name@ */ sizeof(dsa_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -455,7 +455,7 @@ static PyTypeObject kcdsapub_pytype_skel = { 0, /* @tp_richcompare@ */ 0, /* @tp_weaklistoffset@ */ 0, /* @tp_iter@ */ - 0, /* @tp_iternexr@ */ + 0, /* @tp_iternext@ */ kcdsapub_pymethods, /* @tp_methods@ */ dsapub_pymembers, /* @tp_members@ */ 0, /* @tp_getset@ */ @@ -472,7 +472,7 @@ static PyTypeObject kcdsapub_pytype_skel = { }; static PyTypeObject kcdsapriv_pytype_skel = { - PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */ + PyObject_HEAD_INIT(0) 0, /* Header */ "catacomb.KCDSAPriv", /* @tp_name@ */ sizeof(dsa_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -503,7 +503,7 @@ static PyTypeObject kcdsapriv_pytype_skel = { 0, /* @tp_richcompare@ */ 0, /* @tp_weaklistoffset@ */ 0, /* @tp_iter@ */ - 0, /* @tp_iternexr@ */ + 0, /* @tp_iternext@ */ kcdsapriv_pymethods, /* @tp_methods@ */ dsapriv_pymembers, /* @tp_members@ */ 0, /* @tp_getset@ */ @@ -670,7 +670,9 @@ static PyObject *rsaget_rng(PyObject *me, void *hunoz) static int rsaset_rng(PyObject *me, PyObject *val, void *hunoz) { int rc = -1; - if (val != Py_None && !GRAND_PYCHECK(val)) + if (!val) + val = Py_None; + else if (val != Py_None && !GRAND_PYCHECK(val)) TYERR("expected grand or None"); Py_DECREF(RSA_RNG(me)); RSA_RNG(me) = val; @@ -758,7 +760,7 @@ static PyMethodDef rsapriv_pymethods[] = { }; static PyTypeObject rsapub_pytype_skel = { - PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */ + PyObject_HEAD_INIT(0) 0, /* Header */ "catacomb.RSAPub", /* @tp_name@ */ sizeof(rsapub_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -789,7 +791,7 @@ static PyTypeObject rsapub_pytype_skel = { 0, /* @tp_richcompare@ */ 0, /* @tp_weaklistoffset@ */ 0, /* @tp_iter@ */ - 0, /* @tp_iternexr@ */ + 0, /* @tp_iternext@ */ rsapub_pymethods, /* @tp_methods@ */ 0, /* @tp_members@ */ rsapub_pygetset, /* @tp_getset@ */ @@ -806,7 +808,7 @@ static PyTypeObject rsapub_pytype_skel = { }; static PyTypeObject rsapriv_pytype_skel = { - PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */ + PyObject_HEAD_INIT(0) 0, /* Header */ "catacomb.RSAPriv", /* @tp_name@ */ sizeof(rsapriv_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -837,7 +839,7 @@ static PyTypeObject rsapriv_pytype_skel = { 0, /* @tp_richcompare@ */ 0, /* @tp_weaklistoffset@ */ 0, /* @tp_iter@ */ - 0, /* @tp_iternexr@ */ + 0, /* @tp_iternext@ */ rsapriv_pymethods, /* @tp_methods@ */ 0, /* @tp_members@ */ rsapriv_pygetset, /* @tp_getset@ */