MCPcopy Create free account
hub / github.com/mpdavis/python-jose / TestBackendRsaCompatibility

Class TestBackendRsaCompatibility

tests/algorithms/test_RSA_compat.py:25–124  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

23 reason="Multiple crypto backends not available for backend compatibility tests",
24)
25class TestBackendRsaCompatibility:
26 @pytest.mark.parametrize("BackendSign", CRYPTO_BACKENDS)
27 @pytest.mark.parametrize("BackendVerify", CRYPTO_BACKENDS)
28 @pytest.mark.parametrize("private_key", PRIVATE_KEYS)
29 def test_signing_parity(self, BackendSign, BackendVerify, private_key):
30 key_sign = BackendSign(private_key, ALGORITHMS.RS256)
31 key_verify = BackendVerify(private_key, ALGORITHMS.RS256).public_key()
32
33 msg = b"test"
34 sig = key_sign.sign(msg)
35
36 # valid signature
37 assert key_verify.verify(msg, sig)
38
39 # invalid signature
40 assert not key_verify.verify(msg, b"n" * 64)
41
42 @pytest.mark.parametrize("encoding", ENCODINGS)
43 @pytest.mark.parametrize("BackendFrom", CRYPTO_BACKENDS)
44 @pytest.mark.parametrize("BackendTo", CRYPTO_BACKENDS)
45 @pytest.mark.parametrize("private_key", PRIVATE_KEYS)
46 def test_public_key_to_pem(self, BackendFrom, BackendTo, encoding, private_key):
47 key = BackendFrom(private_key, ALGORITHMS.RS256)
48 key2 = BackendTo(private_key, ALGORITHMS.RS256)
49
50 key1_pem = key.public_key().to_pem(pem_format=encoding).strip()
51 key2_pem = key2.public_key().to_pem(pem_format=encoding).strip()
52 assert key1_pem == key2_pem
53
54 @pytest.mark.parametrize("encoding", ENCODINGS)
55 @pytest.mark.parametrize("BackendFrom", CRYPTO_BACKENDS)
56 @pytest.mark.parametrize("BackendTo", CRYPTO_BACKENDS)
57 @pytest.mark.parametrize("private_key", PRIVATE_KEYS)
58 def test_private_key_to_pem(self, BackendFrom, BackendTo, encoding, private_key):
59 key = BackendFrom(private_key, ALGORITHMS.RS256)
60 key2 = BackendTo(private_key, ALGORITHMS.RS256)
61
62 key1_pem = key.to_pem(pem_format=encoding).strip()
63 key2_pem = key2.to_pem(pem_format=encoding).strip()
64
65 import base64
66
67 a = base64.b64decode(key1_pem[key1_pem.index(b"\n") : key1_pem.rindex(b"\n")])
68 b = base64.b64decode(key2_pem[key2_pem.index(b"\n") : key2_pem.rindex(b"\n")])
69 assert a == b
70
71 assert key1_pem == key2_pem
72
73 @pytest.mark.parametrize("encoding_save", ENCODINGS)
74 @pytest.mark.parametrize("encoding_load", ENCODINGS)
75 @pytest.mark.parametrize("BackendFrom", CRYPTO_BACKENDS)
76 @pytest.mark.parametrize("BackendTo", CRYPTO_BACKENDS)
77 @pytest.mark.parametrize("private_key", PRIVATE_KEYS)
78 def test_public_key_load_cycle(self, BackendFrom, BackendTo, encoding_save, encoding_load, private_key):
79 key = BackendFrom(private_key, ALGORITHMS.RS256)
80
81 pem_pub_reference = key.public_key().to_pem(pem_format=encoding_save).strip()
82 pem_pub_load = key.public_key().to_pem(pem_format=encoding_load).strip()

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…