/* -*-c-*-
- *
- * $Id$
*
* Public-key cryptography
*
* (c) 2004 Straylight/Edgeware
*/
-/*----- Licensing notice --------------------------------------------------*
+/*----- Licensing notice --------------------------------------------------*
*
* This file is part of the Python interface to Catacomb.
*
* 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.
dsa_pyobj *g = (dsa_pyobj *)me;
Py_DECREF(g->G); Py_DECREF(g->u); Py_DECREF(g->p);
Py_DECREF(g->rng); Py_DECREF(g->hash);
- PyObject_DEL(me);
+ FREEOBJ(me);
}
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:
- PyObject_DEL(g);
+ FREEOBJ(g);
return (0);
}
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,
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);
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);
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 }
};
};
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@ */
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@ */
0, /* @tp_init@ */
PyType_GenericAlloc, /* @tp_alloc@ */
dsapub_pynew, /* @tp_new@ */
- _PyObject_Del, /* @tp_free@ */
+ 0, /* @tp_free@ */
0 /* @tp_is_gc@ */
};
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@ */
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@ */
0, /* @tp_init@ */
PyType_GenericAlloc, /* @tp_alloc@ */
dsapriv_pynew, /* @tp_new@ */
- _PyObject_Del, /* @tp_free@ */
+ 0, /* @tp_free@ */
0 /* @tp_is_gc@ */
};
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);
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);
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);
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);
};
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@ */
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@ */
0, /* @tp_init@ */
PyType_GenericAlloc, /* @tp_alloc@ */
kcdsapub_pynew, /* @tp_new@ */
- _PyObject_Del, /* @tp_free@ */
+ 0, /* @tp_free@ */
0 /* @tp_is_gc@ */
};
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@ */
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@ */
0, /* @tp_init@ */
PyType_GenericAlloc, /* @tp_alloc@ */
kcdsapriv_pynew, /* @tp_new@ */
- _PyObject_Del, /* @tp_free@ */
+ 0, /* @tp_free@ */
0 /* @tp_is_gc@ */
};
{
rsa_pubdestroy(RSA_PUBCTX(me));
rsa_pubfree(RSA_PUB(me));
- PyObject_DEL(me);
+ FREEOBJ(me);
}
static PyObject *rsaget_n(PyObject *me, void *hunoz)
rsa_privdestroy(RSA_PRIVCTX(me));
rsa_privfree(RSA_PRIV(me));
Py_DECREF(RSA_RNG(me));
- PyObject_DEL(me);
+ FREEOBJ(me);
}
static PyObject *rsaget_d(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;
};
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@ */
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@ */
0, /* @tp_init@ */
PyType_GenericAlloc, /* @tp_alloc@ */
rsapub_pynew, /* @tp_new@ */
- _PyObject_Del, /* @tp_free@ */
+ 0, /* @tp_free@ */
0 /* @tp_is_gc@ */
};
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@ */
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@ */
0, /* @tp_init@ */
PyType_GenericAlloc, /* @tp_alloc@ */
rsapriv_pynew, /* @tp_new@ */
- _PyObject_Del, /* @tp_free@ */
+ 0, /* @tp_free@ */
0 /* @tp_is_gc@ */
};