##// END OF EJS Templates
win32: add a method to trigger the Crypto API to complete a certificate chain...
win32: add a method to trigger the Crypto API to complete a certificate chain I started a thread[1] on the mailing list awhile ago, but the short version is that Windows doesn't ship with a full list of certificates[2]. Even if the server sends the whole chain, if Windows doesn't have the appropriate certificate pre-installed in its "Third-Party Root Certification Authorities" store, connections mysteriously fail with: abort: error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661) Windows expects the application to call the methods invoked here as part of the certificate verification, triggering a call out to Windows update if necessary, to complete the trust chain. The python bug to add this support[3] hasn't had any recent activity, and isn't targeting py27 anyway. The only work around that I could find (besides figuring out the certificate and walking through the import wizard) is to browse to the site in Internet Explorer. Opening the page with FireFox or Chrome didn't work. That's a pretty obscure way to fix a pretty obscure problem. We go to great lengths to demystify various SSL errors, but this case is clearly lacking. Let's try to make things easier to diagnose and fix. When I had trouble figuring out how to get ctypes to work with all of the API pointers, I found that there are other python projects[4] using this API to achieve the same thing. [1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-April/096501.html [2] https://support.microsoft.com/en-us/help/931125/how-to-get-a-root-certificate-update-for-windows [3] https://bugs.python.org/issue20916 [4] https://github.com/nvaccess/nvda/blob/3b86bce2066b1934df14b96f2e83369900860ecf/source/updateCheck.py#L511

File last commit:

r31628:e86eb75e default
r33492:14af0439 default
Show More
color.py
31 lines | 933 B | text/x-python | PythonLexer
Jordi GutiƩrrez Hermoso
color: update description of the extension...
r22771 # color.py color output for Mercurial commands
Kevin Christen
Add colored output to status and qseries commands
r5787 #
# Copyright (C) 2007 Kevin Christen <kevin.christen@gmail.com>
#
Augie Fackler
color: Use the same GPL boilerplate as most hg files
r15771 # This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
Kevin Christen
Add colored output to status and qseries commands
r5787
Pierre-Yves David
color: update main documentation...
r31123 '''enable Mercurial color mode (DEPRECATED)
Danek Duvall
color: add some documentation for custom terminfo codes
r30176
Matt Harbison
color: fix grammar in help text
r31628 This extension enables Mercurial color mode. The feature is now directly
Pierre-Yves David
color: update main documentation...
r31123 available in Mercurial core. You can access it using::
Brodie Rao
color: diff colorization...
r7456
Pierre-Yves David
color: update main documentation...
r31123 [ui]
color = auto
Brodie Rao
color: for the sake of "less -R", default to ansi in auto mode (issue2792)...
r14769
Pierre-Yves David
color: update main documentation...
r31123 See :hg:`help color` for details.
Kevin Christen
Add colored output to status and qseries commands
r5787 '''
Pulkit Goyal
py3: make color use absolute_import
r28968 from __future__ import absolute_import
Kevin Christen
Add colored output to status and qseries commands
r5787
Pierre-Yves David
color: update main documentation...
r31123 from mercurial import color
Kevin Christen
Add colored output to status and qseries commands
r5787
Augie Fackler
extensions: change magic "shipped with hg" string...
r29841 # Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
Augie Fackler
extensions: document that `testedwith = 'internal'` is special...
r25186 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
# be specifying the version(s) of Mercurial they are tested with, or
# leave the attribute unspecified.
Augie Fackler
extensions: change magic "shipped with hg" string...
r29841 testedwith = 'ships-with-hg-core'
Augie Fackler
hgext: mark all first-party extensions as such
r16743
Brodie Rao
color: add global option in extsetup() instead of globally...
r12693 def extsetup(ui):
Pierre-Yves David
color: add the definition of '--color' in core...
r31104 # change default color config
Pierre-Yves David
color: add a 'ui.color' option to control color behavior...
r31110 color._enabledbydefault = True