return (rc);
}
-static PyObject *epmeth_oncurvep(PyObject *me, PyObject *arg)
+static PyObject *epmeth_oncurvep(PyObject *me)
{
- if (!PyArg_ParseTuple(arg, ":oncurvep")) return (0);
return (getbool(EC_ATINF(ECPT_P(me)) ||
!EC_CHECK(ECPT_C(me), ECPT_P(me))));
}
-static PyObject *epmeth_dbl(PyObject *me, PyObject *arg)
+static PyObject *epmeth_dbl(PyObject *me)
{
ec p = EC_INIT;
- if (!PyArg_ParseTuple(arg, ":dbl")) return (0);
EC_DBL(ECPT_C(me), &p, ECPT_P(me));
return (ecpt_pywrap(ECPT_COBJ(me), &p));
}
-static PyObject *epmeth_tobuf(PyObject *me, PyObject *arg)
+static PyObject *epmeth_tobuf(PyObject *me)
{
buf b;
ec p = EC_INIT;
PyObject *rc;
size_t n;
- if (!PyArg_ParseTuple(arg, ":tobuf")) return (0);
getecptout(&p, me);
if (EC_ATINF(&p))
n = 2;
return (rc);
}
-static PyObject *epmeth_toraw(PyObject *me, PyObject *arg)
+static PyObject *epmeth_toraw(PyObject *me)
{
buf b;
PyObject *rc;
ec pp = EC_INIT;
int len;
- if (!PyArg_ParseTuple(arg, ":toraw")) return (0);
len = c->f->noctets * 2 + 1;
rc = bytestring_pywrap(0, len);
p = PyString_AS_STRING(rc);
static PyObject *epget_curve(PyObject *me, void *hunoz)
{ RETURN_OBJ(ECPT_COBJ(me)); }
-static PyObject *meth__ECPt_frombuf(PyObject *me, PyObject *arg)
+static PyObject *epmeth_frombuf(PyObject *me, PyObject *arg)
{
buf b;
char *p;
PyObject *rc = 0;
ec pp = EC_INIT;
- if (!PyArg_ParseTuple(arg, "Os#:frombuf", &me, &p, &sz)) goto end;
+ if (!PyArg_ParseTuple(arg, "s#:frombuf", &p, &sz)) goto end;
buf_init(&b, p, sz);
if (buf_getec(&b, &pp)) VALERR("malformed data");
rc = Py_BuildValue("(NN)", ecpt_pywrapout(me, &pp),
return (rc);
}
-static PyObject *meth__ECPt_parse(PyObject *me, PyObject *arg)
+static PyObject *epmeth_parse(PyObject *me, PyObject *arg)
{
char *p;
qd_parse qd;
PyObject *rc = 0;
ec pp = EC_INIT;
- if (!PyArg_ParseTuple(arg, "Os:parse", &me, &p)) goto end;
+ if (!PyArg_ParseTuple(arg, "s:parse", &p)) goto end;
qd.p = p; qd.e = 0;
if (!ec_ptparse(&qd, &pp)) VALERR(qd.e);
rc = Py_BuildValue("(Ns)", ecpt_pywrapout(me, &pp), qd.p);
return (rc);
}
-static PyObject *meth__ECPtCurve_fromraw(PyObject *me, PyObject *arg)
+static PyObject *epmeth_fromraw(PyObject *me, PyObject *arg)
{
char *p;
Py_ssize_t len;
ec_curve *cc;
ec pp = EC_INIT;
- if (!PyArg_ParseTuple(arg, "Os#:fromraw", &me, &p, &len))
- return (0);
+ if (!PyArg_ParseTuple(arg, "s#:fromraw", &me, &p, &len)) return (0);
buf_init(&b, p, len);
cc = ECCURVE_C(me);
if (ec_getraw(cc, &b, &pp))
return (rc);
}
-static PyObject *meth__ECPtCurve_os2ecp(PyObject *me,
- PyObject *arg, PyObject *kw)
+static PyObject *epmeth_os2ecp(PyObject *me, PyObject *arg, PyObject *kw)
{
char *p;
Py_ssize_t len;
ec_curve *cc;
unsigned f = EC_XONLY | EC_LSB | EC_SORT | EC_EXPLY;
ec pp = EC_INIT;
- static const char *const kwlist[] = { "class", "buf", "flags", 0 };
+ static const char *const kwlist[] = { "buf", "flags", 0 };
- if (!PyArg_ParseTupleAndKeywords(arg, kw, "Os#|O&:os2ecp", KWLIST,
- &me, &p, &len, convuint, &f))
+ if (!PyArg_ParseTupleAndKeywords(arg, kw, "s#|O&:os2ecp", KWLIST,
+ &p, &len, convuint, &f))
return (0);
buf_init(&b, p, len);
cc = ECCURVE_C(me);
static const PyMethodDef ecptnc_pymethods[] = {
#define METHNAME(func) epmeth_##func
- METH (tobuf, "X.tobuf() -> BIN")
+ NAMETH(tobuf, "X.tobuf() -> BIN")
+ CMTH (frombuf, "frombuf(STR) -> (P, REST)")
+ CMTH (parse, "parse(STR) -> (P, REST)")
#undef METHNAME
{ 0 }
};
static const PyMethodDef ecpt_pymethods[] = {
#define METHNAME(func) epmeth_##func
- METH (toraw, "X.toraw() -> BIN")
+ NAMETH(toraw, "X.toraw() -> BIN")
KWMETH(ec2osp, "X.ec2osp([flags = EC_EXPLY]) -> BIN")
- METH (dbl, "X.dbl() -> X + X")
- METH (oncurvep, "X.oncurvep() -> BOOL")
+ NAMETH(dbl, "X.dbl() -> X + X")
+ NAMETH(oncurvep, "X.oncurvep() -> BOOL")
+ CMTH (fromraw, "fromraw(STR) -> (P, REST)")
+ KWCMTH(os2ecp, "os2ecp(STR, [flags = ...]) -> (P, REST)")
#undef METHNAME
{ 0 }
};
return (ecpt_pywrap(me, &p));
}
-static PyObject *meth__ECCurve_parse(PyObject *me, PyObject *arg)
+static PyObject *ecmeth_parse(PyObject *me, PyObject *arg)
{
char *p;
qd_parse qd;
ec_curve *c;
PyObject *rc = 0;
- if (!PyArg_ParseTuple(arg, "Os:parse", &me, &p)) goto end;
+ if (!PyArg_ParseTuple(arg, "s:parse", &p)) goto end;
qd.p = p; qd.e = 0;
if ((c = ec_curveparse(&qd)) == 0) VALERR(qd.e);
rc = eccurve_pywrap(0, c);
METH (mmul, "E.mmul([(P0, N0), (P1, N1), ...]) = N0 P0 + N1 P1 + ...")
METH (find, "E.find(X) -> P")
KWMETH(rand, "E.rand([rng = rand]) -> P")
+ SMTH (parse, "parse(STR) -> (E, REST)")
#undef METHNAME
{ 0 }
};
return (0);
}
-static PyObject *meth__ECInfo_parse(PyObject *me, PyObject *arg)
+static PyObject *eimeth_parse(PyObject *me, PyObject *arg)
{
char *p;
qd_parse qd;
ec_info ei;
PyObject *rc = 0;
- if (!PyArg_ParseTuple(arg, "Os:parse", &me, &p)) goto end;
+ if (!PyArg_ParseTuple(arg, "s:parse", &p)) goto end;
qd.p = p; qd.e = 0;
if (ec_infoparse(&qd, &ei)) VALERR(qd.e);
rc = Py_BuildValue("(Ns)", ecinfo_pywrap(&ei), qd.p);
return (rc);
}
-static PyObject *meth__ECInfo__curven(PyObject *me, PyObject *arg)
+static PyObject *eimeth__curven(PyObject *me, PyObject *arg)
{
int i;
ec_info ei;
PyObject *rc = 0;
- if (!PyArg_ParseTuple(arg, "Oi:_curven", &me, &i)) goto end;
+ if (!PyArg_ParseTuple(arg, "i:_curven", &i)) goto end;
if (i < 0 || i >= ncurves) VALERR("curve index out of range");
ec_infofromdata(&ei, ectab[i].data);
rc = ecinfo_pywrap(&ei);
static const PyMethodDef ecinfo_pymethods[] = {
#define METHNAME(name) eimeth_##name
KWMETH(check, "I.check([rng = rand]) -> None")
+ SMTH (parse, "parse(STR) -> (I, REST)")
+ SMTH (_curven, "_curven(N) -> I")
#undef METHNAME
{ 0 }
};
/*----- Setup -------------------------------------------------------------*/
-static const PyMethodDef methods[] = {
-#define METHNAME(func) meth_##func
- METH (_ECPt_frombuf, "frombuf(E, STR) -> (P, REST)")
- METH (_ECPtCurve_fromraw, "fromraw(E, STR) -> (P, REST)")
- KWMETH(_ECPtCurve_os2ecp, "os2ecp(E, STR, [flags = ...]) -> (P, REST)")
- METH (_ECPt_parse, "parse(E, STR) -> (P, REST)")
- METH (_ECCurve_parse, "parse(STR) -> (E, REST)")
- METH (_ECInfo_parse, "parse(STR) -> (I, REST)")
- METH (_ECInfo__curven, "_curven(N) -> I")
-#undef METHNAME
- { 0 }
-};
-
void ec_pyinit(void)
{
INITTYPE(ecpt, root);
INITTYPE(ecbincurve, eccurve);
INITTYPE(ecbinprojcurve, ecbincurve);
INITTYPE(ecinfo, root);
- addmethods(methods);
}
static PyObject *namedcurves(void)