Add pyaesni support

This commit is contained in:
BlackCatDevel0per 2022-03-23 01:26:19 +05:00
parent 2357116f01
commit d4a387992f

View File

@ -2,6 +2,7 @@
AES IGE implementation in Python. AES IGE implementation in Python.
If available, cryptg will be used instead, otherwise If available, cryptg will be used instead, otherwise
If available, pyaesni will be used instead, otherwise
if available, libssl will be used instead, otherwise if available, libssl will be used instead, otherwise
the Python implementation will be used. the Python implementation will be used.
""" """
@ -13,10 +14,21 @@ from . import libssl
__log__ = logging.getLogger(__name__) __log__ = logging.getLogger(__name__)
try:
import pyaesni
__log__.info('pyaesni detected, it will be used for encryption')
except ImportError:
pyaesni = None
if libssl.encrypt_ige and libssl.decrypt_ige:
__log__.info('libssl detected, it will be used for encryption')
else:
__log__.info('pyaesni module not installed and libssl not found, '
'falling back to (slower) Python encryption')
try: try:
import cryptg if not pyaesni:
__log__.info('cryptg detected, it will be used for encryption') import cryptg
__log__.info('cryptg detected, it will be used for encryption')
except ImportError: except ImportError:
cryptg = None cryptg = None
if libssl.encrypt_ige and libssl.decrypt_ige: if libssl.encrypt_ige and libssl.decrypt_ige:
@ -39,6 +51,8 @@ class AES:
""" """
if cryptg: if cryptg:
return cryptg.decrypt_ige(cipher_text, key, iv) return cryptg.decrypt_ige(cipher_text, key, iv)
elif pyaesni:
return pyaesni.ige256_decrypt(cipher_text, key, iv)
if libssl.decrypt_ige: if libssl.decrypt_ige:
return libssl.decrypt_ige(cipher_text, key, iv) return libssl.decrypt_ige(cipher_text, key, iv)
@ -80,6 +94,8 @@ class AES:
if cryptg: if cryptg:
return cryptg.encrypt_ige(plain_text, key, iv) return cryptg.encrypt_ige(plain_text, key, iv)
elif pyaesni:
return pyaesni.ige256_encrypt(plain_text, key, iv)
if libssl.encrypt_ige: if libssl.encrypt_ige:
return libssl.encrypt_ige(plain_text, key, iv) return libssl.encrypt_ige(plain_text, key, iv)