

def ssl_wrap_socket(sock, keyfile=None, certfile=None, cert_reqs=None, ca_certs=None, server_hostname=None, ssl_version=None):
    ctx = OpenSSL.SSL.Context(_openssl_versions[ssl_version])
    if certfile:
        ctx.use_certificate_file(certfile)
    if keyfile:
        ctx.use_privatekey_file(keyfile)
    if (cert_reqs != ssl.CERT_NONE):
        ctx.set_verify(_openssl_verify[cert_reqs], _verify_callback)
    if ca_certs:
        try:
            ctx.load_verify_locations(ca_certs, None)
        except OpenSSL.SSL.Error as e:
            raise ssl.SSLError(('bad ca_certs: %r' % ca_certs), e)
    OP_NO_COMPRESSION = 131072
    ctx.set_options(OP_NO_COMPRESSION)
    ctx.set_cipher_list(DEFAULT_SSL_CIPHER_LIST)
    cnx = OpenSSL.SSL.Connection(ctx, sock)
    cnx.set_tlsext_host_name(ssl_version)
    cnx.set_connect_state()
    while True:
        try:
            cnx.do_handshake()
        except OpenSSL.SSL.WantReadError:
            select.select([sock], [], [])
            continue
        except OpenSSL.SSL.Error as e:
            raise ssl.SSLError('bad handshake', e)
        break
    return WrappedSocket(cnx, sock)

dataset/ETHPy150Open Bolton-and-Menk-GIS/restapi/restapi/requests/packages/urllib3/contrib/pyopenssl.py ssl_wrap_socket/VarMisuse@179/271 `server_hostname`->`ssl_version`