URI: 
       tcrypto: check version of pycryptodomex/cryptography at runtime - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 9bc4182924424bab2b1c11ef1e9c7f32ab6f2922
   DIR parent e4e6c4fb1ba967f8db5acc28bebc1ddabac3e21e
  HTML Author: SomberNight <somber.night@protonmail.com>
       Date:   Thu, 15 Oct 2020 16:25:06 +0200
       
       crypto: check version of pycryptodomex/cryptography at runtime
       
       As these pkgs are often provided by the OS package manager (e.g. apt),
       tthe version limits specified in requirements*.txt and setup.py will never
       get applied.
       
       Diffstat:
         M electrum/crypto.py                  |      15 ++++++++++++++-
       
       1 file changed, 14 insertions(+), 1 deletion(-)
       ---
   DIR diff --git a/electrum/crypto.py b/electrum/crypto.py
       t@@ -30,8 +30,12 @@ import hashlib
        import hmac
        from typing import Union
        
       -from .util import assert_bytes, InvalidPassword, to_bytes, to_string, WalletFileException
       +from .util import assert_bytes, InvalidPassword, to_bytes, to_string, WalletFileException, versiontuple
        from .i18n import _
       +from .logging import get_logger
       +
       +
       +_logger = get_logger(__name__)
        
        
        HAS_PYAES = False
       t@@ -43,7 +47,12 @@ else:
            HAS_PYAES = True
        
        HAS_CRYPTODOME = False
       +MIN_CRYPTODOME_VERSION = "3.7"
        try:
       +    import Cryptodome
       +    if versiontuple(Cryptodome.__version__) < versiontuple(MIN_CRYPTODOME_VERSION):
       +        _logger.warning(f"found module 'Cryptodome' but it is too old: {Cryptodome.__version__}<{MIN_CRYPTODOME_VERSION}")
       +        raise Exception()
            from Cryptodome.Cipher import ChaCha20_Poly1305 as CD_ChaCha20_Poly1305
            from Cryptodome.Cipher import ChaCha20 as CD_ChaCha20
            from Cryptodome.Cipher import AES as CD_AES
       t@@ -53,8 +62,12 @@ else:
            HAS_CRYPTODOME = True
        
        HAS_CRYPTOGRAPHY = False
       +MIN_CRYPTOGRAPHY_VERSION = "2.1"
        try:
            import cryptography
       +    if versiontuple(cryptography.__version__) < versiontuple(MIN_CRYPTOGRAPHY_VERSION):
       +        _logger.warning(f"found module 'cryptography' but it is too old: {cryptography.__version__}<{MIN_CRYPTOGRAPHY_VERSION}")
       +        raise Exception()
            from cryptography import exceptions
            from cryptography.hazmat.primitives.ciphers import Cipher as CG_Cipher
            from cryptography.hazmat.primitives.ciphers import algorithms as CG_algorithms