فهرست منبع

Add property callback to CryptoEngine

This way we can easily change "public" or "private"
access to callback
oz123 11 سال پیش
والد
کامیت
c2f476e76e
3فایلهای تغییر یافته به همراه13 افزوده شده و 9 حذف شده
  1. 1 0
      pwman/tests/test_tools.py
  2. 5 5
      pwman/ui/cli.py
  3. 7 4
      pwman/util/crypto.py

+ 1 - 0
pwman/tests/test_tools.py

@@ -89,4 +89,5 @@ class SetupTester(object):
             db = factory.create(dbtype, self.dbver, self.filename)
             db = factory.create(dbtype, self.dbver, self.filename)
         else:
         else:
             db = factory.create(dbtype, self.dbver)
             db = factory.create(dbtype, self.dbver)
+
         self.cli = PwmanCliNew(db, self.xselpath, DummyCallback)
         self.cli = PwmanCliNew(db, self.xselpath, DummyCallback)

+ 5 - 5
pwman/ui/cli.py

@@ -1,4 +1,4 @@
-#============================================================================
+# ============================================================================
 # This file is part of Pwman3.
 # This file is part of Pwman3.
 #
 #
 # Pwman3 is free software; you can redistribute it and/or modify
 # Pwman3 is free software; you can redistribute it and/or modify
@@ -13,11 +13,11 @@
 # You should have received a copy of the GNU General Public License
 # You should have received a copy of the GNU General Public License
 # along with Pwman3; if not, write to the Free Software
 # along with Pwman3; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#============================================================================
+# ============================================================================
 # Copyright (C) 2012 Oz Nahum <nahumoz@gmail.com>
 # Copyright (C) 2012 Oz Nahum <nahumoz@gmail.com>
-#============================================================================
+# ============================================================================
 # Copyright (C) 2006 Ivan Kelly <ivan@ivankelly.net>
 # Copyright (C) 2006 Ivan Kelly <ivan@ivankelly.net>
-#============================================================================
+# ============================================================================
 # pylint: disable=I0011
 # pylint: disable=I0011
 """
 """
 Define the CLI interface for pwman3 and the helper functions
 Define the CLI interface for pwman3 and the helper functions
@@ -53,7 +53,7 @@ class PwmanCliNew(cmd.Cmd, Aliases, BaseCommands):
         self.hasxsel = hasxsel
         self.hasxsel = hasxsel
         try:
         try:
             enc = CryptoEngine.get()
             enc = CryptoEngine.get()
-            enc._callback = callback()
+            enc.callback = callback()
             self._db = db
             self._db = db
             #  this cascades down all the way to setting the database key
             #  this cascades down all the way to setting the database key
             self._db.open()
             self._db.open()

+ 7 - 4
pwman/util/crypto.py

@@ -62,6 +62,7 @@ import ctypes
 import hashlib
 import hashlib
 import base64
 import base64
 
 
+
 def zerome(string):
 def zerome(string):
     """
     """
     securely erase strings ...
     securely erase strings ...
@@ -241,6 +242,10 @@ class CryptoEngine(object):
         """
         """
         return self._callback
         return self._callback
 
 
+    @callback.setter
+    def callback(self, callback):
+        self._callback = callback
+
     def changepassword(self):
     def changepassword(self):
         """
         """
         Creates a new key. The key itself is actually stored in
         Creates a new key. The key itself is actually stored in
@@ -322,8 +327,6 @@ class CryptoEngine(object):
         if self._keycrypted is None:
         if self._keycrypted is None:
             raise CryptoNoKeyException("Encryption key has not been generated")
             raise CryptoNoKeyException("Encryption key has not been generated")
 
 
-
-
     def _getcipher(self):
     def _getcipher(self):
         """
         """
         get cypher from user, to decrypt DB
         get cypher from user, to decrypt DB
@@ -372,8 +375,8 @@ class CryptoEngine(object):
             if sys.version_info.major > 2:
             if sys.version_info.major > 2:
                 key = key.encode('utf-8')
                 key = key.encode('utf-8')
             for i in range(1000):
             for i in range(1000):
-               key = hashlib.sha256(key)
-               key = key.digest()
+                key = hashlib.sha256(key)
+                key = key.digest()
 
 
             key = hashlib.sha256(key)
             key = hashlib.sha256(key)
             cipher = cAES.new(key.digest(), cAES.MODE_ECB)
             cipher = cAES.new(key.digest(), cAES.MODE_ECB)