changeset 876860d118c4 in /home/hg/repos/gajim-plugins
author: lovetox forenjunkie@chelo.at branches: gtk3 details:gajim-plugins?cmd=changeset;node=876860d118c4 description: Add encrypted file upload for windows
diffstat:
httpupload/httpupload.py | 32 ++++++++++++++++++++------------ httpupload/manifest.ini | 2 +- 2 files changed, 21 insertions(+), 13 deletions(-)
diffs (73 lines):
diff -r fb518dfcbc82 -r 876860d118c4 httpupload/httpupload.py --- a/httpupload/httpupload.py Sun Sep 04 23:56:22 2016 +0200 +++ b/httpupload/httpupload.py Thu Sep 08 00:55:30 2016 +0200 @@ -38,19 +38,21 @@
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 @@
@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 @@ 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() diff -r fb518dfcbc82 -r 876860d118c4 httpupload/manifest.ini --- a/httpupload/manifest.ini Sun Sep 04 23:56:22 2016 +0200 +++ b/httpupload/manifest.ini Thu Sep 08 00:55:30 2016 +0200 @@ -1,7 +1,7 @@ [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/>