summaryrefslogtreecommitdiffstats
path: root/Modules/sha256module.c
diff options
context:
space:
mode:
authorGregory P. Smith <greg@mad-scientist.com>2010-01-02 22:28:48 (GMT)
committerGregory P. Smith <greg@mad-scientist.com>2010-01-02 22:28:48 (GMT)
commit443ec6875f04c8111832307c047409792cd445d1 (patch)
tree7e2f3a41bbbb494feda2b6831ce180410d5e952d /Modules/sha256module.c
parentc2fa18ca20e9ad1b8931eec61ece2a93e24766db (diff)
downloadcpython-443ec6875f04c8111832307c047409792cd445d1.zip
cpython-443ec6875f04c8111832307c047409792cd445d1.tar.gz
cpython-443ec6875f04c8111832307c047409792cd445d1.tar.bz2
Issue #3745: Undo the requirement for new buffer API only objects to be passed
to hashlib functions in python 2.x. The module now uses the 's*' for argument parsing which auto encodes unicode objects to the system default encoding for us.
Diffstat (limited to 'Modules/sha256module.c')
-rw-r--r--Modules/sha256module.c49
1 files changed, 16 insertions, 33 deletions
diff --git a/Modules/sha256module.c b/Modules/sha256module.c
index f489f48..b53d2ff 100644
--- a/Modules/sha256module.c
+++ b/Modules/sha256module.c
@@ -18,7 +18,6 @@
#include "Python.h"
#include "structmember.h"
-#include "hashlib.h"
/* Endianness testing and definitions */
@@ -481,19 +480,15 @@ PyDoc_STRVAR(SHA256_update__doc__,
static PyObject *
SHA256_update(SHAobject *self, PyObject *args)
{
- PyObject *obj;
Py_buffer buf;
- if (!PyArg_ParseTuple(args, "O:update", &obj))
+ if (!PyArg_ParseTuple(args, "s*:update", &buf))
return NULL;
- GET_BUFFER_VIEW_OR_ERROUT(obj, &buf, NULL);
-
sha_update(self, buf.buf, buf.len);
PyBuffer_Release(&buf);
- Py_INCREF(Py_None);
- return Py_None;
+ Py_RETURN_NONE;
}
static PyMethodDef SHA_methods[] = {
@@ -618,20 +613,15 @@ SHA256_new(PyObject *self, PyObject *args, PyObject *kwdict)
{
static char *kwlist[] = {"string", NULL};
SHAobject *new;
- PyObject *data_obj = NULL;
- Py_buffer buf;
+ Py_buffer buf = { 0 };
- if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|O:new", kwlist,
- &data_obj)) {
+ if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|s*:new", kwlist,
+ &buf)) {
return NULL;
}
- if (data_obj)
- GET_BUFFER_VIEW_OR_ERROUT(data_obj, &buf, NULL);
-
if ((new = newSHA256object()) == NULL) {
- if (data_obj)
- PyBuffer_Release(&buf);
+ PyBuffer_Release(&buf);
return NULL;
}
@@ -639,14 +629,13 @@ SHA256_new(PyObject *self, PyObject *args, PyObject *kwdict)
if (PyErr_Occurred()) {
Py_DECREF(new);
- if (data_obj)
- PyBuffer_Release(&buf);
+ PyBuffer_Release(&buf);
return NULL;
}
- if (data_obj) {
+ if (buf.len > 0) {
sha_update(new, buf.buf, buf.len);
- PyBuffer_Release(&buf);
}
+ PyBuffer_Release(&buf);
return (PyObject *)new;
}
@@ -659,20 +648,15 @@ SHA224_new(PyObject *self, PyObject *args, PyObject *kwdict)
{
static char *kwlist[] = {"string", NULL};
SHAobject *new;
- PyObject *data_obj = NULL;
- Py_buffer buf;
+ Py_buffer buf = { 0 };
- if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|O:new", kwlist,
- &data_obj)) {
+ if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|s*:new", kwlist,
+ &buf)) {
return NULL;
}
- if (data_obj)
- GET_BUFFER_VIEW_OR_ERROUT(data_obj, &buf, NULL);
-
if ((new = newSHA224object()) == NULL) {
- if (data_obj)
- PyBuffer_Release(&buf);
+ PyBuffer_Release(&buf);
return NULL;
}
@@ -680,14 +664,13 @@ SHA224_new(PyObject *self, PyObject *args, PyObject *kwdict)
if (PyErr_Occurred()) {
Py_DECREF(new);
- if (data_obj)
- PyBuffer_Release(&buf);
+ PyBuffer_Release(&buf);
return NULL;
}
- if (data_obj) {
+ if (buf.len > 0) {
sha_update(new, buf.buf, buf.len);
- PyBuffer_Release(&buf);
}
+ PyBuffer_Release(&buf);
return (PyObject *)new;
}