diff options
author | Philipp Hörist <forenjunkie@chello.at> | 2017-12-10 21:53:15 +0300 |
---|---|---|
committer | Philipp Hörist <forenjunkie@chello.at> | 2017-12-10 21:54:35 +0300 |
commit | c9510f9f247c6c390df095f742fc972cfe88708a (patch) | |
tree | a221fc4bce86456b7b1635ab4fd391a181f21146 | |
parent | 6974e704c8da5f9f1800b146849a3fd6fcbb9640 (diff) |
[omemo] Make encrypt_file() method better available
Now we dont need to supply the account
-rw-r--r-- | omemo/file_crypto.py (renamed from omemo/file_decryption.py) | 10 | ||||
-rw-r--r-- | omemo/omemo/state.py | 8 | ||||
-rw-r--r-- | omemo/omemoplugin.py | 16 |
3 files changed, 19 insertions, 15 deletions
diff --git a/omemo/file_decryption.py b/omemo/file_crypto.py index e68431a..e76b9e3 100644 --- a/omemo/file_decryption.py +++ b/omemo/file_crypto.py @@ -45,6 +45,7 @@ try: from cryptography.hazmat.primitives.ciphers import algorithms from cryptography.hazmat.primitives.ciphers.modes import GCM from cryptography.hazmat.backends import default_backend + from omemo.omemo.aes_gcm_native import aes_encrypt except ImportError: log.exception('ImportError') ERROR = True @@ -59,6 +60,15 @@ except Exception: log.exception('Error') +def encrypt_file(data): + key = os.urandom(32) + iv = os.urandom(16) + + payload, tag = aes_encrypt(key, iv, data) + encrypted_data = payload + tag + return (encrypted_data, key, iv) + + class File: def __init__(self, url): self.url, self.fragment = urldefrag(url) diff --git a/omemo/omemo/state.py b/omemo/omemo/state.py index 2cd5234..3ee640e 100644 --- a/omemo/omemo/state.py +++ b/omemo/omemo/state.py @@ -217,14 +217,6 @@ class OmemoState: log.debug("Decrypted Message => " + result)
return result
- def encrypt_file(self, data):
- key = os.urandom(32)
- iv = os.urandom(16)
-
- payload, tag = encrypt(key, iv, data)
- encrypted_data = payload + tag
- return (encrypted_data, key, iv)
-
def create_msg(self, from_jid, jid, plaintext):
key = get_random_bytes(16)
iv = get_random_bytes(16)
diff --git a/omemo/omemoplugin.py b/omemo/omemoplugin.py index 216b953..e9a003d 100644 --- a/omemo/omemoplugin.py +++ b/omemo/omemoplugin.py @@ -45,7 +45,7 @@ ERROR_MSG = '' log = logging.getLogger('gajim.plugin_system.omemo') try: - from omemo.file_decryption import FileDecryption + from omemo import file_crypto except Exception as error: log.exception(error) ERROR_MSG = CRYPTOGRAPHY_MISSING @@ -188,17 +188,19 @@ class OmemoPlugin(GajimPlugin): self.connections[conn.name].encrypt_message(conn, obj, callback) def _file_decryption(self, url, kind, instance, window): - FileDecryption(self).hyperlink_handler(url, kind, instance, window) + file_decryption.FileDecryption(self).hyperlink_handler( + url, kind, instance, window) - def encrypt_file(self, file, account, callback): + def encrypt_file(self, file, callback): thread = threading.Thread(target=self._encrypt_file_thread, - args=(file, account, callback)) + args=(file, callback)) thread.daemon = True thread.start() - def _encrypt_file_thread(self, file, account, callback): - omemo = self.get_omemo(account) - encrypted_data, key, iv = omemo.encrypt_file(file.get_data(full=True)) + @staticmethod + def _encrypt_file_thread(file, callback): + encrypted_data, key, iv = file_decryption.encrypt_file( + file.get_data(full=True)) file.encrypted = True file.size = len(encrypted_data) file.user_data = binascii.hexlify(iv + key).decode('utf-8') |