Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim-plugins.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Hörist <forenjunkie@chello.at>2017-12-10 21:53:15 +0300
committerPhilipp Hörist <forenjunkie@chello.at>2017-12-10 21:54:35 +0300
commitc9510f9f247c6c390df095f742fc972cfe88708a (patch)
treea221fc4bce86456b7b1635ab4fd391a181f21146
parent6974e704c8da5f9f1800b146849a3fd6fcbb9640 (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.py8
-rw-r--r--omemo/omemoplugin.py16
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')