def decrypt_kgk(self, encrypted_kgk, kgk_crypter=None, password=b'', salt=b''): """ Decrypts kgk blobs. If a crypter is passed it is used. If none is passed a new crypter is created with the salt and password. This takes relatively long. If the encrypted_kgk has a wrong length a new kgk is created. :param encrypted_kgk: :type encrypted_kgk: bytes :param kgk_crypter: :type kgk_crypter: Crypter :param password: :type password: bytes :param salt: :type salt: bytes """ if kgk_crypter: self.kgk_crypter = kgk_crypter else: if len(salt) < 32: salt = Crypter.createSalt() self.get_kgk_crypter(password, salt) if len(encrypted_kgk) == 112: kgk_block = self.kgk_crypter.decrypt_unpadded(encrypted_kgk) self.salt2 = kgk_block[:32] self.iv2 = kgk_block[32:48] self.kgk = kgk_block[48:112] else: self.create_new_kgk()
def create_new_kgk(self): """ Creates a new kgk. This overwrites the previous one. :return: the new kgk :rtype: bytes """ self.kgk = os.urandom(64) self.iv2 = Crypter.createIv() self.salt2 = Crypter.createSalt() return self.kgk
def get_kgk_crypter_salt(self): """ Loads the public salt. If there is none it is created and stored. :return: """ self.salt = self.preference_manager.get_salt() if len(self.salt) != 32: self.salt = Crypter.createSalt() self.store_salt(self.salt) return self.salt
def __init__(self, domain): self.domain = domain self.url = None self.username = None self.legacy_password = None self.notes = None self.iterations = 4096 self.salt = Crypter.createSalt() self.creation_date = datetime.now() self.modification_date = self.creation_date self.extra_characters = DEFAULT_CHARACTER_SET_EXTRA self.template = "x" * 10 self.calculate_template(True, True, True, True) self.synced = False
def __init__(self, domain): self.domain = domain self.url = None self.username = None self.legacy_password = None self.notes = None self.iterations = 4096 self.salt = Crypter.createSalt() self.creation_date = datetime.now() self.modification_date = self.creation_date self.extra_characters = DEFAULT_CHARACTER_SET_EXTRA self.template = 'x' * 10 self.calculate_template(True, True, True, True) self.synced = False
def __init__(self, domain): self.domain = domain self.url = None self.username = None self.legacy_password = None self.notes = None self.iterations = 4096 self.salt = Crypter.createSalt() self.length = 10 self.creation_date = datetime.now() self.modification_date = self.creation_date self.used_characters = self.get_default_character_set() self.extra_characters = DEFAULT_CHARACTER_SET_EXTRA self.template = None self.force_character_classes = False self.synced = False
def create_and_save_new_kgk_block(self, kgk_crypter=None): """ Creates a fresh kgk block and saves it. :param kgk_crypter: :type kgk_crypter: Crypter :return: kgk block :rtype: bytes """ self.salt = Crypter.createSalt() self.store_salt(self.salt) if kgk_crypter: self.kgk_crypter = kgk_crypter kgk_block = self.get_fresh_encrypted_kgk() self.preference_manager.store_kgk_block(kgk_block) return kgk_block
def new_salt(self): """ Creates a new salt for the setting. """ self.salt = Crypter.createSalt()
def new_salt(self): """ Creates a new salt for the setting. """ self.salt = Crypter.createSalt()
def fresh_salt2(self): """ Creates a fresh salt for the settings encryption (salt2). """ self.salt2 = Crypter.createSalt()