mercurial/sslutil.py
changeset 23851 948a8ca27152
parent 23850 e1931f7cd977
child 24288 922e087ba158
equal deleted inserted replaced
23850:e1931f7cd977 23851:948a8ca27152
    12 from mercurial.i18n import _
    12 from mercurial.i18n import _
    13 try:
    13 try:
    14     # avoid using deprecated/broken FakeSocket in python 2.6
    14     # avoid using deprecated/broken FakeSocket in python 2.6
    15     import ssl
    15     import ssl
    16     CERT_REQUIRED = ssl.CERT_REQUIRED
    16     CERT_REQUIRED = ssl.CERT_REQUIRED
    17     PROTOCOL_TLSv1 = ssl.PROTOCOL_TLSv1
       
    18     try:
    17     try:
    19         ssl_context = ssl.SSLContext
    18         ssl_context = ssl.SSLContext
    20 
    19 
    21         def ssl_wrap_socket(sock, keyfile, certfile, cert_reqs=ssl.CERT_NONE,
    20         def ssl_wrap_socket(sock, keyfile, certfile, cert_reqs=ssl.CERT_NONE,
    22                             ca_certs=None, serverhostname=None):
    21                             ca_certs=None, serverhostname=None):
    48     except AttributeError:
    47     except AttributeError:
    49         def ssl_wrap_socket(sock, keyfile, certfile, cert_reqs=ssl.CERT_NONE,
    48         def ssl_wrap_socket(sock, keyfile, certfile, cert_reqs=ssl.CERT_NONE,
    50                             ca_certs=None, serverhostname=None):
    49                             ca_certs=None, serverhostname=None):
    51             sslsocket = ssl.wrap_socket(sock, keyfile, certfile,
    50             sslsocket = ssl.wrap_socket(sock, keyfile, certfile,
    52                                         cert_reqs=cert_reqs, ca_certs=ca_certs,
    51                                         cert_reqs=cert_reqs, ca_certs=ca_certs,
    53                                         ssl_version=PROTOCOL_TLSv1)
    52                                         ssl_version=ssl.PROTOCOL_TLSv1)
    54             # check if wrap_socket failed silently because socket had been
    53             # check if wrap_socket failed silently because socket had been
    55             # closed
    54             # closed
    56             # - see http://bugs.python.org/issue13721
    55             # - see http://bugs.python.org/issue13721
    57             if not sslsocket.cipher():
    56             if not sslsocket.cipher():
    58                 raise util.Abort(_('ssl connection failed'))
    57                 raise util.Abort(_('ssl connection failed'))
    59             return sslsocket
    58             return sslsocket
    60 except ImportError:
    59 except ImportError:
    61     CERT_REQUIRED = 2
    60     CERT_REQUIRED = 2
    62 
       
    63     PROTOCOL_TLSv1 = 3
       
    64 
    61 
    65     import socket, httplib
    62     import socket, httplib
    66 
    63 
    67     def ssl_wrap_socket(sock, keyfile, certfile, cert_reqs=CERT_REQUIRED,
    64     def ssl_wrap_socket(sock, keyfile, certfile, cert_reqs=CERT_REQUIRED,
    68                         ca_certs=None, serverhostname=None):
    65                         ca_certs=None, serverhostname=None):