Example #1
0
 def test_encrypt_decrypt_without_assoc(self):
     # generate keyring
     self.set_password('system', 'user', 'password')
     config = self.get_config()
     # generate and save password without assoc data
     encrypted = self.keyring.encrypt('password'.encode('utf-8'))
     password_base64 = '\n' + encodebytes(encrypted).decode()
     config.set('system', 'user', password_base64)
     self.save_config(config)
     assert self.keyring.get_password('system', 'user') == 'password'
Example #2
0
 def test_encrypt_decrypt_without_assoc(self):
     # generate keyring
     self.keyring.set_password('system', 'user', 'password')
     config = self.get_config()
     # generate and save password without assoc data
     encrypted = self.keyring.encrypt('password'.encode('utf-8'))
     password_base64 = '\n' + encodebytes(encrypted).decode()
     config.set('system', 'user', password_base64)
     self.save_config(config)
     self.assertEqual(self.keyring.get_password('system', 'user'), 'password')
Example #3
0
    def encrypt(self, password, assoc=None):
        # encrypt password, ignore associated data
        from Crypto.Random import get_random_bytes

        salt = get_random_bytes(self.block_size)
        from Crypto.Cipher import AES

        IV = get_random_bytes(AES.block_size)
        cipher = self._create_cipher(self.keyring_key, salt, IV)
        password_encrypted = cipher.encrypt(self.pw_prefix + password)
        # Serialize the salt, IV, and encrypted password in a secure format
        data = dict(salt=salt, IV=IV, password_encrypted=password_encrypted)
        for key in data:
            # spare a few bytes: throw away newline from base64 encoding
            data[key] = encodebytes(data[key]).decode()[:-1]
        return json.dumps(data).encode()
Example #4
0
 def encrypt(self, password, assoc = None):
     # encrypt password, ignore associated data
     from Crypto.Random import get_random_bytes
     salt = get_random_bytes(self.block_size)
     from Crypto.Cipher import AES
     IV = get_random_bytes(AES.block_size)
     cipher = self._create_cipher(self.keyring_key, salt, IV)
     password_encrypted = cipher.encrypt(self.pw_prefix + password)
     # Serialize the salt, IV, and encrypted password in a secure format
     data = dict(
         salt=salt, IV=IV, password_encrypted=password_encrypted,
     )
     for key in data:
         # spare a few bytes: throw away newline from base64 encoding
         data[key] = encodebytes(data[key]).decode()[:-1]
     return json.dumps(data).encode()