changeset 375c67fd9a1c in /home/hg/repos/gajim-plugins

author: lovetox <[email protected]>
branches: 
details:gajim-plugins?cmd=changeset;node=375c67fd9a1c
description: fast image decryption for windows

diffstat:

 url_image_preview/manifest.ini         |   2 +-
 url_image_preview/url_image_preview.py |  37 +++++++++++++++++++--------------
 2 files changed, 22 insertions(+), 17 deletions(-)

diffs (92 lines):

diff -r 7e92f69b2f36 -r 375c67fd9a1c url_image_preview/manifest.ini
--- a/url_image_preview/manifest.ini    Sun Jul 17 18:33:55 2016 +0200
+++ b/url_image_preview/manifest.ini    Tue Jul 26 18:17:42 2016 +0200
@@ -1,7 +1,7 @@
 [info]
 name: Url image preview
 short_name: url_image_preview
-version: 0.7.4
+version: 0.7.5
 description: Url image preview in chatbox.<br/>
  Based on patch in <a 
href="http://trac.gajim.org/attachment/ticket/5300";>ticket #5300</a>.
 authors = Denis Fomin <[email protected]>
diff -r 7e92f69b2f36 -r 375c67fd9a1c url_image_preview/url_image_preview.py
--- a/url_image_preview/url_image_preview.py    Sun Jul 17 18:33:55 2016 +0200
+++ b/url_image_preview/url_image_preview.py    Tue Jul 26 18:17:42 2016 +0200
@@ -24,19 +24,20 @@
 
 log = logging.getLogger('gajim.plugin_system.url_image_preview')
 
-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
-        decryption_available = True
-    except Exception as e:
-        log.debug(e)
-        decryption_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
+    decryption_available = True
+except Exception as e:
+    log.debug('Cryptography Import Error: ' + str(e))
+    log.debug('Decryption/Encryption disabled')
     decryption_available = False
-    log.info('Cryptography not available on Windows for now')
 
 ACCEPTED_MIME_TYPES = ('image/png', 'image/jpeg', 'image/gif', 'image/raw',
                        'image/svg+xml')
@@ -47,8 +48,8 @@
     def init(self):
         self.config_dialog = UrlImagePreviewPluginConfigDialog(self)
         self.events_handlers = {}
-        self.events_handlers['message-received'] = (ged.PRECORE,
-                self.handle_message_received)
+        self.events_handlers['message-received'] = (
+            ged.PRECORE, self.handle_message_received)
         self.gui_extension_points = {
             'chat_control_base': (self.connect_with_chat_control,
                                   self.disconnect_from_chat_control),
@@ -106,6 +107,10 @@
         self.plugin = plugin
         self.chat_control = chat_control
         self.textview = self.chat_control.conv_textview
+        if os.name == 'nt':
+            self.backend = backend
+        else:
+            self.backend = default_backend()
 
     def print_special_text(self, special_text, other_tags, graphics=True,
                            iter_=None):
@@ -210,7 +215,8 @@
                 mem = aes_decrypt(key, iv, mem)
             log.info("After decrypt image")
         except Exception:
-            log.error('Could not decrypt image for URL (exception raised): %s' 
% url)
+            log.error('Could not decrypt image for URL (exception raised): %s'
+                      % url)
             raise
         if not mem or not len(mem):
             log.error('Could not decrypt image for URL: %s' % url)
@@ -221,11 +227,10 @@
         # Use AES128 GCM with the given key and iv to decrypt the payload.
         data = payload[:-16]
         tag = payload[-16:]
-        backend = default_backend()
         decryptor = Cipher(
             algorithms.AES(key),
             GCM(iv, tag=tag),
-            backend=backend).decryptor()
+            backend=self.backend).decryptor()
         return decryptor.update(data) + decryptor.finalize()
 
     def _update_img(self, (mem, alt), url, file_mime, repl_start, repl_end, 
decrypted=False):
_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to