unsigned steps = 0;
dsa_seed ds;
char *k;
- int ksz;
+ Py_ssize_t ksz;
pgev evt = { 0 };
char *kwlist[] =
{ "class", "pbits", "qbits", "seed", "event", "nsteps", 0 };
PyTypeObject *ge_pytype, *group_pytype;
PyTypeObject *primegroup_pytype, *bingroup_pytype, *ecgroup_pytype;
-#ifdef GROUP_GUTS_MPSTRUCT
-# define GG_GEN(gg) ((gg)->gen.x)
-#else
-# define GG_GEN(gg) ((gg)->gen)
-#endif
-
group *group_copy(group *g)
{
if (strcmp(G_NAME(g), "prime") == 0) {
static PyObject *gemeth_toec(PyObject *me, PyObject *arg, PyObject *kw)
{
char *kwlist[] = { "curve", 0 };
- PyTypeObject *cty = ecpt_pytype;
+ PyTypeObject *cty = 0;
+ PyObject *rc = 0;
+ group *g;
+ ec_curve *c;
ec p = EC_INIT;
if (!PyArg_ParseTupleAndKeywords(arg, kw, "|O:toec", kwlist,
&cty)) goto end;
- if (!PyType_Check(cty) || !PyType_IsSubtype(cty, ecpt_pytype))
- TYERR("want subtype of catacomb.ECPt");
- if (G_TOEC(GE_G(me), &p, GE_X(me)))
+ g = GROUP_G(GE_GOBJ(me));
+ if (cty) {
+ if (!PyType_Check(cty) || !PyType_IsSubtype(cty, ecpt_pytype))
+ TYERR("want subtype of catacomb.ECPt");
+ Py_INCREF((PyObject *)cty);
+ } else if (strcmp(G_NAME(g), "ec") == 0) {
+ c = eccurve_copy(((gctx_ec *)g)->ei.c);
+ cty = (PyTypeObject *)eccurve_pywrap(0, c);
+ } else {
+ cty = ecpt_pytype;
+ Py_INCREF((PyObject *)cty);
+ }
+ if (G_TOEC(GE_G(me), &p, GE_X(me))) {
+ Py_DECREF((PyObject *)cty);
TYERR("can't convert to ec point");
- return (ecpt_pywrapout(cty, &p));
+ }
+ rc = ecpt_pywrapout(cty, &p);
+ Py_DECREF((PyObject *)cty);
end:
- return (0);
+ return (rc);
}
static PyObject *gemeth_tobuf(PyObject *me, PyObject *arg)
{
buf b;
char *p;
- int n;
+ Py_ssize_t n;
group *g;
ge *x = 0;
{
buf b;
char *p;
- int n;
+ Py_ssize_t n;
group *g;
ge *x = 0;
{
mptext_stringctx sc;
char *p;
- int n;
+ Py_ssize_t n;
group *g;
ge *x = 0;
if (G_READ(g, x, &mptext_stringops, &sc))
VALERR("bad group element string");
return (Py_BuildValue("(Ns#)", ge_pywrap(me, x),
- sc.buf, (int)(sc.lim - sc.buf)));
+ sc.buf, (Py_ssize_t)(sc.lim - sc.buf)));
end:
if (x) G_DESTROY(g, x);
return (0);
gctx_prime *gg = (gctx_prime *)GROUP_G(me);
dp.p = MP_COPY(gg->mm.m);
dp.q = MP_COPY(gg->g.r);
- dp.g = mpmont_reduce(&gg->mm, MP_NEW, GG_GEN(gg));
+ dp.g = mpmont_reduce(&gg->mm, MP_NEW, gg->gen.x);
return (fginfo_pywrap(&dp, dhinfo_pytype));
}
gctx_bin *gg = (gctx_bin *)GROUP_G(me);
dp.p = MP_COPY(gg->r.p);
dp.q = MP_COPY(gg->g.r);
- dp.g = MP_COPY(GG_GEN(gg));
+ dp.g = MP_COPY(gg->gen.x);
return (fginfo_pywrap(&dp, bindhinfo_pytype));
}