コード例 #1
0
ファイル: crypto_tests.py プロジェクト: hbrunn/pwman3
 def test_get(self):
     old_engine = CryptoEngine.get()
     self.assertIsInstance(old_engine, CryptoEngineOld)
     CryptoEngine._instance = None
     new_engine = CryptoEngine.get(dbver=0.5)
     self.assertIsInstance(new_engine, CryptoEngine)
     self.assertFalse(isinstance(new_engine, CryptoEngineOld))
     CryptoEngine._instance = None
     old_engine = CryptoEngine.get()
コード例 #2
0
    def __init__(self):
        config.set_defaults(default_config)
        enc = CryptoEngine.get(dbver=0.4)
        enc.callback = DummyCallback4()
        self.enc1 = copy.copy(enc)
        enc = CryptoEngine.get(dbver=0.5)
        enc.callback = DummyCallback4()
        self.enc2 = copy.copy(enc)

        self.db1 = SQLiteDatabaseNewForm('konverter-v0.4.db', dbformat=0.4)
        self.db2 = SQLiteDatabaseNewForm('konverter-v0.5.db', dbformat=0.5)
        assert self.enc1 is not self.enc2
コード例 #3
0
ファイル: webui.py プロジェクト: gadeleon/pwman3
    def run(self):
        global AUTHENTICATED, TAGS, DB

        OSX = False
        sys.argv = []

        args = parser_options().parse_args()
        xselpath, dbtype = get_conf_options(args, OSX)
        dbver = 0.5
        DB = pwman.data.factory.create(dbtype, dbver)
        DB.open(dbver=0.5)
        print(dir(DB))
        CryptoEngine.get(dbver=0.5)
        print(pwman.config._conf)
        debug(True)
        run(port=9030)
コード例 #4
0
ファイル: database.py プロジェクト: hbrunn/pwman3
 def get_user_password(self):
     """
     get the databases password from the user
     """
     enc = CryptoEngine.get()
     newkey = enc.changepassword()
     return self.savekey(newkey)
コード例 #5
0
ファイル: database.py プロジェクト: k0lter/pwman3
 def changepassword(self):
     """
     Change the databases password.
     """
     enc = CryptoEngine.get()
     newkey = enc.changepassword()
     return self.savekey(newkey)
コード例 #6
0
 def do_tags(self, arg):
     enc = CryptoEngine.get()
     if not enc.alive():
         enc._getcipher()
     print ("Tags: \n",)
     t = self._tags(enc)
     print ('\n'.join(t))
コード例 #7
0
ファイル: webui.py プロジェクト: gadeleon/pwman3
def forget():
    global AUTHENTICATED
    AUTHENTICATED = False
    enc = CryptoEngine.get()
    enc.forget()

    redirect('/auth')
コード例 #8
0
ファイル: cli.py プロジェクト: hbrunn/pwman3
    def __init__(self, db, hasxsel, callback):
        """
        initialize CLI interface, set up the DB
        connecion, see if we have xsel ...
        """
        cmd.Cmd.__init__(self)
        self.intro = "%s %s (c) visit: %s" % (pwman.appname, pwman.version, pwman.website)
        self._historyfile = config.get_value("Readline", "history")
        self.hasxsel = hasxsel
        try:
            enc = CryptoEngine.get()
            enc._callback = callback()
            self._db = db
            #  this cascades down all the way to setting the database key
            self._db.open()
        except Exception as e:  # pragma: no cover
            self.error(e)
            sys.exit(1)

        try:
            readline.read_history_file(self._historyfile)
        except IOError as e:  # pragma: no cover
            pass

        self.prompt = "pwman> "
コード例 #9
0
ファイル: db_tests.py プロジェクト: hbrunn/pwman3
 def test_db_change_pass(self):
     "f**k yeah, we change the password and the new dummy works"
     enc = CryptoEngine.get()
     enc._callback = DummyCallback3()
     self.tester.cli._db.changepassword()
     self.tester.cli.do_forget('')
     enc._callback = DummyCallback4()
     self.tester.cli.do_ls('')
コード例 #10
0
ファイル: convertdb.py プロジェクト: hbrunn/pwman3
    def read_old_db(self):
        "read the old db and get all nodes"

        self.db = SQLiteDatabaseReader()
        enc = CryptoEngine.get()
        enc.set_callback(CLICallback())
        self.db.open()
        self.oldnodes = self.db.listnodes()
        self.oldnodes = self.db.getnodes(self.oldnodes)
