}; static PyObject *SHA256_get_block_size(PyObject *self, void *closure){ return PyInt_FromLong(SHA_BLOCKSIZE);} static PyObject *SHA256_get_name(PyObject *self, void *closure){ if (((SHAobject *)self)->digestsize == 32) return PyString_FromStringAndSize("SHA256", 6); else return PyString_FromStringAndSize("SHA224", 6);} static PyGetSetDef SHA_getseters[] = { {"block_size", (getter)SHA256_get_block_size, NULL, NULL, NULL}, {"name", (getter)SHA256_get_name, NULL, NULL, NULL}, {NULL} /* Sentinel */}; static PyMemberDef SHA_members[] = { {"digest_size", T_INT, offsetof(SHAobject, digestsize), READONLY, NULL}, /* the old md5 and sha modules support 'digest_size' as in PEP 247. * the old sha module also supported 'digestsize'. ugh. */ {"digestsize", T_INT, offsetof(SHAobject, digestsize), READONLY, NULL}, {NULL} /* Sentinel */}; static PyTypeObject SHA224type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ "_sha256.sha224", /*tp_name*/ sizeof(SHAobject), /*tp_size*/ 0, /*tp_itemsize*/ /* methods */ SHA_dealloc, /*tp_dealloc*/ 0, /*tp_print*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ 0, /*tp_compare*/ 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT, /*tp_flags*/ 0, /*tp_doc*/ 0, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ SHA_methods, /* tp_methods */ SHA_members, /* tp_members */ SHA_getseters, /* tp_getset */}; static PyTypeObject SHA256type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ "_sha256.sha256", /*tp_name*/ sizeof(SHAobject), /*tp_size*/ 0, /*tp_itemsize*/ /* methods */ SHA_dealloc, /*tp_dealloc*/ 0, /*tp_print*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ 0, /*tp_compare*/ 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT, /*tp_flags*/ 0, /*tp_doc*/ 0, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ SHA_methods, /* tp_methods */ SHA_members, /* tp_members */ SHA_getseters, /* tp_getset */}; /* The single module-level function: new() */ PyDoc_STRVAR(SHA256_new__doc__,"Return a new SHA-256 hash object; optionally initialized with a string."); static PyObject *SHA256_new(PyObject *self, PyObject *args, PyObject *kwdict){ static char *kwlist[] = {"string", NULL}; SHAobject *new; unsigned char *cp = NULL; int len; if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|s#:new", kwlist, &cp, &len)) { return NULL; } if ((new = newSHA256object()) == NULL) return NULL; sha_init(new); if (PyErr_Occurred()) { Py_DECREF(new); return NULL; } if (cp) sha_update(new, cp, len); return (PyObject *)new;} PyDoc_STRVAR(SHA224_new__doc__,"Return a new SHA-224 hash object; optionally initialized with a string."); static PyObject *SHA224_new(PyObject *self, PyObject *args, PyObject *kwdict){ static char *kwlist[] = {"string", NULL}; SHAobject *new; unsigned char *cp = NULL; int len; if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|s#:new", kwlist, &cp, &len)) { return NULL; } if ((new = newSHA224object()) == NULL) return NULL; sha224_init(new); if (PyErr_Occurred()) { Py_DECREF(new); return NULL; } if (cp) sha_update(new, cp, len); return (PyObject *)new;} /* List of functions exported by this module */ static struct PyMethodDef SHA_functions[] = { {"sha256", (PyCFunction)SHA256_new, METH_VARARGS|METH_KEYWORDS, SHA256_new__doc__}, {"sha224", (PyCFunction)SHA224_new, METH_VARARGS|METH_KEYWORDS, SHA224_new__doc__}, {NULL, NULL} /* Sentinel */}; /* Initialize this module. */ #define insint(n,v) { PyModule_AddIntConstant(m,n,v); } PyMODINIT_FUNCinit_sha256(void){ PyObject *m; SHA224type.ob_type = &PyType_Type; if (PyType_Ready(&SHA224type) < 0) return; SHA256type.ob_type = &PyType_Type; if (PyType_Ready(&SHA256type) < 0) return; m = Py_InitModule("_sha256", SHA_functions); if (m == NULL) return;}Lines 501–701 of 701. Previous lines
}; static PyObject * SHA256_get_block_size(PyObject *self, void *closure) { return PyInt_FromLong(SHA_BLOCKSIZE); } static PyObject * SHA256_get_name(PyObject *self, void *closure) { if (((SHAobject *)self)->digestsize == 32) return PyString_FromStringAndSize("SHA256", 6); else return PyString_FromStringAndSize("SHA224", 6); } static PyGetSetDef SHA_getseters[] = { {"block_size", (getter)SHA256_get_block_size, NULL, NULL, NULL}, {"name", (getter)SHA256_get_name, NULL, NULL, NULL}, {NULL} /* Sentinel */ }; static PyMemberDef SHA_members[] = { {"digest_size", T_INT, offsetof(SHAobject, digestsize), READONLY, NULL}, /* the old md5 and sha modules support 'digest_size' as in PEP 247. * the old sha module also supported 'digestsize'. ugh. */ {"digestsize", T_INT, offsetof(SHAobject, digestsize), READONLY, NULL}, {NULL} /* Sentinel */ }; static PyTypeObject SHA224type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ "_sha256.sha224", /*tp_name*/ sizeof(SHAobject), /*tp_size*/ 0, /*tp_itemsize*/ /* methods */ SHA_dealloc, /*tp_dealloc*/ 0, /*tp_print*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ 0, /*tp_compare*/ 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT, /*tp_flags*/ 0, /*tp_doc*/ 0, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ SHA_methods, /* tp_methods */ SHA_members, /* tp_members */ SHA_getseters, /* tp_getset */ }; static PyTypeObject SHA256type = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ "_sha256.sha256", /*tp_name*/ sizeof(SHAobject), /*tp_size*/ 0, /*tp_itemsize*/ /* methods */ SHA_dealloc, /*tp_dealloc*/ 0, /*tp_print*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ 0, /*tp_compare*/ 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT, /*tp_flags*/ 0, /*tp_doc*/ 0, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ SHA_methods, /* tp_methods */ SHA_members, /* tp_members */ SHA_getseters, /* tp_getset */ }; /* The single module-level function: new() */ PyDoc_STRVAR(SHA256_new__doc__, "Return a new SHA-256 hash object; optionally initialized with a string."); static PyObject * SHA256_new(PyObject *self, PyObject *args, PyObject *kwdict) { static char *kwlist[] = {"string", NULL}; SHAobject *new; unsigned char *cp = NULL; int len; if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|s#:new", kwlist, &cp, &len)) { return NULL; } if ((new = newSHA256object()) == NULL) return NULL; sha_init(new); if (PyErr_Occurred()) { Py_DECREF(new); return NULL; } if (cp) sha_update(new, cp, len); return (PyObject *)new; } PyDoc_STRVAR(SHA224_new__doc__, "Return a new SHA-224 hash object; optionally initialized with a string."); static PyObject * SHA224_new(PyObject *self, PyObject *args, PyObject *kwdict) { static char *kwlist[] = {"string", NULL}; SHAobject *new; unsigned char *cp = NULL; int len; if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|s#:new", kwlist, &cp, &len)) { return NULL; } if ((new = newSHA224object()) == NULL) return NULL; sha224_init(new); if (PyErr_Occurred()) { Py_DECREF(new); return NULL; } if (cp) sha_update(new, cp, len); return (PyObject *)new; } /* List of functions exported by this module */ static struct PyMethodDef SHA_functions[] = { {"sha256", (PyCFunction)SHA256_new, METH_VARARGS|METH_KEYWORDS, SHA256_new__doc__}, {"sha224", (PyCFunction)SHA224_new, METH_VARARGS|METH_KEYWORDS, SHA224_new__doc__}, {NULL, NULL} /* Sentinel */ }; /* Initialize this module. */ #define insint(n,v) { PyModule_AddIntConstant(m,n,v); } PyMODINIT_FUNC init_sha256(void) { PyObject *m; SHA224type.ob_type = &PyType_Type; if (PyType_Ready(&SHA224type) < 0) return; SHA256type.ob_type = &PyType_Type; if (PyType_Ready(&SHA256type) < 0) return; m = Py_InitModule("_sha256", SHA_functions); if (m == NULL) return; }