コード例 #1
0
    def setUp(self):
        self._fixtures_dir = pjoin(BASE_DIR, 'fixtures/')

        self._dir1 = pjoin(self._fixtures_dir, 'public/')
        self._dir2 = pjoin(self._fixtures_dir, 'private/')

        self._encrypter = HybridCryptoEncrypter(keys_path=self._dir1)
        self._decrypter = HybridCryptoDecrypter(keys_path=self._dir2)
コード例 #2
0
class HybridCryptoTestCase(unittest.TestCase):
    def setUp(self):
        self._fixtures_dir = pjoin(BASE_DIR, 'fixtures/')

        self._dir1 = pjoin(self._fixtures_dir, 'public/')
        self._dir2 = pjoin(self._fixtures_dir, 'private/')

        self._encrypter = HybridCryptoEncrypter(keys_path=self._dir1)
        self._decrypter = HybridCryptoDecrypter(keys_path=self._dir2)

    def test_aes_encrypt_and_decrypt_round_trip(self):
        test_data = [
            'foo',
            'foo bar ponies',
            'ponies bar foo ponies',
            'abcd12345'
            'test99',
            'a' * 500 + 'b' * 500 + 'c' * 1000
        ]

        key = RandBytes(n=(256/8))

        for plain_text in test_data:
            encrypted = self._encrypter._aes_encrypt(key=key, data=plain_text)
            self.assertNotEqual(encrypted, plain_text)

            decrypted = self._decrypter._aes_decrypt(key=key, data=encrypted)
            self.assertEqual(decrypted, plain_text)

    def test_encrypt_and_decrypt_round_trip(self):
        test_data = [
            # Short messages (only public-key cryptography is used)
            'foo',
            'foo bar ponies',
            'ponies bar foo ponies',
            'abcd12345'
            'test99',
            'a' * 214,  # 2048 / 8 - 41

            # Long messages (PKC + AES CBC is used)
            'a' * 500 + 'b' * 500 + 'c' * 500,
            'test' * 100
        ]

        for data in test_data:
            encrypted = self._encrypter.encrypt(data=data)
            self.assertNotEqual(encrypted, data)

            decrypted = self._decrypter.decrypt(data=encrypted)
            self.assertEqual(decrypted, data)
コード例 #3
0
    def setUp(self):
        self._fixtures_dir = pjoin(BASE_DIR, 'fixtures/')

        self._dir1 = pjoin(self._fixtures_dir, 'public/')
        self._dir2 = pjoin(self._fixtures_dir, 'private/')

        self._encrypter = HybridCryptoEncrypter(keys_path=self._dir1)
        self._decrypter = HybridCryptoDecrypter(keys_path=self._dir2)
コード例 #4
0
class HybridCryptoTestCase(unittest.TestCase):
    def setUp(self):
        self._fixtures_dir = pjoin(BASE_DIR, 'fixtures/')

        self._dir1 = pjoin(self._fixtures_dir, 'public/')
        self._dir2 = pjoin(self._fixtures_dir, 'private/')

        self._encrypter = HybridCryptoEncrypter(keys_path=self._dir1)
        self._decrypter = HybridCryptoDecrypter(keys_path=self._dir2)

    def test_aes_encrypt_and_decrypt_round_trip(self):
        test_data = [
            'foo', 'foo bar ponies', 'ponies bar foo ponies', 'abcd12345'
            'test99', 'a' * 500 + 'b' * 500 + 'c' * 1000
        ]

        key = RandBytes(n=(256 / 8))

        for plain_text in test_data:
            encrypted = self._encrypter._aes_encrypt(key=key, data=plain_text)
            self.assertNotEqual(encrypted, plain_text)

            decrypted = self._decrypter._aes_decrypt(key=key, data=encrypted)
            self.assertEqual(decrypted, plain_text)

    def test_encrypt_and_decrypt_round_trip(self):
        test_data = [
            # Short messages (only public-key cryptography is used)
            'foo',
            'foo bar ponies',
            'ponies bar foo ponies',
            'abcd12345'
            'test99',
            'a' * 214,  # 2048 / 8 - 41

            # Long messages (PKC + AES CBC is used)
            'a' * 500 + 'b' * 500 + 'c' * 500,
            'test' * 100
        ]

        for data in test_data:
            encrypted = self._encrypter.encrypt(data=data)
            self.assertNotEqual(encrypted, data)

            decrypted = self._decrypter.decrypt(data=encrypted)
            self.assertEqual(decrypted, data)
