algorithms.c: Set `KSZ.max' to `None' to indicate no bound.
[catacomb-python] / ec.c
diff --git a/ec.c b/ec.c
index a67699e..459c272 100644 (file)
--- 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@ */