예제 #1
0
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)
예제 #2
0
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)))
예제 #3
0
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
예제 #4
0
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)