Beispiel #1
0
    def test_openssl_version_text(self):
        """
        This test checks the value of OPENSSL_VERSION_TEXT.

        Unfortunately, this define does not appear to have a
        formal content definition, so for now we'll test to see
        if it starts with OpenSSL or LibreSSL as that appears
        to be true for every OpenSSL-alike.
        """
        assert (backend.openssl_version_text().startswith("OpenSSL")
                or backend.openssl_version_text().startswith("LibreSSL"))
    def test_openssl_version_text(self):
        """
        This test checks the value of OPENSSL_VERSION_TEXT.

        Unfortunately, this define does not appear to have a
        formal content definition, so for now we'll test to see
        if it starts with OpenSSL or LibreSSL as that appears
        to be true for every OpenSSL-alike.
        """
        assert backend.openssl_version_text().startswith("OpenSSL") or backend.openssl_version_text().startswith(
            "LibreSSL"
        )
Beispiel #3
0
    def test_actual_osrandom_bytes(self, monkeypatch):
        skip_if_libre_ssl(backend.openssl_version_text())
        sample_data = (b"\x01\x02\x03\x04" * 4)
        length = len(sample_data)

        def notrandom(size):
            assert size == length
            return sample_data
        monkeypatch.setattr(os, "urandom", notrandom)
        buf = backend._ffi.new("char[]", length)
        backend._lib.RAND_bytes(buf, length)
        assert backend._ffi.buffer(buf)[0:length] == sample_data
Beispiel #4
0
    def test_actual_osrandom_bytes(self, monkeypatch):
        skip_if_libre_ssl(backend.openssl_version_text())
        sample_data = (b"\x01\x02\x03\x04" * 4)
        length = len(sample_data)

        def notrandom(size):
            assert size == length
            return sample_data
        monkeypatch.setattr(os, "urandom", notrandom)
        buf = backend._ffi.new("unsigned char[]", length)
        backend._lib.RAND_bytes(buf, length)
        assert backend._ffi.buffer(buf)[0:length] == sample_data
def main():
    """
    Launch tests to check required modules and OS-specific dependencies.
    Exit with a relevant error code.
    """
    exit_code = 0

    try:
        import zlib
        zlib
    except:
        sys.stderr.write('"zlib" missing.\n')
        exit_code = 1

    try:
        import _hashlib
        _hashlib
    except:
        sys.stderr.write('standard "ssl" missing.\n')
        exit_code = 2

    try:
        from OpenSSL import SSL, crypto, rand
        SSL
        crypto
        rand
    except:
        sys.stderr.write('"OpenSSL" missing.\n')
        exit_code = 3

    try:
        import Crypto
        Crypto
    except:
        sys.stderr.write('"PyCrypto" missing.\n')
        exit_code = 4

    if os.name != 'nt':
        # Module only available on Linux / Unix
        try:
            import crypt
            crypt
        except:
            sys.stderr.write('"crypt" missing.\n')
            exit_code = 5

        try:
            import setproctitle
            setproctitle
        except:
            sys.stderr.write('"setproctitle" missing.\n')
            exit_code = 7

        try:
            from Crypto.PublicKey import _fastmath
            _fastmath
        except:
            sys.stderr.write('"Crypto.PublicKey._fastmath" missing. No GMP?\n')
            exit_code = 10

    try:
        import sqlite3
        sqlite3
    except:
        sys.stderr.write('"sqlite3" missing.\n')
        exit_code = 6

    try:
        from ctypes import CDLL
        CDLL
    except:
        sys.stderr.write('"ctypes - CDLL" missing.\n')
        exit_code = 8

    try:
        from ctypes.util import find_library
        find_library
    except:
        sys.stderr.write('"ctypes.utils - find_library" missing.\n')
        exit_code = 9

    # Windows specific modules.
    if os.name == 'nt':
        try:
            from ctypes import windll
            windll
        except:
            sys.stderr.write('"ctypes - windll" missing.\n')
            exit_code = 1
        try:
            import sqlite3
            sqlite3
        except:
            sys.stderr.write('"sqlite3" missing.\n')
            exit_code = 1

        # For now cryptography is only available on Winodws
        try:
            from cryptography.hazmat.backends.openssl.backend import backend
            openssl_version = backend.openssl_version_text()
        except:
            sys.stderr.write('"cryptography" failure.\n')
            exit_code = 3
        else:
            # Check OpenSSL version.
            assert openssl_version == u'OpenSSL 1.0.2d 9 Jul 2015'

    else:
        # Linux and Unix checks.
        try:
            import setproctitle
            setproctitle
        except:
            sys.stderr.write('"setproctitle" missing.\n')
            exit_code = 1

        try:
            import crypt
            crypt
        except:
            sys.stderr.write('"crypt" missing.\n')
            exit_code = 1

        try:
            from Crypto.PublicKey import _fastmath
            _fastmath
        except:
            sys.stderr.write('Crypto.PublicKey._fastmath missing. No GMP?\n')
            exit_code = 1

    if ( platform_system == 'linux' ) or ( platform_system == 'sunos' ):
        try:
            import spwd
            spwd
        except:
            sys.stderr.write('"spwd" missing.\n')
            exit_code = 1

    # We compile the readline module using libedit only on selected platforms.
    if test_for_readline:
        try:
            import readline
            readline.get_history_length()
        except:
            sys.stderr.write('"readline" missing.\n')
            exit_code = 13

        exit_code = test_dependencies() | exit_code

    sys.exit(exit_code)
