Merge branch '1.2.x' into 1.3.x
authorMark Wooding <mdw@distorted.org.uk>
Mon, 6 Apr 2020 02:38:33 +0000 (02:38 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Mon, 6 Apr 2020 02:38:33 +0000 (02:38 +0000)
* 1.2.x:
  ec.c: Fix length type which should have been `Py_ssize_t'.

1  2 
ec.c

diff --combined ec.c
--- 1/ec.c
--- 2/ec.c
+++ b/ec.c
@@@ -292,9 -292,9 +292,9 @@@ static PyObject *epmeth_ec2osp(PyObjec
    ec pp = EC_INIT;
    unsigned f = EC_EXPLY;
    int len;
 -  char *kwlist[] = { "flags", 0 };
 +  static const char *const kwlist[] = { "flags", 0 };
  
 -  if (!PyArg_ParseTupleAndKeywords(arg, kw, "|O&:ec2osp", kwlist,
 +  if (!PyArg_ParseTupleAndKeywords(arg, kw, "|O&:ec2osp", KWLIST,
                                   convuint, &f))
      return (0);
    len = c->f->noctets * 2 + 1;
@@@ -443,7 -443,7 +443,7 @@@ static int ecptxl_1(ec_curve *c, ec *p
    PyObject *y = 0, *z = 0, *t = 0;
    mp *xx = 0;
    const void *q;
-   int n;
+   Py_ssize_t n;
    qd_parse qd;
  
    Py_XINCREF(x);
@@@ -502,9 -502,9 +502,9 @@@ static PyObject *ecptnc_pynew(PyTypeObj
  {
    PyObject *x = 0, *y = 0, *z = 0;
    ec p = EC_INIT;
 -  char *kwlist[] = { "x", "y", 0 };
 +  static const char *const kwlist[] = { "x", "y", 0 };
  
 -  if (!PyArg_ParseTupleAndKeywords(arg, kw, "|OO:new", kwlist, &x, &y) ||
 +  if (!PyArg_ParseTupleAndKeywords(arg, kw, "|OO:new", KWLIST, &x, &y) ||
        ecptxl(0, &p, x, y, z))
      goto end;
    return (ecpt_pywrapout(ty, &p));
@@@ -543,9 -543,9 +543,9 @@@ static PyObject *ecpt_pynew(PyTypeObjec
  {
    PyObject *x = 0, *y = 0, *z = 0;
    ec p = EC_INIT;
 -  char *kwlist[] = { "x", "y", "z", 0 };
 +  static const char *const kwlist[] = { "x", "y", "z", 0 };
  
 -  if (!PyArg_ParseTupleAndKeywords(arg, kw, "|OOO:new", kwlist,
 +  if (!PyArg_ParseTupleAndKeywords(arg, kw, "|OOO:new", KWLIST,
                                   &x, &y, &z) ||
        ecptxl(ECCURVE_C(ty), &p, x, y, z))
      goto end;
@@@ -640,9 -640,7 +640,9 @@@ static PyTypeObject ecpt_pytype_skel = 
      Py_TPFLAGS_BASETYPE,
  
    /* @tp_doc@ */
 -"Elliptic curve points, not associated with any curve.",
 +"ECPt([X, [Y]]): elliptic curve points, not associated with any curve.\n\
 +  X alone may be None, an existing point, a string 'X, Y', an\n\
 +  x-coordinate, or a pair (X, Y); X and Y should be a coordinate pair.",
  
    0,                                  /* @tp_traverse@ */
    0,                                  /* @tp_clear@ */
@@@ -864,9 -862,9 +864,9 @@@ static PyObject *meth__ECPtCurve_os2ecp
    ec_curve *cc;
    unsigned f = EC_XONLY | EC_LSB | EC_SORT | EC_EXPLY;
    ec pp = EC_INIT;
 -  char *kwlist[] = { "class", "buf", "flags", 0 };
 +  static const char *const kwlist[] = { "class", "buf", "flags", 0 };
  
 -  if (!PyArg_ParseTupleAndKeywords(arg, kw, "Os#|O&:os2ecp", kwlist,
 +  if (!PyArg_ParseTupleAndKeywords(arg, kw, "Os#|O&:os2ecp", KWLIST,
                                   &me, &p, &len, convuint, &f))
      return (0);
    buf_init(&b, p, len);
@@@ -942,11 -940,11 +942,11 @@@ end
  
  static PyObject *ecmeth_rand(PyObject *me, PyObject *arg, PyObject *kw)
  {
 -  char *kwlist[] = { "rng", 0 };
 +  static const char *const kwlist[] = { "rng", 0 };
    grand *r = &rand_global;
    ec p = EC_INIT;
  
 -  if (!PyArg_ParseTupleAndKeywords(arg, kw, "|O&:rand", kwlist,
 +  if (!PyArg_ParseTupleAndKeywords(arg, kw, "|O&:rand", KWLIST,
                                   convgrand, &r))
      return (0);
    ec_rand(ECCURVE_C(me), &p, r);
@@@ -1002,10 -1000,10 +1002,10 @@@ static PyObject *eccurve_pynew(PyTypeOb
  {
    PyObject *fobj;
    PyObject *cobj = 0;
 -  char *kwlist[] = { "field", "a", "b", 0 };
 +  static const char *const kwlist[] = { "field", "a", "b", 0 };
    mp *aa = 0, *bb = 0;
  
 -  if (!PyArg_ParseTupleAndKeywords(arg, kw, "O!O&O&", kwlist,
 +  if (!PyArg_ParseTupleAndKeywords(arg, kw, "O!O&O&", KWLIST,
                                   field_pytype, &fobj,
                                   convmp, &aa, convmp, &bb))
      goto end;
@@@ -1096,7 -1094,7 +1096,7 @@@ static PyTypeObject eccurve_pytype_ske
      Py_TPFLAGS_BASETYPE,
  
    /* @tp_doc@ */
 -  "An elliptic curve.  Abstract class.",
 +"An elliptic curve.  Abstract class.",
  
    0,                                  /* @tp_traverse@ */
    0,                                  /* @tp_clear@ */
@@@ -1150,8 -1148,7 +1150,8 @@@ static PyTypeObject ecprimecurve_pytype
      Py_TPFLAGS_BASETYPE,
  
    /* @tp_doc@ */
 -  "An elliptic curve over a prime field.  Use ecprimeprojcurve.",
 +"ECPrimeCurve(FIELD, A, B): an elliptic curve over a prime field.\n\
 +  Use ECPrimeProjCurve instead.",
  
    0,                                  /* @tp_traverse@ */
    0,                                  /* @tp_clear@ */
@@@ -1205,8 -1202,7 +1205,8 @@@ static PyTypeObject ecprimeprojcurve_py
      Py_TPFLAGS_BASETYPE,
  
    /* @tp_doc@ */
 -  "An elliptic curve over a prime field, using projective coordinates.",
 +"ECPrimeProjCurve(FIELD, A, B): an elliptic curve over a prime field\n\
 +  using projective coordinates.",
  
    0,                                  /* @tp_traverse@ */
    0,                                  /* @tp_clear@ */
@@@ -1260,8 -1256,7 +1260,8 @@@ static PyTypeObject ecbincurve_pytype_s
      Py_TPFLAGS_BASETYPE,
  
    /* @tp_doc@ */
 -  "An elliptic curve over a binary field.  Use ecbinprojcurve.",
 +"ECBinCurve(FIELD, A, B): an elliptic curve over a binary field.\n\
 +  Use ECBinProjCurve instead.",
  
    0,                                  /* @tp_traverse@ */
    0,                                  /* @tp_clear@ */
@@@ -1315,8 -1310,7 +1315,8 @@@ static PyTypeObject ecbinprojcurve_pyty
      Py_TPFLAGS_BASETYPE,
  
    /* @tp_doc@ */
 -  "An elliptic curve over a binary field, using projective coordinates.",
 +"ECBinProjCurve(FIELD, A, B): an elliptic curve over a binary field,\n\
 +  using projective coordinates.",
  
    0,                                  /* @tp_traverse@ */
    0,                                  /* @tp_clear@ */
@@@ -1377,10 -1371,10 +1377,10 @@@ static PyObject *ecinfo_pynew(PyTypeObj
  {
    ec_info ei = { 0 };
    PyObject *e, *g;
 -  char *kwlist[] = { "curve", "G", "r", "h", 0 };
 +  static const char *const kwlist[] = { "curve", "G", "r", "h", 0 };
    ecinfo_pyobj *rc = 0;
  
 -  if (!PyArg_ParseTupleAndKeywords(arg, kw, "O!O!O&O&:new", kwlist,
 +  if (!PyArg_ParseTupleAndKeywords(arg, kw, "O!O!O&O&:new", KWLIST,
                                   eccurve_pytype, &e, ecpt_pytype, &g,
                                   convmp, &ei.r, convmp, &ei.h))
      goto end;
  
  static PyObject *eimeth_check(PyObject *me, PyObject *arg, PyObject *kw)
  {
 -  char *kwlist[] = { "rng", 0 };
 +  static const char *const kwlist[] = { "rng", 0 };
    grand *r = &rand_global;
    const char *p;
  
 -  if (!PyArg_ParseTupleAndKeywords(arg, kw, "|O&:check", kwlist,
 +  if (!PyArg_ParseTupleAndKeywords(arg, kw, "|O&:check", KWLIST,
                                   convgrand, &r))
      goto end;
    if ((p = ec_checkinfo(ECINFO_EI(me), r)) != 0)
@@@ -1521,7 -1515,7 +1521,7 @@@ static PyTypeObject ecinfo_pytype_skel 
      Py_TPFLAGS_BASETYPE,
  
    /* @tp_doc@ */
 -  "Elliptic curve domain parameters.",
 +"ECInfo(CURVE, G, R, H): elliptic curve domain parameters.",
  
    0,                                  /* @tp_traverse@ */
    0,                                  /* @tp_clear@ */