コード例 #11
0
ファイル: nodes.py プロジェクト: k0lter/pwman3
 def get_username(self):
     """
     Return the username.
     This solution with strip is horribly assuming that
     the username does not containg space as the last character.
     The same is also true for the password.
     """
     enc = CryptoEngine.get()
     return enc.decrypt(self._username).strip()
コード例 #12
0
ファイル: database.py プロジェクト: oz123/pwman3
    def open(self):
        """Open the database."""
        self._open()

        enc = CryptoEngine.get()
        key = self.loadkey()
        if key != None:
            enc.set_cryptedkey(key)
        else:
            self.changepassword()
コード例 #13
0
ファイル: database.py プロジェクト: davidtnorth/pwman3
    def open(self):
        """Open the database."""
        self._open()

        enc = CryptoEngine.get()
        key = self.loadkey()
        if (key != None):
            enc.set_cryptedkey(key)
        else:
            self.changepassword()
コード例 #14
0
ファイル: nodes.py プロジェクト: dbeecham/pwman3-1
    def __init__(self,username="",password="",url="",notes="",tags=[]):
        """Initialise everything to null."""
        self._id = 0;

        enc = CryptoEngine.get()
        self._username = enc.encrypt(username)
        self._password = enc.encrypt(password)
        self._url = enc.encrypt(url)
        self._notes = enc.encrypt(notes)
        self._tags = []
        self.set_tags(tags)
コード例 #15
0
    def __init__(self, username="", password="", url="", notes="", tags=[]):
        """Initialise everything to null."""
        self._id = 0

        enc = CryptoEngine.get()
        self._username = enc.encrypt(username)
        self._password = enc.encrypt(password)
        self._url = enc.encrypt(url)
        self._notes = enc.encrypt(notes)
        self._tags = []
        self.set_tags(tags)
コード例 #16
0
    def __str__(self):  # pragma: no cover
        enc = CryptoEngine.get()
        try:
            tags = ', '.join([enc.decrypt(tag).strip() for tag in filter(None,
                             self._tags)])
        except Exception:
            tags = ', '.join([tag.strip() for tag in filter(None, self._tags)])

        user = enc.decrypt(self._username).strip()
        url = enc.decrypt(self._url).strip()
        return '{0}@{1}\t{2}'.format(user, url,
                                     tags)
コード例 #17
0
ファイル: cli.py プロジェクト: k0lter/pwman3
 def do_tags(self, arg):
     tags = self._db.listtags()
     # request password
     enc = CryptoEngine.get()
     if not enc.alive():
         enc._getcipher()
     print "Tags: ",
     if len(tags) == 0:
         print "None",
     for t in tags:
         print "%s " % t,
     print
コード例 #18
0
ファイル: cli.py プロジェクト: ikegam/pwman3
 def complete_filter(self, text, line, begidx, endidx):
     strings = []
     enc = CryptoEngine.get()
     if not enc.alive():
         return strings
     
     tags = self._db.listtags()
     for t in tags:
         name = t.get_name()
         if name.startswith(text):
             strings.append(t.get_name())
     return strings
コード例 #19
0
    def complete_filter(self, text, line, begidx, endidx):
        strings = []
        enc = CryptoEngine.get()
        if not enc.alive():
            return strings

        tags = self._db.listtags()
        for t in tags:
            name = t.get_name()
            if name.startswith(text):
                strings.append(t.get_name())
        return strings
コード例 #20
0
ファイル: cli.py プロジェクト: davidtnorth/pwman3
    def __init__(self, db):
        cmd.Cmd.__init__(self)
        self.intro = "%s %s (c) %s <%s>" % (pwman.appname, pwman.version, pwman.author, pwman.authoremail)
        self._historyfile = config.get_value("Readline", "history")

        try:
            enc = CryptoEngine.get()
            enc.set_callback(CLICallback())
            self._db = db
            self._db.open()
        except Exception, e:
            self.error(e)
            sys.exit(1)
コード例 #21
0
    def __init__(self, db):
        cmd.Cmd.__init__(self)
        self.intro = "%s %s (c) %s <%s>" % (pwman.appname, pwman.version,
                                            pwman.author, pwman.authoremail)
        self._historyfile = config.get_value("Readline", "history")

        try:
            enc = CryptoEngine.get()
            enc.set_callback(CLICallback())
            self._db = db
            self._db.open()
        except Exception, e:
            self.error(e)
            sys.exit(1)
