unsigned ql, pl;
unsigned steps = 0;
dsa_seed ds;
- char *k;
- Py_ssize_t ksz;
+ struct bin k;
struct excinfo exc = EXCINFO_INIT;
pypgev evt = { { 0 } };
static const char *const kwlist[] =
PyObject *rc = 0;
evt.exc = &exc;
- if (!PyArg_ParseTupleAndKeywords(arg, kw, "O&O&s#|O&O&:gendsa", KWLIST,
+ if (!PyArg_ParseTupleAndKeywords(arg, kw, "O&O&O&|O&O&:gendsa", KWLIST,
convuint, &pl, convuint, &ql,
- &k, &ksz, convpgev, &evt,
- convuint, &steps))
+ convbin, &k,
+ convpgev, &evt, convuint, &steps))
goto end;
- if (dsa_gen(&dp, ql, pl, steps, k, ksz, &ds, evt.ev.proc, evt.ev.ctx))
+ if (dsa_gen(&dp, ql, pl, steps, k.p, k.sz, &ds, evt.ev.proc, evt.ev.ctx))
PGENERR(&exc);
rc = Py_BuildValue("(NNl)", fginfo_pywrap(&dp, dhinfo_pytype),
bytestring_pywrap(ds.p, ds.sz), (long)ds.count);
ec p = EC_INIT;
mp *y = 0;
ge *xx = 0;
+ size_t n;
mptext_stringctx sc;
g = GROUP_G(ty);
if (G_FROMINT(g, xx, y))
TYERR("can't convert from integer");
MP_DROP(y);
- } else if (PyString_Check(x)) {
- sc.buf = PyString_AS_STRING(x);
- sc.lim = sc.buf + PyString_GET_SIZE(x);
+ } else if (TEXT_CHECK(x)) {
+ TEXT_PTRLEN(x, sc.buf, n); sc.lim = sc.buf + n;
if (G_READ(g, xx, &mptext_stringops, &sc) || sc.buf < sc.lim)
VALERR("malformed group element string");
} else
PyObject *rc;
group_writedstr(GE_G(me), GE_X(me), &d);
- rc = PyString_FromStringAndSize(d.buf, d.len);
+ rc = TEXT_FROMSTRLEN(d.buf, d.len);
DDESTROY(&d);
return (rc);
}
n = GE_G(me)->noctets + 4;
rc = bytestring_pywrap(0, n);
- buf_init(&b, PyString_AS_STRING(rc), n);
+ buf_init(&b, BIN_PTR(rc), n);
G_TOBUF(GE_G(me), &b, GE_X(me));
assert(BOK(&b));
- _PyString_Resize(&rc, BLEN(&b));
+ BIN_SETLEN(rc, BLEN(&b));
return (rc);
}
n = GE_G(me)->noctets;
rc = bytestring_pywrap(0, n);
- buf_init(&b, PyString_AS_STRING(rc), n);
+ buf_init(&b, BIN_PTR(rc), n);
G_TORAW(GE_G(me), &b, GE_X(me));
assert(BOK(&b));
- _PyString_Resize(&rc, BLEN(&b));
+ BIN_SETLEN(rc, BLEN(&b));
return (rc);
}
static PyObject *gemeth_frombuf(PyObject *me, PyObject *arg)
{
buf b;
- char *p;
- Py_ssize_t n;
+ struct bin in;
group *g;
ge *x = 0;
- if (!PyArg_ParseTuple(arg, "s#:frombuf", &p, &n)) return (0);
+ if (!PyArg_ParseTuple(arg, "O&:frombuf", convbin, &in)) return (0);
g = GROUP_G(me);
- buf_init(&b, p, n);
+ buf_init(&b, (/*unconst*/ void *)in.p, in.sz);
x = G_CREATE(g);
if (G_FROMBUF(g, &b, x)) VALERR("invalid data");
return (Py_BuildValue("(NN)", ge_pywrap(me, x), bytestring_pywrapbuf(&b)));
static PyObject *gemeth_fromraw(PyObject *me, PyObject *arg)
{
buf b;
- char *p;
- Py_ssize_t n;
+ struct bin in;
group *g;
ge *x = 0;
- if (!PyArg_ParseTuple(arg, "s#:fromraw", &p, &n)) return (0);
+ if (!PyArg_ParseTuple(arg, "O&:fromraw", convbin, &in)) return (0);
g = GROUP_G(me);
- buf_init(&b, p, n);
+ buf_init(&b, (/*unconst*/ void *)in.p, in.sz);
x = G_CREATE(g);
if (G_FROMRAW(g, &b, x)) VALERR("invalid data");
return (Py_BuildValue("(NN)", ge_pywrap(me, x), bytestring_pywrapbuf(&b)));