~mdw
/
catacomb-python
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ec.c, catacomb/__init__.py: Return tail from `parse'; provide `fromstring'.
[catacomb-python]
/
ec.c
diff --git
a/ec.c
b/ec.c
index
7a6ed95
..
f5a3aca
100644
(file)
--- a/
ec.c
+++ b/
ec.c
@@
-333,11
+333,15
@@
static PyObject *epmeth_parse(PyObject *me, PyObject *arg)
char *p;
qd_parse qd;
PyObject *rc = 0;
char *p;
qd_parse qd;
PyObject *rc = 0;
+ int paren;
ec pp = EC_INIT;
if (!PyArg_ParseTuple(arg, "s:parse", &p)) goto end;
qd.p = p; qd.e = 0;
ec pp = EC_INIT;
if (!PyArg_ParseTuple(arg, "s:parse", &p)) goto end;
qd.p = p; qd.e = 0;
+ qd_skipspc(&qd); paren = qd_delim(&qd, '(');
if (!ec_ptparse(&qd, &pp)) VALERR(qd.e);
if (!ec_ptparse(&qd, &pp)) VALERR(qd.e);
+ qd_skipspc(&qd); if (paren && !qd_delim(&qd, ')'))
+ { EC_DESTROY(&pp); VALERR("missing `)'"); }
rc = Py_BuildValue("(Ns)", ecpt_pywrapout(me, &pp), qd.p);
end:
return (rc);
rc = Py_BuildValue("(Ns)", ecpt_pywrapout(me, &pp), qd.p);
end:
return (rc);
@@
-513,6
+517,7
@@
static int ecptxl_1(ec_curve *c, ec *p, PyObject *x)
mp *xx = 0;
int n;
qd_parse qd;
mp *xx = 0;
int n;
qd_parse qd;
+ int paren;
Py_XINCREF(x);
if (!x || x == Py_None)
Py_XINCREF(x);
if (!x || x == Py_None)
@@
-521,10
+526,11
@@
static int ecptxl_1(ec_curve *c, ec *p, PyObject *x)
getecptout(p, x);
goto fix;
} else if (TEXT_CHECK(x)) {
getecptout(p, x);
goto fix;
} else if (TEXT_CHECK(x)) {
- qd.p = TEXT_PTR(x);
- qd.e = 0;
- if (!ec_ptparse(&qd, p))
- VALERR(qd.e);
+ qd.p = TEXT_PTR(x); qd.e = 0;
+ qd_skipspc(&qd); paren = qd_delim(&qd, '(');
+ if (!ec_ptparse(&qd, p)) VALERR(qd.e);
+ qd_skipspc(&qd); if (paren && !qd_delim(&qd, ')'))
+ { EC_DESTROY(p); VALERR("missing `)'"); }
qd_skipspc(&qd); if (!qd_eofp(&qd)) VALERR("junk at eof");
goto fix;
} else if (c && (xx = tomp(x)) != 0) {
qd_skipspc(&qd); if (!qd_eofp(&qd)) VALERR("junk at eof");
goto fix;
} else if (c && (xx = tomp(x)) != 0) {
@@
-533,7
+539,7
@@
static int ecptxl_1(ec_curve *c, ec *p, PyObject *x)
} else if (PySequence_Check(x)) {
t = x; x = 0;
n = PySequence_Size(t); if (n < 0) goto end;
} else if (PySequence_Check(x)) {
t = x; x = 0;
n = PySequence_Size(t); if (n < 0) goto end;
- if (n != 2 &&
(n != 3 || !c)
)
+ if (n != 2 &&
n != 3
)
TYERR("want sequence of two or three items");
if ((x = PySequence_GetItem(t, 0)) == 0 ||
(y = PySequence_GetItem(t, 1)) == 0 ||
TYERR("want sequence of two or three items");
if ((x = PySequence_GetItem(t, 0)) == 0 ||
(y = PySequence_GetItem(t, 1)) == 0 ||
@@
-980,7
+986,7
@@
static PyObject *ecmeth_parse(PyObject *me, PyObject *arg)
if (!PyArg_ParseTuple(arg, "s:parse", &p)) goto end;
qd.p = p; qd.e = 0;
if ((c = ec_curveparse(&qd)) == 0) VALERR(qd.e);
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
);
+ rc =
Py_BuildValue("(Ns)", eccurve_pywrap(0, c), qd.p
);
end:
return (rc);
}
end:
return (rc);
}