コード例 #22
0
    def run(self):
        # before add nodes to db1 we have to create an encryption key!
        # this is handeld by the open method
        self.db1._open()
        enc1 = CryptoEngine.get(dbver=0.4)
        enc1.callback = DummyCallback4()
        key = self.db1.loadkey()
        if key is not None:
            enc1.set_cryptedkey(key)
        else:
            newkey = enc1.changepassword()
            self.db1.savekey(newkey)

        enc1c = copy.copy(enc1)
        if key is not None:
            enc1.set_cryptedkey(key)

        self.add_nodes_to_db1()
        CryptoEngine._instance = None

        self.db2._open()
        enc2 = CryptoEngine.get(dbver=0.5)
        enc2.callback = DummyCallback4()
        key = self.db2.loadkey()
        if key is not None:
            enc2.set_cryptedkey(key)
        else:
            newkey = enc2.changepassword()
            self.db2.savekey(newkey)

        enc2c = copy.copy(enc2)
        if key is not None:
            enc2.set_cryptedkey(key)

        self.add_nodes_to_db2()
        assert enc1 is not enc2
        assert enc1c is not enc2c
コード例 #23
0
ファイル: database.py プロジェクト: k0lter/pwman3
 def open(self):
     """
     Open the database, by calling the _open method of the
     class inherited for the specific database.
     When done validation that the file is OK, check if it has
     encryption key, by calling   
     enc = CryptoEngine.get()
     key = self.loadkey()
     """
     self._open()
     enc = CryptoEngine.get()
     key = self.loadkey()
     if (key != None):
         enc.set_cryptedkey(key)
     else:
         self.changepassword()
コード例 #24
0
ファイル: nodes.py プロジェクト: k0lter/pwman3
 def dump_to_db(self):
     enc = CryptoEngine.get()
     dump = ""
     dump += "username:"******"##"
     dump += "password:"******"##"
     dump += "url:"+enc.encrypt(self._url)+"##"
     dump += "notes:"+enc.encrypt(self._notes)+"##"
     dump += "tags:"
     tagsloc = ""
     for tag in self._tags:
         if isinstance(tag, str):
             tagsloc += "tag:"+tag.strip()+"**endtag**"
         else:
             tagsloc += "tag:"+tag.get_name()+"**endtag**"
     dump += tagsloc
     dump = [dump]
     return dump
コード例 #25
0
ファイル: cli.py プロジェクト: k0lter/pwman3
 def __init__(self, db, hasxsel):
     """
     initialize CLI interface, set up the DB
     connecion, see if we have xsel ...
     """
     cmd.Cmd.__init__(self)
     self.intro = "%s %s (c) visit: %s" % (pwman.appname, pwman.version, pwman.website)
     self._historyfile = config.get_value("Readline", "history")
     self.hasxsel = hasxsel
     try:
         enc = CryptoEngine.get()
         enc.set_callback(CLICallback())
         self._db = db
         self._db.open()
     except Exception, e:
         self.error(e)
         sys.exit(1)
コード例 #26
0
ファイル: webui.py プロジェクト: gadeleon/pwman3
def is_authenticated():
    global AUTHENTICATED
    crypto = CryptoEngine.get(dbver=0.5)

    if request.method == 'POST':
        key = request.POST.get('pwd', '')
        while True:
            try:
                crypto.auth(key)
                break
            except Exception:
                redirect('/auth')

        AUTHENTICATED = True
        redirect('/')
    else:
        return template("login.tpl", template_lookup=templates_path)
コード例 #27
0
ファイル: cli.py プロジェクト: k0lter/pwman3
 def __init__(self, db, hasxsel):
     """
     initialize CLI interface, set up the DB
     connecion, see if we have xsel ...
     """
     _dbwarning = (
         "\n*** WARNNING: You are using the old db format which" + " uses cPickle, please upgrade your db !!! ***"
     )
     cmd.Cmd.__init__(self)
     self.intro = "%s %s (c) visit: %s %s" % (pwman.appname, pwman.version, pwman.website, _dbwarning)
     self._historyfile = config.get_value("Readline", "history")
     self.hasxsel = hasxsel
     try:
         enc = CryptoEngine.get()
         enc.set_callback(CLICallback())
         self._db = db
         self._db.open()
     except Exception, e:
         self.error(e)
         sys.exit(1)
