From: Christian Heimes Date: Tue, 22 Oct 2013 13:05:23 +0000 (+0200) Subject: Issue #18742: Expose the internal hash type object for ABCs. X-Git-Tag: v3.4.0b1~571^2~1 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=327dd732ce2b7df001b0a052e3464c85f0c85128;p=python Issue #18742: Expose the internal hash type object for ABCs. --- diff --git a/Modules/_hashopenssl.c b/Modules/_hashopenssl.c index 222e5efe5e..423b3b3a47 100644 --- a/Modules/_hashopenssl.c +++ b/Modules/_hashopenssl.c @@ -872,10 +872,8 @@ PyInit__hashlib(void) return NULL; } -#if HASH_OBJ_CONSTRUCTOR - Py_INCREF(&EVPtype); + Py_INCREF((PyObject *)&EVPtype); PyModule_AddObject(m, "HASH", (PyObject *)&EVPtype); -#endif /* these constants are used by the convenience constructors */ INIT_CONSTRUCTOR_CONSTANTS(md5); diff --git a/Modules/_sha3/sha3module.c b/Modules/_sha3/sha3module.c index 4e6352b7ba..71127d0b76 100644 --- a/Modules/_sha3/sha3module.c +++ b/Modules/_sha3/sha3module.c @@ -576,10 +576,18 @@ static struct PyModuleDef _SHA3module = { PyMODINIT_FUNC PyInit__sha3(void) { + PyObject *m; + Py_TYPE(&SHA3type) = &PyType_Type; if (PyType_Ready(&SHA3type) < 0) { return NULL; } - return PyModule_Create(&_SHA3module); + m = PyModule_Create(&_SHA3module); + if (m == NULL) + return NULL; + + Py_INCREF((PyObject *)&SHA3type); + PyModule_AddObject(m, "SHA3Type", (PyObject *)&SHA3type); + return m; } diff --git a/Modules/md5module.c b/Modules/md5module.c index bb91b6c369..5cb3d36c9b 100644 --- a/Modules/md5module.c +++ b/Modules/md5module.c @@ -572,8 +572,17 @@ static struct PyModuleDef _md5module = { PyMODINIT_FUNC PyInit__md5(void) { + PyObject *m; + Py_TYPE(&MD5type) = &PyType_Type; if (PyType_Ready(&MD5type) < 0) return NULL; - return PyModule_Create(&_md5module); + + m = PyModule_Create(&_md5module); + if (m == NULL) + return NULL; + + Py_INCREF((PyObject *)&MD5type); + PyModule_AddObject(m, "MD5Type", (PyObject *)&MD5type); + return m; } diff --git a/Modules/sha1module.c b/Modules/sha1module.c index 403194c06b..b44fe189d2 100644 --- a/Modules/sha1module.c +++ b/Modules/sha1module.c @@ -544,8 +544,17 @@ static struct PyModuleDef _sha1module = { PyMODINIT_FUNC PyInit__sha1(void) { + PyObject *m; + Py_TYPE(&SHA1type) = &PyType_Type; if (PyType_Ready(&SHA1type) < 0) return NULL; - return PyModule_Create(&_sha1module); + + m = PyModule_Create(&_sha1module); + if (m == NULL) + return NULL; + + Py_INCREF((PyObject *)&SHA1type); + PyModule_AddObject(m, "SHA1Type", (PyObject *)&SHA1type); + return m; } diff --git a/Modules/sha256module.c b/Modules/sha256module.c index e60111ad02..b05bfc172f 100644 --- a/Modules/sha256module.c +++ b/Modules/sha256module.c @@ -706,11 +706,23 @@ static struct PyModuleDef _sha256module = { PyMODINIT_FUNC PyInit__sha256(void) { + PyObject *m; + Py_TYPE(&SHA224type) = &PyType_Type; if (PyType_Ready(&SHA224type) < 0) return NULL; Py_TYPE(&SHA256type) = &PyType_Type; if (PyType_Ready(&SHA256type) < 0) return NULL; - return PyModule_Create(&_sha256module); + + m = PyModule_Create(&_sha256module); + if (m == NULL) + return NULL; + + Py_INCREF((PyObject *)&SHA224type); + PyModule_AddObject(m, "SHA224Type", (PyObject *)&SHA224type); + Py_INCREF((PyObject *)&SHA256type); + PyModule_AddObject(m, "SHA256Type", (PyObject *)&SHA256type); + return m; + } diff --git a/Modules/sha512module.c b/Modules/sha512module.c index 2841eabb2b..47c57e5c42 100644 --- a/Modules/sha512module.c +++ b/Modules/sha512module.c @@ -772,13 +772,24 @@ static struct PyModuleDef _sha512module = { PyMODINIT_FUNC PyInit__sha512(void) { + PyObject *m; + Py_TYPE(&SHA384type) = &PyType_Type; if (PyType_Ready(&SHA384type) < 0) return NULL; Py_TYPE(&SHA512type) = &PyType_Type; if (PyType_Ready(&SHA512type) < 0) return NULL; - return PyModule_Create(&_sha512module); + + m = PyModule_Create(&_sha512module); + if (m == NULL) + return NULL; + + Py_INCREF((PyObject *)&SHA384type); + PyModule_AddObject(m, "SHA384Type", (PyObject *)&SHA384type); + Py_INCREF((PyObject *)&SHA512type); + PyModule_AddObject(m, "SHA512Type", (PyObject *)&SHA512type); + return m; } #endif