Esempio n. 1
0
    def it_loads_keys(self):
        key_manager = KeyManager(self._fixture_path)
        level3_key, level5_key = key_manager.get_keys()

        decrypted_level3_key = decrypt_key(level3_key, "masterpassword123")
        decrypted_level5_key = decrypt_key(level5_key, "masterpassword123")

        # Asserting that the key manager correctly loads and populates keys from the 1Password 3
        # generated fixture keychain. The identifiers are arbitrary, but security levels 3 and 5
        # are what 1Password uses internally, and the 25000 iteration PBKDF2 run is what
        # 1Password used as the default at the time the fixture was created.
        self._assert_key_properties(decrypted_level3_key, "BE4CC37CD7C044E79B5CC1CC19A82A13", "SL3", 25000)
        self._assert_key_properties(decrypted_level5_key, "98EB2E946008403280A3A8D9261018A4", "SL5", 25000)
Esempio n. 2
0
    def it_decrypts_items(self):
        encrypted_key = self.get_key()
        decrypted_key = crypto.decrypt_key(encrypted_key, 'masterpassword123')
        encrypted_item = self.get_item()
        decrypted_item = crypto.decrypt_item(encrypted_item, decrypted_key)

        assert decrypted_item['encrypted']['fields'][0]['value'] == 'someuser'
        assert decrypted_item['encrypted']['fields'][1]['value'] == 'password123'
Esempio n. 3
0
    def it_loads_keys(self):
        key_manager = KeyManager(self._fixture_path)
        level3_key, level5_key = key_manager.get_keys()

        decrypted_level3_key = decrypt_key(level3_key, 'masterpassword123')
        decrypted_level5_key = decrypt_key(level5_key, 'masterpassword123')

        # Asserting that the key manager correctly loads and populates keys from the 1Password 3
        # generated fixture keychain. The identifiers are arbitrary, but security levels 3 and 5
        # are what 1Password uses internally, and the 25000 iteration PBKDF2 run is what
        # 1Password used as the default at the time the fixture was created.
        self._assert_key_properties(decrypted_level3_key,
                                    'BE4CC37CD7C044E79B5CC1CC19A82A13', 'SL3',
                                    25000)
        self._assert_key_properties(decrypted_level5_key,
                                    '98EB2E946008403280A3A8D9261018A4', 'SL5',
                                    25000)
Esempio n. 4
0
    def it_decrypts_items(self):
        encrypted_key = self.get_key()
        decrypted_key = crypto.decrypt_key(encrypted_key, 'masterpassword123')
        encrypted_item = self.get_item()
        decrypted_item = crypto.decrypt_item(encrypted_item, decrypted_key)

        assert decrypted_item['encrypted']['fields'][0]['value'] == 'someuser'
        assert decrypted_item['encrypted']['fields'][1][
            'value'] == 'password123'
Esempio n. 5
0
    def it_encrypts_items(self):
        encrypted_key = self.get_key()
        decrypted_key = crypto.decrypt_key(encrypted_key, 'masterpassword123')
        decrypted_item = self.get_item()
        decrypted_item['encrypted'] = {'fields': [{'value': 'foo'}, {'value': 'bar'}, {'ball': '⚽'}]}

        encrypted_item = crypto.encrypt_item(decrypted_item, decrypted_key)
        redecrypted_item = crypto.decrypt_item(encrypted_item, decrypted_key)

        assert redecrypted_item['encrypted']['fields'][0]['value'] == 'foo'
        assert redecrypted_item['encrypted']['fields'][1]['value'] == 'bar'
Esempio n. 6
0
    def it_encrypts_items(self):
        encrypted_key = self.get_key()
        decrypted_key = crypto.decrypt_key(encrypted_key, 'masterpassword123')
        decrypted_item = self.get_item()
        decrypted_item['encrypted'] = {
            'fields': [{
                'value': 'foo'
            }, {
                'value': 'bar'
            }, {
                'ball': '⚽'
            }]
        }

        encrypted_item = crypto.encrypt_item(decrypted_item, decrypted_key)
        redecrypted_item = crypto.decrypt_item(encrypted_item, decrypted_key)

        assert redecrypted_item['encrypted']['fields'][0]['value'] == 'foo'
        assert redecrypted_item['encrypted']['fields'][1]['value'] == 'bar'
Esempio n. 7
0
 def authenticate(self, password):
     self._keys = [
         crypto.decrypt_key(key, password)
         for key in self._key_manager.get_keys()
     ]
Esempio n. 8
0
    def it_creates_keys(self):
        encrypted_key = crypto.create_key('password', 'SL4', 10)
        crypto.decrypt_key(encrypted_key, 'password')

        assert encrypted_key.level == 'SL4'
        assert encrypted_key.iterations == 10
Esempio n. 9
0
 def it_reencrypts_keys_with_new_password(self):
     key = self.get_key()
     decrypted_key = crypto.decrypt_key(key, 'masterpassword123')
     encrypted_key = crypto.encrypt_key(decrypted_key, 'new_and_better_password')
     crypto.decrypt_key(encrypted_key, 'new_and_better_password')
Esempio n. 10
0
 def it_silently_decrypts_keys_with_correct_password(self):
     key = self.get_key()
     crypto.decrypt_key(key, 'masterpassword123')
Esempio n. 11
0
 def it_throws_if_key_decryption_fails(self):
     key = self.get_key()
     crypto.decrypt_key(key, 'wrongpassword')
Esempio n. 12
0
    def it_creates_keys(self):
        encrypted_key = crypto.create_key('password', 'SL4', 10)
        crypto.decrypt_key(encrypted_key, 'password')

        assert encrypted_key.level == 'SL4'
        assert encrypted_key.iterations == 10
Esempio n. 13
0
 def it_reencrypts_keys_with_new_password(self):
     key = self.get_key()
     decrypted_key = crypto.decrypt_key(key, 'masterpassword123')
     encrypted_key = crypto.encrypt_key(decrypted_key,
                                        'new_and_better_password')
     crypto.decrypt_key(encrypted_key, 'new_and_better_password')
Esempio n. 14
0
 def it_silently_decrypts_keys_with_correct_password(self):
     key = self.get_key()
     crypto.decrypt_key(key, 'masterpassword123')
Esempio n. 15
0
 def it_throws_if_key_decryption_fails(self):
     key = self.get_key()
     crypto.decrypt_key(key, 'wrongpassword')
Esempio n. 16
0
 def authenticate(self, password):
     self._keys = [crypto.decrypt_key(key, password) for key in self._key_manager.get_keys()]