def generate_sqlite(): create_in_appdata(Files.sqlite) for q in [ '''create table passwords(id INTEGER constraint passwords_pk primary key autoincrement, name varchar not null, password varchar not null );''', 'create unique index passwords_name_uindex on passwords (name);' ]: query(q)
def generate_alpha(preset: bytes): """Generates Alpha.key file (master password).""" create_in_appdata(Files.alpha_key) with open(appdata(Files.beta_key), 'rb') as f: kdf = PBKDF2HMAC(algorithm=hashes.SHA256(), length=32, salt=f.read(), iterations=100000, backend=default_backend()) with open(appdata(Files.alpha_key), 'wb') as f: f.write(urlsafe_b64encode(kdf.derive(preset)))
def query(q_input: str, q_args=None): """ Executes query in SQLite database. :param q_input: SQL query. :param q_args: Query arguments (replaces ``?`` symbols in query). :return: All records or ``None`` if nothing is matching query. """ if q_args is None: q_args = [] create_in_appdata(Files.sqlite) with connect(appdata(Files.sqlite)) as conn: my_cursor = conn.cursor() my_cursor.execute(q_input, q_args) records = my_cursor.fetchall() conn.commit() return records
def generate_beta(preset: bytes): """Generates Beta.key file (salt).""" create_in_appdata(Files.beta_key) with open(appdata(Files.beta_key), 'wb') as f: f.write(preset)