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 }
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
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 }
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