X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb-python/blobdiff_plain/0040152918b6695e73807fd479024db8a27a83fb..07bcd7682d13c250ee7aebbada840f82eb15c405:/pubkey.c diff --git a/pubkey.c b/pubkey.c index c47f1b5..4c4eb1d 100644 --- a/pubkey.c +++ b/pubkey.c @@ -210,7 +210,7 @@ static PyMemberDef dsapriv_pymembers[] = { static PyTypeObject dsapub_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ - "catacomb.DSAPub", /* @tp_name@ */ + "DSAPub", /* @tp_name@ */ sizeof(dsa_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -258,7 +258,7 @@ static PyTypeObject dsapub_pytype_skel = { static PyTypeObject dsapriv_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ - "catacomb.DSAPriv", /* @tp_name@ */ + "DSAPriv", /* @tp_name@ */ sizeof(dsa_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -423,7 +423,7 @@ static PyMethodDef kcdsapriv_pymethods[] = { static PyTypeObject kcdsapub_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ - "catacomb.KCDSAPub", /* @tp_name@ */ + "KCDSAPub", /* @tp_name@ */ sizeof(dsa_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -471,7 +471,7 @@ static PyTypeObject kcdsapub_pytype_skel = { static PyTypeObject kcdsapriv_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ - "catacomb.KCDSAPriv", /* @tp_name@ */ + "KCDSAPriv", /* @tp_name@ */ sizeof(dsa_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -553,6 +553,7 @@ static PyObject *rsapub_pynew(PyTypeObject *ty, if (!PyArg_ParseTupleAndKeywords(arg, kw, "O&O&:new", kwlist, convmp, &rp.n, convmp, &rp.e)) goto end; + if (!MP_ODDP(rp.n)) VALERR("RSA modulus must be even"); o = (rsapub_pyobj *)ty->tp_alloc(ty, 0); o->pub = rp; rsa_pubcreate(&o->pubctx, &o->pub); @@ -625,6 +626,10 @@ static PyObject *rsapriv_pynew(PyTypeObject *ty, convmp, &rp.q_inv, &rng)) goto end; + if ((rp.n && !MP_ODDP(rp.n)) || + (rp.p && !MP_ODDP(rp.p)) || + (rp.p && !MP_ODDP(rp.q))) + VALERR("RSA modulus and factors must be odd"); if (rsa_recover(&rp)) VALERR("couldn't construct private key"); if (rng != Py_None && !GRAND_PYCHECK(rng)) TYERR("not a random number source"); @@ -759,7 +764,7 @@ static PyMethodDef rsapriv_pymethods[] = { static PyTypeObject rsapub_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ - "catacomb.RSAPub", /* @tp_name@ */ + "RSAPub", /* @tp_name@ */ sizeof(rsapub_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -807,7 +812,7 @@ static PyTypeObject rsapub_pytype_skel = { static PyTypeObject rsapriv_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ - "catacomb.RSAPriv", /* @tp_name@ */ + "RSAPriv", /* @tp_name@ */ sizeof(rsapriv_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */