123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- # 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()
- # New features to implement:
- 1. Password expiry date - register password date, remind when password is about to expire.
- 2. Make new passwords according to user defined rules.
|