Commit 990fcaac authored by Benjamin Peterson's avatar Benjamin Peterson

expose X509_V_FLAG_TRUSTED_FIRST

parent fdb19715
...@@ -499,9 +499,9 @@ Constants ...@@ -499,9 +499,9 @@ Constants
.. data:: VERIFY_DEFAULT .. data:: VERIFY_DEFAULT
Possible value for :attr:`SSLContext.verify_flags`. In this mode, Possible value for :attr:`SSLContext.verify_flags`. In this mode, certificate
certificate revocation lists (CRLs) are not checked. By default OpenSSL revocation lists (CRLs) are not checked. By default OpenSSL does neither
does neither require nor verify CRLs. require nor verify CRLs.
.. versionadded:: 3.4 .. versionadded:: 3.4
...@@ -529,6 +529,14 @@ Constants ...@@ -529,6 +529,14 @@ Constants
.. versionadded:: 3.4 .. versionadded:: 3.4
.. data:: VERIFY_X509_TRUSTED_FIRST
Possible value for :attr:`SSLContext.verify_flags`. It instructs OpenSSL to
prefer trusted certificates when building the trust chain to validate a
certificate. This flag is enabled by default.
.. versionadded:: 3.4.5
.. data:: PROTOCOL_SSLv23 .. data:: PROTOCOL_SSLv23
Selects the highest protocol version that both the client and server support. Selects the highest protocol version that both the client and server support.
......
...@@ -710,8 +710,9 @@ class ContextTests(unittest.TestCase): ...@@ -710,8 +710,9 @@ class ContextTests(unittest.TestCase):
"verify_flags need OpenSSL > 0.9.8") "verify_flags need OpenSSL > 0.9.8")
def test_verify_flags(self): def test_verify_flags(self):
ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1) ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
# default value by OpenSSL # default value
self.assertEqual(ctx.verify_flags, ssl.VERIFY_DEFAULT) tf = getattr(ssl, "VERIFY_X509_TRUSTED_FIRST", 0)
self.assertEqual(ctx.verify_flags, ssl.VERIFY_DEFAULT | tf)
ctx.verify_flags = ssl.VERIFY_CRL_CHECK_LEAF ctx.verify_flags = ssl.VERIFY_CRL_CHECK_LEAF
self.assertEqual(ctx.verify_flags, ssl.VERIFY_CRL_CHECK_LEAF) self.assertEqual(ctx.verify_flags, ssl.VERIFY_CRL_CHECK_LEAF)
ctx.verify_flags = ssl.VERIFY_CRL_CHECK_CHAIN ctx.verify_flags = ssl.VERIFY_CRL_CHECK_CHAIN
......
...@@ -4004,6 +4004,10 @@ PyInit__ssl(void) ...@@ -4004,6 +4004,10 @@ PyInit__ssl(void)
X509_V_FLAG_CRL_CHECK|X509_V_FLAG_CRL_CHECK_ALL); X509_V_FLAG_CRL_CHECK|X509_V_FLAG_CRL_CHECK_ALL);
PyModule_AddIntConstant(m, "VERIFY_X509_STRICT", PyModule_AddIntConstant(m, "VERIFY_X509_STRICT",
X509_V_FLAG_X509_STRICT); X509_V_FLAG_X509_STRICT);
#ifdef X509_V_FLAG_TRUSTED_FIRST
PyModule_AddIntConstant(m, "VERIFY_X509_TRUSTED_FIRST",
X509_V_FLAG_TRUSTED_FIRST);
#endif
/* Alert Descriptions from ssl.h */ /* Alert Descriptions from ssl.h */
/* note RESERVED constants no longer intended for use have been removed */ /* note RESERVED constants no longer intended for use have been removed */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment