"""Tests for cryptography utilities.""" from Crypto.Hash import SHA from Crypto.PublicKey import RSA from Crypto.Signature import pkcs1_15 import pytest from collaborator.utils import crypto _TEST_KEY = RSA.generate(2048) @pytest.mark.parametrize("message", [b"test", b"lol", b"this is a test of something"]) def test_verify_signature(message): """Test verifying the signature.""" digest = SHA.new(message) signature = pkcs1_15.new(_TEST_KEY).sign(digest) key_data = _TEST_KEY.publickey().export_key() assert crypto.verify_signature(key_data, signature, message) @pytest.mark.parametrize("message", [b"test", b"lol", b"this is a test of something"]) def test_verify_signature_incorrect(message): """Test verifying signature with incorrect signature.""" digest = SHA.new(message) signature = pkcs1_15.new(_TEST_KEY).sign(digest) key_data = b"""-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwpb91cEYuyJNQepZAVfP ZIlPZfNUefH+n6w9SW3fykqKu938cR7WadQv87oF2VuT+fDt7kqeRziTmPSUhqPU ys/V2Q1rlfJuXbE+Gga37t7zwd0egQ+KyOEHQOpcTwKmtZ81ieGHynAQzsn1We3j wt760MsCPJ7GMT141ByQM+yW1Bx+4SG3IGjXWyqOWrcXsxAvIXkpUD/jK/L958Cg nZEgz0BSEh0QxYLITnW1lLokSx/dTianWPFEhMC9BgijempgNXHNfcVirg1lPSyg z7KqoKUN0oHqWLr2U1A+7kqrl6O2nx3CKs1bj1hToT1+p4kcMoHXA7kA+VBLUpEs VwIDAQAB -----END PUBLIC KEY----- """ assert not crypto.verify_signature(key_data, signature, message)