コード例 #5
0
    def setUp(self):
        client_cert = pjoin(THIS_DIR, '../fixtures/client/certs/client1.crt')
        client_key = pjoin(THIS_DIR, '../fixtures/client/keys/client1.key')
        ca_certs = pjoin(THIS_DIR, '../fixtures/ca/myCA.crt')

        kwargs = {'client_cert': client_cert, 'client_key': client_key,
                  'ca_certs': ca_certs}

        keys_path = pjoin(THIS_DIR, '../fixtures/keys/public')
        self.encrypter = HybridCryptoEncrypter(keys_path=keys_path)

        self.get_client = GetClient(server_urls=['https://localhost:8888'],
                                    **kwargs)
        self.set_client = SetClient(server_urls=['https://localhost:9999'],
                                    **kwargs)
コード例 #6
0
class ClientTestCase(unittest.TestCase):
    def setUp(self):
        client_cert = pjoin(THIS_DIR, '../fixtures/client/certs/client1.crt')
        client_key = pjoin(THIS_DIR, '../fixtures/client/keys/client1.key')
        ca_certs = pjoin(THIS_DIR, '../fixtures/ca/myCA.crt')

        kwargs = {'client_cert': client_cert, 'client_key': client_key,
                  'ca_certs': ca_certs}

        keys_path = pjoin(THIS_DIR, '../fixtures/keys/public')
        self.encrypter = HybridCryptoEncrypter(keys_path=keys_path)

        self.get_client = GetClient(server_urls=['https://localhost:8888'],
                                    **kwargs)
        self.set_client = SetClient(server_urls=['https://localhost:9999'],
                                    **kwargs)

    def test_get_refresh_token_doesnt_exist(self):
        self.assertRaises(UserDoesNotExist, self.get_client.get_refresh_token,
                          account_uuid='inexistent')

    def test_get_access_token_doesnt_exist(self):
        self.assertRaises(UserDoesNotExist, self.get_client.get_access_token,
                          account_uuid='inexistent')

    def test_set_refresh_token(self):
        self.assertRaises(UserDoesNotExist, self.get_client.get_refresh_token,
                          account_uuid='user1')

        # get_refresh_token
        token = self.encrypter.encrypt(data='footoken1')
        self.assertTrue(self.set_client.set_refresh_token('user1',
                                                          token))

        token = self.get_client.get_refresh_token('user1')
        self.assertEqual(token, 'footoken1')

        token = self.encrypter.encrypt(data='footoken2')
        self.assertTrue(self.set_client.set_refresh_token('user1',
                                                          token))

        token = self.get_client.get_refresh_token('user1')
        self.assertEqual(token, 'footoken2')

        # get_access_token
        # TODO: mock google api server url

    def test_delete(self):
        account_uuid = '68bdf92f-64a4-45ea-a20a-5a31cb92c204'
        self.assertRaises(UserDoesNotExist, self.get_client.get_refresh_token,
                          account_uuid=account_uuid)

        token = self.encrypter.encrypt(data='footoken2')
        self.assertTrue(self.set_client.delete(account_uuid))
        self.assertTrue(self.set_client.set_refresh_token(account_uuid,
                                                          token))
        token = self.get_client.get_refresh_token(account_uuid)
        self.assertEqual(token, 'footoken2')
        self.assertTrue(self.set_client.delete(account_uuid))
        self.assertRaises(UserDoesNotExist, self.get_client.get_refresh_token,
                          account_uuid=account_uuid)