Bläddra i källkod

Change how callback is controlled

Remove that from the __init__ method
oz123 10 år sedan
förälder
incheckning
0e86f8f97b
1 ändrade filer med 9 tillägg och 15 borttagningar
  1. 9 15
      pwman/util/crypto.py

+ 9 - 15
pwman/util/crypto.py

@@ -137,20 +137,22 @@ class CryptoEngine(object):
         Return an instance of CryptoEngine.
         If no instance is found, a CryptoException is raised.
         """
+        keycrypted = config.get_value("Encryption", "keycrypted")
+
         if CryptoEngine._instance:
             return CryptoEngine._instance
         if CryptoEngine._instance_new:
             return CryptoEngine._instance_new
 
         if dbver < 0.5:
-            CryptoEngine._instance = CryptoEngineOld()
+            CryptoEngine._instance = CryptoEngineOld(keycrypted=keycrypted)
             return CryptoEngine._instance
 
         if dbver >= 0.5:
             CryptoEngine._instance_new = CryptoEngine()
             return CryptoEngine._instance_new
 
-    def __init__(self):
+    def __init__(self, keycrypted=None):
         """Initialise the Cryptographic Engine
 
         params is a dictionary. Valid keys are:
@@ -166,12 +168,6 @@ class CryptoEngine(object):
         else:
             raise CryptoException("Parameters missing, no algorithm given")
 
-        callback = config.get_value("Encryption", "callback")
-        if isinstance(callback, Callback):
-            self._callback = callback
-        else:
-            self._callback = None
-
         keycrypted = config.get_value("Encryption", "keycrypted")
         if keycrypted:
             self._keycrypted = keycrypted
@@ -229,12 +225,6 @@ class CryptoEngine(object):
         """
         return self._keycrypted
 
-    # def set_callback(self, callback):
-    #     """
-    #     set the callback function
-    #     """
-    #     self._callback = callback
-
     @property
     def callback(self):
         """
@@ -244,7 +234,11 @@ class CryptoEngine(object):
 
     @callback.setter
     def callback(self, callback):
-        self._callback = callback
+        if isinstance(callback, Callback):
+            self._callback = callback
+        else:
+            raise CryptoNoCallbackException("callback must be an instance of"
+                                            " Callback!")
 
     def changepassword(self):
         """