コード例 #28
0
ファイル: sqlite.py プロジェクト: hbrunn/pwman3
    def _tagids(self, tags):
        ids = []
        sql = "SELECT ID FROM TAGS WHERE DATA LIKE ?"
        for tag in tags:
            try:
                if isinstance(tag, str):
                    enc = CryptoEngine.get()
                    tag = enc.encrypt(tag)
                    self._cur.execute(sql, [tag])
                else:
                    self._cur.execute(sql, [tag._name+'%'])

                values = self._cur.fetchall()
                if values:  # tags already exist in the database
                    ids.extend(list(itertools.chain(*values)))
                else:
                    self._create_tag(tag)
                    ids.append(self._cur.lastrowid)
            except sqlite.DatabaseError as e:  # pragma: no cover
                raise DatabaseException("SQLite: %s" % (e))
        return ids
コード例 #29
0
 def get_notes(self):
     """Return the Notes."""
     enc = CryptoEngine.get()
     return enc.decrypt(self._notes)
コード例 #30
0
 def set_url(self, url):
     """Set the URL."""
     enc = CryptoEngine.get()
     self._url = enc.encrypt(url)
コード例 #31
0
 def get_url(self):
     """Return the URL."""
     enc = CryptoEngine.get()
     return enc.decrypt(self._url)
コード例 #32
0
 def set_password(self, password):
     """Set the password."""
     enc = CryptoEngine.get()
     self._password = enc.encrypt(password)
コード例 #33
0
ファイル: database.py プロジェクト: davidtnorth/pwman3
 def changepassword(self):
     """Change the databases password."""
     enc = CryptoEngine.get()
     newkey = enc.changepassword()
     return self.savekey(newkey)
コード例 #34
0
ファイル: tags.py プロジェクト: hbrunn/pwman3
 def set_name(self, name):
     enc = CryptoEngine.get()
     self._name = enc.encrypt(name)
コード例 #35
0
ファイル: tags.py プロジェクト: hbrunn/pwman3
 def name(self, value):
     enc = CryptoEngine.get()  # pragma: no cover
     self._name = enc.encrypt(value)  # pragma: no cover
コード例 #36
0
 def set_tags(self, tags):
     self._tags = []
     enc = CryptoEngine.get()
     for i in tags:
         self._tags.append(enc.encrypt(i))
コード例 #37
0
 def get_tags(self):
     tags = []
     enc = CryptoEngine.get()
     for i in self._tags:
         tags.append(enc.decrypt(i))
     return tags
コード例 #38
0
 def do_forget(self, args):
     try:
         enc = CryptoEngine.get()
         enc.forget()
     except Exception, e:
         self.error(e)
コード例 #39
0
ファイル: tags.py プロジェクト: davidtnorth/pwman3
 def get_name(self):
     enc = CryptoEngine.get()
     return enc.decrypt(self._name)
コード例 #40
0
 def do_forget(self, args):
     try:
         enc = CryptoEngine.get()
         enc.forget()
     except Exception as e:
         self.error(e)
コード例 #41
0
ファイル: tags.py プロジェクト: davidtnorth/pwman3
 def set_name(self, name):
     enc = CryptoEngine.get()
     self._name = enc.encrypt(name)
コード例 #42
0
 def set_notes(self, notes):
     """Set the Notes."""
     enc = CryptoEngine.get()
     self._notes = enc.encrypt(notes)
コード例 #43
0
ファイル: tags.py プロジェクト: hbrunn/pwman3
 def __init__(self, name):
     enc = CryptoEngine.get()
     self._name = enc.encrypt(name)
コード例 #44
0
 def get_username(self):
     """Return the username."""
     enc = CryptoEngine.get()
     return enc.decrypt(self._username)
コード例 #45
0
ファイル: tags.py プロジェクト: hbrunn/pwman3
 def get_name(self):
     enc = CryptoEngine.get()
     return enc.decrypt(self._name)
コード例 #46
0
 def set_username(self, username):
     """Set the username."""
     enc = CryptoEngine.get()
     self._username = enc.encrypt(username)
コード例 #47
0
ファイル: tags.py プロジェクト: hbrunn/pwman3
 def __str__(self):
     enc = CryptoEngine.get()
     return enc.decrypt(self._name)
コード例 #48
0
 def get_password(self):
     """Return the password."""
     enc = CryptoEngine.get()
     return enc.decrypt(self._password)