X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb-python/blobdiff_plain/67c75893d1c2802da465c8973276096a4d862436..b2e2c7eef3e99fc9ad23e1b69020ff0fc722ba61:/ec.c diff --git a/ec.c b/ec.c index a67699e..459c272 100644 --- a/ec.c +++ b/ec.c @@ -251,10 +251,10 @@ static PyObject *epmeth_tobuf(PyObject *me) else n = mp_octets(p.x) + mp_octets(p.y) + 6; rc = bytestring_pywrap(0, n); - buf_init(&b, PyString_AS_STRING(rc), n); + buf_init(&b, BIN_PTR(rc), n); buf_putec(&b, &p); assert(BOK(&b)); - _PyString_Resize(&rc, BLEN(&b)); + BIN_SETLEN(rc, BLEN(&b)); EC_DESTROY(&p); return (rc); } @@ -270,12 +270,12 @@ static PyObject *epmeth_toraw(PyObject *me) len = c->f->noctets * 2 + 1; rc = bytestring_pywrap(0, len); - p = PyString_AS_STRING(rc); + p = BIN_PTR(rc); buf_init(&b, p, len); EC_OUT(c, &pp, ECPT_P(me)); ec_putraw(c, &b, &pp); EC_DESTROY(&pp); - _PyString_Resize(&rc, BLEN(&b)); + BIN_SETLEN(rc, BLEN(&b)); return (rc); } @@ -295,7 +295,7 @@ static PyObject *epmeth_ec2osp(PyObject *me, PyObject *arg, PyObject *kw) return (0); len = c->f->noctets * 2 + 1; rc = bytestring_pywrap(0, len); - p = PyString_AS_STRING(rc); + p = BIN_PTR(rc); buf_init(&b, p, len); EC_OUT(c, &pp, ECPT_P(me)); if (ec_ec2osp(c, f, &b, &pp)) { @@ -303,7 +303,7 @@ static PyObject *epmeth_ec2osp(PyObject *me, PyObject *arg, PyObject *kw) VALERR("invalid flags"); } EC_DESTROY(&pp); - _PyString_Resize(&rc, BLEN(&b)); + BIN_SETLEN(rc, BLEN(&b)); end: return (rc); } @@ -516,8 +516,8 @@ static int ecptxl_1(ec_curve *c, ec *p, PyObject *x) else if (ECPT_PYCHECK(x)) { getecptout(p, x); goto fix; - } else if (PyString_Check(x)) { - qd.p = PyString_AS_STRING(x); + } else if (TEXT_CHECK(x)) { + qd.p = TEXT_PTR(x); qd.e = 0; if (!ec_ptparse(&qd, p)) VALERR(qd.e); @@ -589,6 +589,7 @@ end: return (rc); } +#ifdef PY2 static PyObject *ecpt_pylong(PyObject *me) { ec p = EC_INIT; @@ -600,6 +601,7 @@ end: EC_DESTROY(&p); return (rc); } +#endif static PyObject *ecpt_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw) { @@ -639,7 +641,9 @@ static const PyNumberMethods ecpt_pynumber = { 0, /* @nb_add@ */ 0, /* @nb_subtract@ */ 0, /* @nb_multiply@ */ +#ifdef PY2 0, /* @nb_divide@ */ +#endif 0, /* @nb_remainder@ */ 0, /* @nb_divmod@ */ 0, /* @nb_power@ */ @@ -653,17 +657,23 @@ static const PyNumberMethods ecpt_pynumber = { 0, /* @nb_and@ */ 0, /* @nb_xor@ */ 0, /* @nb_or@ */ +#ifdef PY2 0, /* @nb_coerce@ */ +#endif ecpt_pyint, /* @nb_int@ */ - ecpt_pylong, /* @nb_long@ */ + PY23(ecpt_pylong, 0), /* @nb_long@ */ 0, /* @nb_float@ */ +#ifdef PY2 0, /* @nb_oct@ */ 0, /* @nb_hex@ */ +#endif 0, /* @nb_inplace_add@ */ 0, /* @nb_inplace_subtract@ */ 0, /* @nb_inplace_multiply@ */ +#ifdef PY2 0, /* @nb_inplace_divide@ */ +#endif 0, /* @nb_inplace_remainder@ */ 0, /* @nb_inplace_power@ */ 0, /* @nb_inplace_lshift@ */ @@ -731,7 +741,7 @@ static const PyTypeObject ecpt_pytype_skel = { static const PyMemberDef ecpt_pymembers[] = { #define MEMBERSTRUCT ecpt_pyobj - MEMRNM(curve, T_OBJECT, ob_type, READONLY, + MEMRNM(curve, T_OBJECT, PY23(ob_type, ob_base.ob_type), READONLY, "P.curve -> elliptic curve containing P") #undef MEMBERSTRUCT { 0 } @@ -765,7 +775,9 @@ static const PyNumberMethods ecptcurve_pynumber = { ecpt_pyadd, /* @nb_add@ */ ecpt_pysub, /* @nb_subtract@ */ ecpt_pymul, /* @nb_multiply@ */ +#ifdef PY2 0, /* @nb_divide@ */ +#endif 0, /* @nb_remainder@ */ 0, /* @nb_divmod@ */ 0, /* @nb_power@ */ @@ -779,12 +791,16 @@ static const PyNumberMethods ecptcurve_pynumber = { 0, /* @nb_and@ */ 0, /* @nb_xor@ */ 0, /* @nb_or@ */ +#ifdef PY2 0, /* @nb_coerce@ */ +#endif 0, /* @nb_int@ */ 0, /* @nb_long@ */ 0, /* @nb_float@ */ +#ifdef PY2 0, /* @nb_oct@ */ 0, /* @nb_hex@ */ +#endif 0, /* @nb_inplace_add@ */ 0, /* @nb_inplace_subtract@ */ @@ -1028,7 +1044,7 @@ end: } static PyObject *ecget_name(PyObject *me, void *hunoz) - { return (PyString_FromString(EC_NAME(ECCURVE_C(me)))); } + { return (TEXT_FROMSTR(EC_NAME(ECCURVE_C(me)))); } static PyObject *ecget_a(PyObject *me, void *hunoz) { return (fe_pywrap(ECCURVE_FOBJ(me), MP_COPY(ECCURVE_C(me)->a))); } @@ -1147,7 +1163,7 @@ static const PyTypeObject ecprimecurve_pytype_skel = { 0, /* @tp_traverse@ */ 0, /* @tp_clear@ */ - eccurve_pyrichcompare, /* @tp_richcompare@ */ + 0, /* @tp_richcompare@ */ 0, /* @tp_weaklistoffset@ */ 0, /* @tp_iter@ */ 0, /* @tp_iternext@ */ @@ -1202,7 +1218,7 @@ static const PyTypeObject ecprimeprojcurve_pytype_skel = { 0, /* @tp_traverse@ */ 0, /* @tp_clear@ */ - eccurve_pyrichcompare, /* @tp_richcompare@ */ + 0, /* @tp_richcompare@ */ 0, /* @tp_weaklistoffset@ */ 0, /* @tp_iter@ */ 0, /* @tp_iternext@ */ @@ -1257,7 +1273,7 @@ static const PyTypeObject ecbincurve_pytype_skel = { 0, /* @tp_traverse@ */ 0, /* @tp_clear@ */ - eccurve_pyrichcompare, /* @tp_richcompare@ */ + 0, /* @tp_richcompare@ */ 0, /* @tp_weaklistoffset@ */ 0, /* @tp_iter@ */ 0, /* @tp_iternext@ */ @@ -1312,7 +1328,7 @@ static const PyTypeObject ecbinprojcurve_pytype_skel = { 0, /* @tp_traverse@ */ 0, /* @tp_clear@ */ - eccurve_pyrichcompare, /* @tp_richcompare@ */ + 0, /* @tp_richcompare@ */ 0, /* @tp_weaklistoffset@ */ 0, /* @tp_iter@ */ 0, /* @tp_iternext@ */