md5_hexdigest(): After a brief conversation with TP, added hexdigest()
to this module to mirror sha's hexdigest() method.
This commit is contained in:
parent
34c391d743
commit
3ec0fbb299
|
@ -81,7 +81,6 @@ arguments.";
|
||||||
static PyObject *
|
static PyObject *
|
||||||
md5_digest(md5object *self, PyObject *args)
|
md5_digest(md5object *self, PyObject *args)
|
||||||
{
|
{
|
||||||
|
|
||||||
MD5_CTX mdContext;
|
MD5_CTX mdContext;
|
||||||
unsigned char aDigest[16];
|
unsigned char aDigest[16];
|
||||||
|
|
||||||
|
@ -103,6 +102,41 @@ far. This is an 16-byte string which may contain non-ASCII characters,\n\
|
||||||
including null bytes.";
|
including null bytes.";
|
||||||
|
|
||||||
|
|
||||||
|
static PyObject *
|
||||||
|
md5_hexdigest(md5object *self, PyObject *args)
|
||||||
|
{
|
||||||
|
MD5_CTX mdContext;
|
||||||
|
unsigned char digest[16];
|
||||||
|
unsigned char hexdigest[32];
|
||||||
|
int i, j;
|
||||||
|
|
||||||
|
if (!PyArg_NoArgs(args))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
/* make a temporary copy, and perform the final */
|
||||||
|
mdContext = self->md5;
|
||||||
|
MD5Final(digest, &mdContext);
|
||||||
|
|
||||||
|
/* Make hex version of the digest */
|
||||||
|
for(i=j=0; i<16; i++) {
|
||||||
|
char c;
|
||||||
|
c = (digest[i] >> 4) & 0xf;
|
||||||
|
c = (c>9) ? c+'a'-10 : c + '0';
|
||||||
|
hexdigest[j++] = c;
|
||||||
|
c = (digest[i] & 0xf);
|
||||||
|
c = (c>9) ? c+'a'-10 : c + '0';
|
||||||
|
hexdigest[j++] = c;
|
||||||
|
}
|
||||||
|
return PyString_FromStringAndSize((char*)hexdigest, 32);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static char hexdigest_doc [] =
|
||||||
|
"hexdigest() -> string\n\
|
||||||
|
\n\
|
||||||
|
Like digest(), but returns the digest as a string of hexadecimal digits.";
|
||||||
|
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
md5_copy(md5object *self, PyObject *args)
|
md5_copy(md5object *self, PyObject *args)
|
||||||
{
|
{
|
||||||
|
@ -126,12 +160,10 @@ Return a copy (``clone'') of the md5 object.";
|
||||||
|
|
||||||
|
|
||||||
static PyMethodDef md5_methods[] = {
|
static PyMethodDef md5_methods[] = {
|
||||||
{"update", (PyCFunction)md5_update,
|
{"update", (PyCFunction)md5_update, METH_OLDARGS, update_doc},
|
||||||
METH_OLDARGS, update_doc},
|
{"digest", (PyCFunction)md5_digest, METH_OLDARGS, digest_doc},
|
||||||
{"digest", (PyCFunction)md5_digest,
|
{"hexdigest", (PyCFunction)md5_hexdigest, METH_OLDARGS, hexdigest_doc},
|
||||||
METH_OLDARGS, digest_doc},
|
{"copy", (PyCFunction)md5_copy, METH_OLDARGS, copy_doc},
|
||||||
{"copy", (PyCFunction)md5_copy,
|
|
||||||
METH_OLDARGS, copy_doc},
|
|
||||||
{NULL, NULL} /* sentinel */
|
{NULL, NULL} /* sentinel */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue