devolutions-crypto 0.9.2

An abstraction layer for the cryptography used by Devolutions
Documentation
import unittest
import devolutions_crypto
from base64 import b64encode, b64decode

class TestAsymmetric(unittest.TestCase):
    def test_asymmetric(self):
        keypair = devolutions_crypto.generate_keypair()
        plaintext = b'Test plaintext'

        ciphertext = devolutions_crypto.encrypt_asymmetric(plaintext, keypair.public_key)

        self.assertEqual(devolutions_crypto.decrypt_asymmetric(ciphertext, keypair.private_key), plaintext)

    def test_asymmetric_with_aad(self):
        keypair = devolutions_crypto.generate_keypair()
        plaintext = b'Test plaintext'
        aad = b"Test AAD"

        ciphertext = devolutions_crypto.encrypt_asymmetric(plaintext, keypair.public_key, aad)

        self.assertEqual(devolutions_crypto.decrypt_asymmetric(ciphertext, keypair.private_key, aad), plaintext)

        with self.assertRaises(devolutions_crypto.DevolutionsCryptoException):
            devolutions_crypto.decrypt_asymmetric(ciphertext, keypair.private_key)

        with self.assertRaises(devolutions_crypto.DevolutionsCryptoException):
            devolutions_crypto.decrypt_asymmetric(ciphertext, keypair.private_key, aad = b"Wrong AAD")


if __name__ == "__main__":
    unittest.main()