]> git.lizzy.rs Git - torbrowser-launcher.git/commitdiff
Only try refreshing the keyring when necessary
authorMicah Lee <micah@micahflee.com>
Fri, 23 Mar 2018 20:45:33 +0000 (13:45 -0700)
committerMicah Lee <micah@micahflee.com>
Fri, 23 Mar 2018 20:45:33 +0000 (13:45 -0700)
torbrowser_launcher/common.py
torbrowser_launcher/launcher.py

index 4f579eed01375863ed54e69e6c91435b230a8909..bb3b3f16a320db6fe72b7ef8a77dded9dca9ec62 100644 (file)
@@ -258,7 +258,6 @@ class Common(object):
         if not all_imports_succeeded:
             print(_('Not all keys were imported successfully!'))
 
-        self.refresh_keyring()
         return all_imports_succeeded
 
     # load mirrors
index 37fff94489c255fd8b97c21e2da737a83a0b66f8..cc6778d535ca2ca5b7be1124c89945e518592638 100644 (file)
@@ -568,21 +568,30 @@ class VerifyThread(QtCore.QThread):
         self.common = common
 
     def run(self):
-        with gpg.Context() as c:
-            c.set_engine_info(gpg.constants.protocol.OpenPGP, home_dir=self.common.paths['gnupg_homedir'])
-
-            sig = gpg.Data(file=self.common.paths['sig_file'])
-            signed = gpg.Data(file=self.common.paths['tarball_file'])
+        def verify(second_try=False):
+            with gpg.Context() as c:
+                c.set_engine_info(gpg.constants.protocol.OpenPGP, home_dir=self.common.paths['gnupg_homedir'])
+
+                sig = gpg.Data(file=self.common.paths['sig_file'])
+                signed = gpg.Data(file=self.common.paths['tarball_file'])
+
+                try:
+                    c.verify(signature=sig, signed_data=signed)
+                except gpg.errors.BadSignatures as e:
+                    result = str(e).split(": ")
+                    if result[1] == 'No public key' and not second_try:
+                        raise Exception
+                    self.error.emit(str(e))
+                else:
+                    self.success.emit()
 
-            try:
-                c.verify(signature=sig, signed_data=signed)
-            except gpg.errors.BadSignatures as e:
-                result = str(e).split(": ")
-                if result[1] == 'No public key':
-                    self.common.refresh_keyring(result[0])
-                self.error.emit(str(e))
-            else:
-                self.success.emit()
+        try:
+            # Try verifying
+            verify()
+        except:
+            # If it fails, refresh the keyring and try again
+            self.common.refresh_keyring()
+            verify(True)
 
 
 class ExtractThread(QtCore.QThread):