Пример #1
0
    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()
Пример #2
0
    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
Пример #3
0
    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
Пример #5
0
 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
Пример #6
0
 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
Пример #7
0
    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()
Пример #9
0
 def new_salt(self):
     """
     Creates a new salt for the setting.
     """
     self.salt = Crypter.createSalt()
Пример #10
0
 def fresh_salt2(self):
     """
     Creates a fresh salt for the settings encryption (salt2).
     """
     self.salt2 = Crypter.createSalt()