from cryptography.hazmat.backends.openssl.backend import backend

print backend.openssl_version_text()
Beispiel #7
0
    connection_a, connection_b = dummy_connection_pair()
    return (DummyIceTransport(connection_a, 'controlling'),
            DummyIceTransport(connection_b, 'controlled'))


def dummy_dtls_transport_pair():
    ice_a, ice_b = dummy_ice_transport_pair()
    dtls_a = RTCDtlsTransport(ice_a, [RTCCertificate.generateCertificate()])
    dtls_b = RTCDtlsTransport(ice_b, [RTCCertificate.generateCertificate()])
    run(
        asyncio.gather(dtls_b.start(dtls_a.getLocalParameters()),
                       dtls_a.start(dtls_b.getLocalParameters())))
    return (dtls_a, dtls_b)


def load(name):
    path = os.path.join(os.path.dirname(__file__), name)
    with open(path, 'rb') as fp:
        return fp.read()


def run(coro):
    return asyncio.get_event_loop().run_until_complete(coro)


if os.environ.get('AIORTC_DEBUG'):
    logging.basicConfig(level=logging.DEBUG)

if os.environ.get('TRAVIS'):
    sys.stderr.write(backend.openssl_version_text() + '\n')
Beispiel #8
0
def main():
    """
    Launch tests to check required modules and OS-specific dependencies.
    Exit with a relevant error code.
    """
    exit_code = 0
    import sys
    print 'python %s' % (sys.version,)

    try:
        import zlib
        print 'zlib %s' % (zlib.__version__,)
    except:
        sys.stderr.write('"zlib" missing.\n')
        exit_code = 1

    try:
        import _hashlib
        import ssl
        _hashlib
        print 'stdlib ssl %s' % (ssl.OPENSSL_VERSION,)
    except:
        sys.stderr.write('standard "ssl" missing.\n')
        exit_code = 2

    # cryptography module and latest pyOpenSSL are only available on
    # systems with cffi.
    if BUILD_CFFI:
        try:
            from cryptography.hazmat.backends.openssl.backend import backend
            import cryptography
            openssl_version = backend.openssl_version_text()
            print 'cryptography %s - OpenSSL %s' % (
                cryptography.__version__, openssl_version)

            if chevah_os == 'windows':
                # Check OpenSSL version on windows.
                expecting = u'OpenSSL 1.0.2g  1 Mar 2016'
                if openssl_version != expecting:
                    sys.stderr.write('Expecting %s got %s.\n' % (
                        expecting, openssl_version))
                    exit_code = 3
        except Exception as error:
            sys.stderr.write('"cryptography" failure. %s\n' % (error,))
            exit_code = 14

    try:
        from OpenSSL import SSL, crypto, rand, __version__ as pyopenssl_version
        crypto
        rand
        print 'pyopenssl %s - OpenSSL %s' % (
            pyopenssl_version,
            SSL.SSLeay_version(SSL.SSLEAY_VERSION),
            )
    except Exception as error:
        sys.stderr.write('"OpenSSL" missing. %s\n' % (error,))
        exit_code = 3

    try:
        import Crypto
        print 'PyCrypto %s' % (Crypto.__version__,)
    except:
        sys.stderr.write('"PyCrypto" missing.\n')
        exit_code = 4

    if os.name != 'nt':
        # Module only available on Linux / Unix
        try:
            import crypt
            crypt
        except:
            sys.stderr.write('"crypt" missing.\n')
            exit_code = 5

        try:
            import setproctitle
            setproctitle
        except:
            sys.stderr.write('"setproctitle" missing.\n')
            exit_code = 7

        try:
            from Crypto.PublicKey import _fastmath
            _fastmath
        except:
            sys.stderr.write('"Crypto.PublicKey._fastmath" missing. No GMP?\n')
            exit_code = 10

    try:
        from ctypes import CDLL
        import ctypes
        CDLL
        print 'ctypes %s' % (ctypes.__version__,)
    except:
        sys.stderr.write('"ctypes - CDLL" missing. %s\n')
        exit_code = 8

    try:
        from ctypes.util import find_library
        find_library
    except:
        sys.stderr.write('"ctypes.utils - find_library" missing.\n')
        exit_code = 9

    # Windows specific modules.
    if os.name == 'nt':
        try:
            from ctypes import windll
            windll
        except:
            sys.stderr.write('"ctypes - windll" missing.\n')
            exit_code = 1
        try:
            import sqlite3
            sqlite3
        except:
            sys.stderr.write('"sqlite3" missing.\n')
            exit_code = 6

    else:
        # Linux and Unix checks.
        try:
            import crypt
            crypt
        except:
            sys.stderr.write('"crypt" missing.\n')
            exit_code = 5

        try:
            import pysqlite2
            pysqlite2
        except:
            sys.stderr.write('"pysqlite2" missing.\n')
            exit_code = 6

        try:
            import setproctitle
            print 'setproctitle %s' % (setproctitle.__version__,)
        except:
            sys.stderr.write('"setproctitle" missing.\n')
            exit_code = 7

        try:
            from Crypto.PublicKey import _fastmath
            _fastmath
        except:
            sys.stderr.write('Crypto.PublicKey._fastmath missing. No GMP?\n')
            exit_code = 10


    if ( platform_system == 'linux' ) or ( platform_system == 'sunos' ):
        try:
            import spwd
            spwd
        except:
            sys.stderr.write('"spwd" missing.\n')
            exit_code = 1

    # We compile the readline module using libedit only on selected platforms.
    if test_for_readline:
        try:
            import readline
            readline.get_history_length()
        except:
            sys.stderr.write('"readline" missing.\n')
            exit_code = 13

        exit_code = test_dependencies() | exit_code

    sys.exit(exit_code)
