diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2018-07-26 10:22:16 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-26 10:22:16 (GMT) |
commit | 7cb7bcff20a386bba59cbc51e2419542de358bd2 (patch) | |
tree | f5d46faf7a7ddd3b427de7de8a74a1fb37fe2993 /Modules/_blake2 | |
parent | 323748ad7446c76972c80dbbf510534dc5c22ae8 (diff) | |
download | cpython-7cb7bcff20a386bba59cbc51e2419542de358bd2.zip cpython-7cb7bcff20a386bba59cbc51e2419542de358bd2.tar.gz cpython-7cb7bcff20a386bba59cbc51e2419542de358bd2.tar.bz2 |
bpo-20260: Implement non-bitwise unsigned int converters for Argument Clinic. (GH-8434)
Diffstat (limited to 'Modules/_blake2')
-rw-r--r-- | Modules/_blake2/blake2b_impl.c | 31 | ||||
-rw-r--r-- | Modules/_blake2/blake2s_impl.c | 31 | ||||
-rw-r--r-- | Modules/_blake2/clinic/blake2b_impl.c.h | 18 | ||||
-rw-r--r-- | Modules/_blake2/clinic/blake2s_impl.c.h | 18 |
4 files changed, 34 insertions, 64 deletions
diff --git a/Modules/_blake2/blake2b_impl.c b/Modules/_blake2/blake2b_impl.c index 822b9f2..92d7c5c 100644 --- a/Modules/_blake2/blake2b_impl.c +++ b/Modules/_blake2/blake2b_impl.c @@ -75,8 +75,8 @@ _blake2b.blake2b.__new__ as py_blake2b_new person: Py_buffer = None fanout: int = 1 depth: int = 1 - leaf_size as leaf_size_obj: object = NULL - node_offset as node_offset_obj: object = NULL + leaf_size: unsigned_long = 0 + node_offset: unsigned_long_long = 0 node_depth: int = 0 inner_size: int = 0 last_node: bool = False @@ -87,17 +87,14 @@ Return a new BLAKE2b hash object. static PyObject * py_blake2b_new_impl(PyTypeObject *type, PyObject *data, int digest_size, Py_buffer *key, Py_buffer *salt, Py_buffer *person, - int fanout, int depth, PyObject *leaf_size_obj, - PyObject *node_offset_obj, int node_depth, + int fanout, int depth, unsigned long leaf_size, + unsigned long long node_offset, int node_depth, int inner_size, int last_node) -/*[clinic end generated code: output=7506d8d890e5f13b input=e41548dfa0866031]*/ +/*[clinic end generated code: output=65e732c66c2297a0 input=75ab5196b695adee]*/ { BLAKE2bObject *self = NULL; Py_buffer buf; - unsigned long leaf_size = 0; - unsigned long long node_offset = 0; - self = new_BLAKE2bObject(type); if (self == NULL) { goto error; @@ -152,25 +149,13 @@ py_blake2b_new_impl(PyTypeObject *type, PyObject *data, int digest_size, } self->param.depth = (uint8_t)depth; - if (leaf_size_obj != NULL) { - leaf_size = PyLong_AsUnsignedLong(leaf_size_obj); - if (leaf_size == (unsigned long) -1 && PyErr_Occurred()) { - goto error; - } - if (leaf_size > 0xFFFFFFFFU) { - PyErr_SetString(PyExc_OverflowError, "leaf_size is too large"); - goto error; - } + if (leaf_size > 0xFFFFFFFFU) { + PyErr_SetString(PyExc_OverflowError, "leaf_size is too large"); + goto error; } // NB: Simple assignment here would be incorrect on big endian platforms. store32(&(self->param.leaf_length), leaf_size); - if (node_offset_obj != NULL) { - node_offset = PyLong_AsUnsignedLongLong(node_offset_obj); - if (node_offset == (unsigned long long) -1 && PyErr_Occurred()) { - goto error; - } - } #ifdef HAVE_BLAKE2S if (node_offset > 0xFFFFFFFFFFFFULL) { /* maximum 2**48 - 1 */ diff --git a/Modules/_blake2/blake2s_impl.c b/Modules/_blake2/blake2s_impl.c index 3b76c9c..8c49082 100644 --- a/Modules/_blake2/blake2s_impl.c +++ b/Modules/_blake2/blake2s_impl.c @@ -75,8 +75,8 @@ _blake2s.blake2s.__new__ as py_blake2s_new person: Py_buffer = None fanout: int = 1 depth: int = 1 - leaf_size as leaf_size_obj: object = NULL - node_offset as node_offset_obj: object = NULL + leaf_size: unsigned_long = 0 + node_offset: unsigned_long_long = 0 node_depth: int = 0 inner_size: int = 0 last_node: bool = False @@ -87,17 +87,14 @@ Return a new BLAKE2s hash object. static PyObject * py_blake2s_new_impl(PyTypeObject *type, PyObject *data, int digest_size, Py_buffer *key, Py_buffer *salt, Py_buffer *person, - int fanout, int depth, PyObject *leaf_size_obj, - PyObject *node_offset_obj, int node_depth, + int fanout, int depth, unsigned long leaf_size, + unsigned long long node_offset, int node_depth, int inner_size, int last_node) -/*[clinic end generated code: output=fe060b258a8cbfc6 input=458cfdcb3d0d47ff]*/ +/*[clinic end generated code: output=b95806be0514dcf7 input=f18d6efd9b9a1271]*/ { BLAKE2sObject *self = NULL; Py_buffer buf; - unsigned long leaf_size = 0; - unsigned long long node_offset = 0; - self = new_BLAKE2sObject(type); if (self == NULL) { goto error; @@ -152,25 +149,13 @@ py_blake2s_new_impl(PyTypeObject *type, PyObject *data, int digest_size, } self->param.depth = (uint8_t)depth; - if (leaf_size_obj != NULL) { - leaf_size = PyLong_AsUnsignedLong(leaf_size_obj); - if (leaf_size == (unsigned long) -1 && PyErr_Occurred()) { - goto error; - } - if (leaf_size > 0xFFFFFFFFU) { - PyErr_SetString(PyExc_OverflowError, "leaf_size is too large"); - goto error; - } + if (leaf_size > 0xFFFFFFFFU) { + PyErr_SetString(PyExc_OverflowError, "leaf_size is too large"); + goto error; } // NB: Simple assignment here would be incorrect on big endian platforms. store32(&(self->param.leaf_length), leaf_size); - if (node_offset_obj != NULL) { - node_offset = PyLong_AsUnsignedLongLong(node_offset_obj); - if (node_offset == (unsigned long long) -1 && PyErr_Occurred()) { - goto error; - } - } #ifdef HAVE_BLAKE2S if (node_offset > 0xFFFFFFFFFFFFULL) { /* maximum 2**48 - 1 */ diff --git a/Modules/_blake2/clinic/blake2b_impl.c.h b/Modules/_blake2/clinic/blake2b_impl.c.h index 71c073a..3cb70fb 100644 --- a/Modules/_blake2/clinic/blake2b_impl.c.h +++ b/Modules/_blake2/clinic/blake2b_impl.c.h @@ -5,7 +5,7 @@ preserve PyDoc_STRVAR(py_blake2b_new__doc__, "blake2b(string=None, *, digest_size=_blake2b.blake2b.MAX_DIGEST_SIZE,\n" " key=None, salt=None, person=None, fanout=1, depth=1,\n" -" leaf_size=None, node_offset=None, node_depth=0, inner_size=0,\n" +" leaf_size=0, node_offset=0, node_depth=0, inner_size=0,\n" " last_node=False)\n" "--\n" "\n" @@ -14,8 +14,8 @@ PyDoc_STRVAR(py_blake2b_new__doc__, static PyObject * py_blake2b_new_impl(PyTypeObject *type, PyObject *data, int digest_size, Py_buffer *key, Py_buffer *salt, Py_buffer *person, - int fanout, int depth, PyObject *leaf_size_obj, - PyObject *node_offset_obj, int node_depth, + int fanout, int depth, unsigned long leaf_size, + unsigned long long node_offset, int node_depth, int inner_size, int last_node); static PyObject * @@ -23,7 +23,7 @@ py_blake2b_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) { PyObject *return_value = NULL; static const char * const _keywords[] = {"string", "digest_size", "key", "salt", "person", "fanout", "depth", "leaf_size", "node_offset", "node_depth", "inner_size", "last_node", NULL}; - static _PyArg_Parser _parser = {"|O$iy*y*y*iiOOiip:blake2b", _keywords, 0}; + static _PyArg_Parser _parser = {"|O$iy*y*y*iiO&O&iip:blake2b", _keywords, 0}; PyObject *data = NULL; int digest_size = BLAKE2B_OUTBYTES; Py_buffer key = {NULL, NULL}; @@ -31,17 +31,17 @@ py_blake2b_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) Py_buffer person = {NULL, NULL}; int fanout = 1; int depth = 1; - PyObject *leaf_size_obj = NULL; - PyObject *node_offset_obj = NULL; + unsigned long leaf_size = 0; + unsigned long long node_offset = 0; int node_depth = 0; int inner_size = 0; int last_node = 0; if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser, - &data, &digest_size, &key, &salt, &person, &fanout, &depth, &leaf_size_obj, &node_offset_obj, &node_depth, &inner_size, &last_node)) { + &data, &digest_size, &key, &salt, &person, &fanout, &depth, _PyLong_UnsignedLong_Converter, &leaf_size, _PyLong_UnsignedLongLong_Converter, &node_offset, &node_depth, &inner_size, &last_node)) { goto exit; } - return_value = py_blake2b_new_impl(type, data, digest_size, &key, &salt, &person, fanout, depth, leaf_size_obj, node_offset_obj, node_depth, inner_size, last_node); + return_value = py_blake2b_new_impl(type, data, digest_size, &key, &salt, &person, fanout, depth, leaf_size, node_offset, node_depth, inner_size, last_node); exit: /* Cleanup for key */ @@ -122,4 +122,4 @@ _blake2b_blake2b_hexdigest(BLAKE2bObject *self, PyObject *Py_UNUSED(ignored)) { return _blake2b_blake2b_hexdigest_impl(self); } -/*[clinic end generated code: output=535a54852c98e51c input=a9049054013a1b77]*/ +/*[clinic end generated code: output=afc5c45dff0a24f9 input=a9049054013a1b77]*/ diff --git a/Modules/_blake2/clinic/blake2s_impl.c.h b/Modules/_blake2/clinic/blake2s_impl.c.h index ca908d3..b444f7b 100644 --- a/Modules/_blake2/clinic/blake2s_impl.c.h +++ b/Modules/_blake2/clinic/blake2s_impl.c.h @@ -5,7 +5,7 @@ preserve PyDoc_STRVAR(py_blake2s_new__doc__, "blake2s(string=None, *, digest_size=_blake2s.blake2s.MAX_DIGEST_SIZE,\n" " key=None, salt=None, person=None, fanout=1, depth=1,\n" -" leaf_size=None, node_offset=None, node_depth=0, inner_size=0,\n" +" leaf_size=0, node_offset=0, node_depth=0, inner_size=0,\n" " last_node=False)\n" "--\n" "\n" @@ -14,8 +14,8 @@ PyDoc_STRVAR(py_blake2s_new__doc__, static PyObject * py_blake2s_new_impl(PyTypeObject *type, PyObject *data, int digest_size, Py_buffer *key, Py_buffer *salt, Py_buffer *person, - int fanout, int depth, PyObject *leaf_size_obj, - PyObject *node_offset_obj, int node_depth, + int fanout, int depth, unsigned long leaf_size, + unsigned long long node_offset, int node_depth, int inner_size, int last_node); static PyObject * @@ -23,7 +23,7 @@ py_blake2s_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) { PyObject *return_value = NULL; static const char * const _keywords[] = {"string", "digest_size", "key", "salt", "person", "fanout", "depth", "leaf_size", "node_offset", "node_depth", "inner_size", "last_node", NULL}; - static _PyArg_Parser _parser = {"|O$iy*y*y*iiOOiip:blake2s", _keywords, 0}; + static _PyArg_Parser _parser = {"|O$iy*y*y*iiO&O&iip:blake2s", _keywords, 0}; PyObject *data = NULL; int digest_size = BLAKE2S_OUTBYTES; Py_buffer key = {NULL, NULL}; @@ -31,17 +31,17 @@ py_blake2s_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) Py_buffer person = {NULL, NULL}; int fanout = 1; int depth = 1; - PyObject *leaf_size_obj = NULL; - PyObject *node_offset_obj = NULL; + unsigned long leaf_size = 0; + unsigned long long node_offset = 0; int node_depth = 0; int inner_size = 0; int last_node = 0; if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser, - &data, &digest_size, &key, &salt, &person, &fanout, &depth, &leaf_size_obj, &node_offset_obj, &node_depth, &inner_size, &last_node)) { + &data, &digest_size, &key, &salt, &person, &fanout, &depth, _PyLong_UnsignedLong_Converter, &leaf_size, _PyLong_UnsignedLongLong_Converter, &node_offset, &node_depth, &inner_size, &last_node)) { goto exit; } - return_value = py_blake2s_new_impl(type, data, digest_size, &key, &salt, &person, fanout, depth, leaf_size_obj, node_offset_obj, node_depth, inner_size, last_node); + return_value = py_blake2s_new_impl(type, data, digest_size, &key, &salt, &person, fanout, depth, leaf_size, node_offset, node_depth, inner_size, last_node); exit: /* Cleanup for key */ @@ -122,4 +122,4 @@ _blake2s_blake2s_hexdigest(BLAKE2sObject *self, PyObject *Py_UNUSED(ignored)) { return _blake2s_blake2s_hexdigest_impl(self); } -/*[clinic end generated code: output=535ea7903f9ccf76 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=b705723d16f21f57 input=a9049054013a1b77]*/ |