summaryrefslogtreecommitdiff
path: root/Modules/sha512module.c
diff options
context:
space:
mode:
authorGregory P. Smith <greg@mad-scientist.com>2010-01-02 22:28:48 +0000
committerGregory P. Smith <greg@mad-scientist.com>2010-01-02 22:28:48 +0000
commit443ec6875f04c8111832307c047409792cd445d1 (patch)
tree7e2f3a41bbbb494feda2b6831ce180410d5e952d /Modules/sha512module.c
parentc2fa18ca20e9ad1b8931eec61ece2a93e24766db (diff)
downloadcpython-git-443ec6875f04c8111832307c047409792cd445d1.tar.gz
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/sha512module.c')
-rw-r--r--Modules/sha512module.c49
1 files changed, 16 insertions, 33 deletions
diff --git a/Modules/sha512module.c b/Modules/sha512module.c
index 24812752f8..4e8368b75c 100644
--- a/Modules/sha512module.c
+++ b/Modules/sha512module.c
@@ -18,7 +18,6 @@
#include "Python.h"
#include "structmember.h"
-#include "hashlib.h"
#ifdef PY_LONG_LONG /* If no PY_LONG_LONG, don't compile anything! */
@@ -547,19 +546,15 @@ PyDoc_STRVAR(SHA512_update__doc__,
static PyObject *
SHA512_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);
-
sha512_update(self, buf.buf, buf.len);
PyBuffer_Release(&buf);
- Py_INCREF(Py_None);
- return Py_None;
+ Py_RETURN_NONE;
}
static PyMethodDef SHA_methods[] = {
@@ -684,20 +679,15 @@ SHA512_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 = newSHA512object()) == NULL) {
- if (data_obj)
- PyBuffer_Release(&buf);
+ PyBuffer_Release(&buf);
return NULL;
}
@@ -705,14 +695,13 @@ SHA512_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) {
sha512_update(new, buf.buf, buf.len);
- PyBuffer_Release(&buf);
}
+ PyBuffer_Release(&buf);
return (PyObject *)new;
}
@@ -725,20 +714,15 @@ SHA384_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 = newSHA384object()) == NULL) {
- if (data_obj)
- PyBuffer_Release(&buf);
+ PyBuffer_Release(&buf);
return NULL;
}
@@ -746,14 +730,13 @@ SHA384_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) {
sha512_update(new, buf.buf, buf.len);
- PyBuffer_Release(&buf);
}
+ PyBuffer_Release(&buf);
return (PyObject *)new;
}