__init__.py 文件源码

python
阅读 21 收藏 0 点赞 0 评论 0

项目:satori-rtm-sdk-python 作者: satori-com 项目源码 文件源码
def _ssl_wrap_socket(sock, host):
    if sys.version_info < (2, 7, 9):
        if sys.version_info >= (2, 7, 0):
            try:
                import backports.ssl
            except ImportError:
                raise RuntimeError(
                    "In order to use secure websockets with "
                    "Python 2.7.8 and earlier please install "
                    " the backports.ssl package.")
            try:
                import OpenSSL
                assert OpenSSL
            except ImportError:
                raise RuntimeError(
                    "Please make sure PyOpenSSL >= 0.15 is installed")

            try:
                openssl_version = OpenSSL.__version__
                from distutils.version import LooseVersion
                assert LooseVersion(openssl_version) >= LooseVersion('0.15.0')
            except Exception:
                raise RuntimeError(
                    "Please make sure that PyOpenSSL version is"
                    "at least 0.15, found only {0}".format(openssl_version))

            ctx = backports.ssl.SSLContext(backports.ssl.PROTOCOL_SSLv23)
            ctx.verify_mode = backports.ssl.CERT_REQUIRED
            ctx.check_hostname = True
            ctx.ca_file = certifi.where()

        else:
            raise RuntimeError("Python 2.6 is not supported")
    else:
        import ssl
        ctx = ssl.create_default_context(
            purpose=ssl.Purpose.SERVER_AUTH,
            cafile=certifi.where())

    return ctx.wrap_socket(sock, server_hostname=host)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号