Ejemplo n.º 1
0
    def decrypt_topic(self, topic_id, user_key, get_notes=True):
        if get_notes:
            notes = self.db_query(
                '''
            SELECT note_id 
            FROM Note 
            INNER JOIN Topic ON Topic.topic_id = Note.topic_id
            WHERE Note.topic_id=?;
            ''', [topic_id], False)

            note_ids = [note[0] for note in notes]
        else:
            note_ids = []

        encrypted_topic_name, date_created = self.db_query(
            '''
            SELECT encrypted_topic_name, date_created
            FROM Topic 
            WHERE topic_id=?;
        ''', [topic_id], False)[0]

        topic_name = CryptoAES.decrypt(b64decode(encrypted_topic_name),
                                       user_key).decode()
        return {
            'topic_id': topic_id,
            'topic_name': topic_name,
            'date_created': date_created,
            'notes': note_ids
        }
Ejemplo n.º 2
0
def get_user_key():
    user_id = session['user_id']
    master_key = session['master_key']

    encrypted_user_key = account_db.get_encrypted_user_key(user_id)
    decrypted_user_key = CryptoAES.decrypt(encrypted_user_key, master_key)

    return decrypted_user_key
Ejemplo n.º 3
0
    def decrypt_note(self, note_id, user_key, get_content=True):

        if get_content:
            encrypted_title, encrypted_content, date_created = self.db_query(
                '''
                SELECT encrypted_title, encrypted_content, date_created
                FROM Note 
                WHERE note_id=?;
            ''', [note_id], False)[0]

            title = CryptoAES.decrypt(b64decode(encrypted_title),
                                      user_key).decode()
            date_created = datetime.fromtimestamp(date_created).strftime(
                '%b %d, %Y')
            content = CryptoAES.decrypt(b64decode(encrypted_content),
                                        user_key).decode()

            return {
                'note_id': note_id,
                'note_title': title,
                'note_content': content,
                'date_created': date_created
            }
        else:
            encrypted_title, date_created = self.db_query(
                '''
                SELECT encrypted_title, date_created 
                FROM Note 
                WHERE note_id=?;
            ''', [note_id], False)[0]

            title = CryptoAES.decrypt(b64decode(encrypted_title),
                                      user_key).decode()
            date_created = datetime.fromtimestamp(date_created).strftime(
                '%b %d, %Y')

            return {
                'note_id': note_id,
                'note_title': title,
                'date_created': date_created
            }
Ejemplo n.º 4
0
    def update_password(self, user_id, old_password, new_password):
        hashed_password = self.hash_password(new_password)

        old_master_key = self.generate_master_key(user_id, old_password)
        new_master_key = self.generate_master_key(user_id, new_password)

        old_encrypted_key = self.get_encrypted_user_key(user_id)
        user_key = CryptoAES.decrypt(old_encrypted_key, old_master_key)
        new_encrypted_key = b64encode(
            CryptoAES.encrypt(user_key, new_master_key)).decode()

        self.db_update(
            '''
            UPDATE Account SET
            password=?,
            encrypted_key=?
            WHERE user_id=?;            
        ''', [hashed_password, new_encrypted_key, user_id])

        return new_master_key