def lambda_handler(event, context):
    print(backend.openssl_version_text())
Beispiel #10
0
def main():
    """
    Launch tests to check required modules and OS-specific dependencies.
    Exit with a relevant error code.
    """
    exit_code = 0
    import sys
    print('python %s' % (sys.version,))

    try:
        import zlib
    except:
        sys.stderr.write('"zlib" is missing.\n')
        exit_code = 131
    else:
        print('zlib %s' % (zlib.__version__,))

    try:
        from ssl import OPENSSL_VERSION
        import _hashlib
        exit_code = egg_check(_hashlib) | exit_code
    except:
        sys.stderr.write('standard "ssl" is missing.\n')
        exit_code = 132
    else:
        print('stdlib ssl - %s' % (OPENSSL_VERSION,))

    try:
        from cryptography.hazmat.backends.openssl.backend import backend
        import cryptography
        openssl_version = backend.openssl_version_text()
        if CHEVAH_OS in [ "win", "macos", "lnx", "rhel-8" ]:
            if CHEVAH_OS == "rhel-8":
                # On RHEL 8.3, OpenSSL got updated to 1.1.1g. To keep backward
                # compatibility, link to version 1.1.1c from CentOS 8.2.2004.
                expecting = u'OpenSSL 1.1.1c FIPS  28 May 2019'
            else:
                # Use latest OpenSSL version when building it from source.
                expecting = u'OpenSSL 1.1.1k  25 Mar 2021'
            if openssl_version != expecting:
                sys.stderr.write('Expecting %s, got %s.\n' % (
                    expecting, openssl_version))
                exit_code = 133
    except Exception as error:
        sys.stderr.write('"cryptography" failure. %s\n' % (error,))
        exit_code = 134
    else:
        print('cryptography %s - %s' % (
            cryptography.__version__, openssl_version))

    try:
        from ctypes import CDLL
        import ctypes
        CDLL
    except:
        sys.stderr.write('"ctypes - CDLL" is missing. %s\n')
        exit_code = 138
    else:
        print('ctypes %s' % (ctypes.__version__,))

    try:
        from ctypes.util import find_library
        find_library
    except:
        sys.stderr.write('"ctypes.utils - find_library" is missing.\n')
        exit_code = 139

    try:
        import multiprocessing
        multiprocessing.current_process()
    except:
        sys.stderr.write('"multiprocessing" is missing or broken.\n')
        exit_code = 140

    try:
        import subprocess32 as subprocess
        dir_output = subprocess.check_output('ls')
    except:
        sys.stderr.write('"subprocess32" is missing or broken.\n')
        exit_code = 145
    else:
        print('"subprocess32" module is present.')

    try:
        import bcrypt
        password = b"super secret password"
        # Hash the password with a randomly-generated salt.
        hashed = bcrypt.hashpw(password, bcrypt.gensalt())
        # Check that an unhashed password matches hashed one.
        if bcrypt.checkpw(password, hashed):
            print('bcrypt %s' % (bcrypt.__version__,))
        else:
            sys.stderr.write('"bcrypt" is present, but broken.\n')
            exit_code = 146
    except:
        sys.stderr.write('"bcrypt" is missing.\n')
        exit_code = 147

    try:
        import bz2
        test_string = b"just a random string to quickly test bz2"
        test_string_bzipped = bz2.compress(test_string)
        if bz2.decompress(test_string_bzipped) == test_string:
            print('"bz2" module is present.')
        else:
            sys.stderr.write('"bzip" is present, but broken.\n')
            exit_code = 148
    except:
        sys.stderr.write('"bz2" is missing.\n')
        exit_code = 149

    try:
        import setproctitle
        current_process_title = setproctitle.getproctitle()
    except:
        sys.stderr.write('"setproctitle" is missing or broken.\n')
        exit_code = 150
    else:
        print('setproctitle %s' % (setproctitle.__version__,))

    try:
        from sqlite3 import dbapi2 as sqlite
    except:
        sys.stderr.write('"sqlite3" is missing or broken.\n')
        exit_code = 153
    else:
        print('sqlite3 %s - sqlite %s' % (
                sqlite.version, sqlite.sqlite_version))

    try:
        import psutil
        cpu_percent = psutil.cpu_percent()
    except:
        sys.stderr.write('"psutil" is missing or broken.\n')
        exit_code = 160
    else:
        print('psutil %s' % (psutil.__version__,))

    try:
        import uuid
        uuid.uuid4()
    except:
        sys.stderr.write('"uuid" is missing or broken.\n')
        exit_code = 163
    else:
        print('"uuid" module is present.')

    if os.name == 'nt':
        # Windows specific modules.
        try:
            from ctypes import windll
            windll
        except:
            sys.stderr.write('"ctypes - windll" is missing.\n')
            exit_code = 152
        else:
            print('ctypes %s' % (ctypes.__version__,))

    else:
        # Linux / Unix stuff.
        try:
            import crypt
            crypt
        except:
            sys.stderr.write('"crypt" is missing.\n')
            exit_code = 155

        # Check for the git revision in Python's sys.version on Linux and Unix.
        try:
            git_rev_cmd = ['git', 'log', '-1', '--no-merges', '--format=%h']
            git_rev = subprocess.check_output(git_rev_cmd).strip().decode()
        except:
            sys.stderr.write("Couldn't get the git rev for the current tree.\n")
            exit_code = 157
        else:
            bin_ver = sys.version.split('(')[1].split(',')[0]
            if bin_ver != git_rev:
                sys.stderr.write("Python version doesn't match git revision!\n"
                                 "\tBin ver: {0}".format(bin_ver) + "\n"
                                 "\tGit rev: {0}".format(git_rev) + "\n")
                exit_code = 158

    if platform_system in [ 'linux', 'sunos' ]:
        try:
            import spwd
            spwd
        except:
            sys.stderr.write('"spwd" is missing, but it should be present.\n')
            exit_code = 161
        else:
            print('"spwd" module is present.')

    # The readline module is built using libedit only on selected platforms.
    if BUILD_LIBEDIT:
        try:
            import readline
            readline.get_history_length()
        except:
            sys.stderr.write('"readline" is missing or broken.\n')
            exit_code = 162
        else:
            print('"readline" module is present.')


    exit_code = test_dependencies() | exit_code


    sys.exit(exit_code)