|
@@ -0,0 +1,56 @@
|
|
|
+# Work in progress
|
|
|
+
|
|
|
+
|
|
|
+enc = CryptoEngine.get() in ui/cli.py (L:940)
|
|
|
+
|
|
|
+is called before the db is even set !
|
|
|
+
|
|
|
+when priniting nodes, decrypt is first called by:
|
|
|
+this initializes CryptoEngine instance,
|
|
|
+and sets the following instance properties:
|
|
|
+ - _callback
|
|
|
+ - _instance
|
|
|
+ - _keycrypted
|
|
|
+ - _timeout
|
|
|
+ - _cypher
|
|
|
+
|
|
|
+this initialization asks the user for the decryption key
|
|
|
+of the database.
|
|
|
+
|
|
|
+the action that user does called the respective db function which
|
|
|
+returns an ENCRYPTED STRING!,
|
|
|
+which is then given to decryption via nodes.py or tags.py which do the
|
|
|
+actual decryption on each decrypted string returned from the DB.
|
|
|
+
|
|
|
+for example print_node:
|
|
|
+
|
|
|
+initializing a _db instance, then we call _db.open()
|
|
|
+
|
|
|
+calling do_print(10) calls _db.getnodes([i]) at this point
|
|
|
+the database is still not decrypted ... e.g. _cypher is still empty
|
|
|
+
|
|
|
+when _db.getnodes([i]) is done node inside print_node is containing
|
|
|
+alot of encrypted string.
|
|
|
+
|
|
|
+now print_node will be called, at which point the different methods
|
|
|
+of node instance will decrypt their respective string:
|
|
|
+
|
|
|
+e.g. get_username(self) instide nodes.py:
|
|
|
+
|
|
|
+ self._username -> OexYH7vT/WVpXO0ZBM93RF/l8+o8/QU8ykgDB4qY8+BxBaKylAOeJWEQ+edjpLTU\n
|
|
|
+ enc = CryptoEngine.get()
|
|
|
+ enc.decrypt(self._username) -> nahum.oz@gmail.com
|
|
|
+
|
|
|
+
|
|
|
+to see this in work:
|
|
|
+insert
|
|
|
+ import ipdb; ipdb.set_trace()
|
|
|
+to def getnodes(self, ids) in "pwman/data/drivers/sqlite.py.
|
|
|
+
|
|
|
+continue to pwman3/pwman/ui/cli.py(382) self.print_node(node[0])
|
|
|
+and then step into this function.
|
|
|
+continue further into def print_node(self, node) inside pwman3/pwman/ui/cli.py,
|
|
|
+finally you should step into:
|
|
|
+
|
|
|
+ node.get_username()
|
|
|
+
|