mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
Issue #8321: Give access to OpenSSL version numbers from the ssl
module,
using the new attributes `ssl.OPENSSL_VERSION`, `ssl.OPENSSL_VERSION_INFO` and `ssl.OPENSSL_VERSION_NUMBER`.
This commit is contained in:
parent
fce1d31d47
commit
f9de534c21
5 changed files with 92 additions and 1 deletions
|
@ -1574,7 +1574,9 @@ for documentation.");
|
|||
PyMODINIT_FUNC
|
||||
init_ssl(void)
|
||||
{
|
||||
PyObject *m, *d;
|
||||
PyObject *m, *d, *r;
|
||||
unsigned long libver;
|
||||
unsigned int major, minor, fix, patch, status;
|
||||
|
||||
Py_TYPE(&PySSL_Type) = &PyType_Type;
|
||||
|
||||
|
@ -1644,4 +1646,30 @@ init_ssl(void)
|
|||
PY_SSL_VERSION_SSL23);
|
||||
PyModule_AddIntConstant(m, "PROTOCOL_TLSv1",
|
||||
PY_SSL_VERSION_TLS1);
|
||||
|
||||
/* OpenSSL version */
|
||||
/* SSLeay() gives us the version of the library linked against,
|
||||
which could be different from the headers version.
|
||||
*/
|
||||
libver = SSLeay();
|
||||
r = PyLong_FromUnsignedLong(libver);
|
||||
if (r == NULL)
|
||||
return;
|
||||
if (PyModule_AddObject(m, "OPENSSL_VERSION_NUMBER", r))
|
||||
return;
|
||||
status = libver & 0xF;
|
||||
libver >>= 4;
|
||||
patch = libver & 0xFF;
|
||||
libver >>= 8;
|
||||
fix = libver & 0xFF;
|
||||
libver >>= 8;
|
||||
minor = libver & 0xFF;
|
||||
libver >>= 8;
|
||||
major = libver & 0xFF;
|
||||
r = Py_BuildValue("IIIII", major, minor, fix, patch, status);
|
||||
if (r == NULL || PyModule_AddObject(m, "OPENSSL_VERSION_INFO", r))
|
||||
return;
|
||||
r = PyString_FromString(SSLeay_version(SSLEAY_VERSION));
|
||||
if (r == NULL || PyModule_AddObject(m, "OPENSSL_VERSION", r))
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue