Commit 6065fa67 authored by Philipp Hörist's avatar Philipp Hörist

Add encrypted file upload for windows

parent 5364afc3
......@@ -38,19 +38,21 @@ from .thumbnail import thumbnail
log = logging.getLogger('gajim.plugin_system.httpupload')
if os.name != 'nt':
try:
try:
if os.name == 'nt':
from cryptography.hazmat.backends.openssl import backend
else:
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.ciphers import Cipher
from cryptography.hazmat.primitives.ciphers import algorithms
from cryptography.hazmat.primitives.ciphers.modes import GCM
encryption_available = True
except Exception as e:
log.debug(e)
encryption_available = False
else:
from cryptography.hazmat.primitives.ciphers import Cipher
from cryptography.hazmat.primitives.ciphers import algorithms
from cryptography.hazmat.primitives.ciphers.modes import GCM
encryption_available = True
except Exception as e:
DEP_MSG = 'For encryption of files, ' \
'please install python-cryptography!'
log.debug('Cryptography Import Error: ' + str(e))
log.info('Decryption/Encryption disabled due to errors')
encryption_available = False
log.info('Cryptography not available on Windows for now')
# XEP-0363 (http://xmpp.org/extensions/xep-0363.html)
NS_HTTPUPLOAD = 'urn:xmpp:http:upload'
......@@ -65,6 +67,8 @@ class HttpuploadPlugin(GajimPlugin):
@log_calls('HttpuploadPlugin')
def init(self):
if not encryption_available:
self.available_text = DEP_MSG
self.config_dialog = None # HttpuploadPluginConfigDialog(self)
self.controls = []
self.events_handlers = {}
......@@ -466,10 +470,14 @@ class StreamFileWithProgress:
self.encrypted_upload = encrypted_upload
self.backing.seek(0, os.SEEK_END)
if self.encrypted_upload:
if os.name == 'nt':
self.backend = backend
else:
self.backend = default_backend()
self.encryptor = Cipher(
algorithms.AES(key),
GCM(iv),
backend=default_backend()).encryptor()
backend=self.backend).encryptor()
self._total = self.backing.tell() + TAGSIZE
else:
self._total = self.backing.tell()
......
[info]
name: HttpUpload
short_name: httpupload
version: 0.5.1
version: 0.5.2
description: This plugin is designed to send a file to a contact or muc by using httpupload.<br/>
Your server must support <a href="http://xmpp.org/extensions/xep-0363.html">XEP-0363: HTTP Upload</a>.<br/>
Conversations supported this.<br/>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment