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)
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'
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)
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'
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'
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'
def authenticate(self, password): self._keys = [ crypto.decrypt_key(key, password) for key in self._key_manager.get_keys() ]
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
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')
def it_silently_decrypts_keys_with_correct_password(self): key = self.get_key() crypto.decrypt_key(key, 'masterpassword123')
def it_throws_if_key_decryption_fails(self): key = self.get_key() crypto.decrypt_key(key, 'wrongpassword')
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
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')
def it_silently_decrypts_keys_with_correct_password(self): key = self.get_key() crypto.decrypt_key(key, 'masterpassword123')
def it_throws_if_key_decryption_fails(self): key = self.get_key() crypto.decrypt_key(key, 'wrongpassword')
def authenticate(self, password): self._keys = [crypto.decrypt_key(key, password) for key in self._key_manager.get_keys()]