MCPcopy
hub / github.com/pyca/cryptography / test_roundtrip

Method test_roundtrip

tests/hazmat/primitives/test_hpke.py:121–183  ·  view source on GitHub ↗
(self, backend, kem, kdf, aead)

Source from the content-addressed store, hash-verified

119
120 @pytest.mark.parametrize("kem,kdf,aead", SUPPORTED_SUITES)
121 def test_roundtrip(self, backend, kem, kdf, aead):
122 if kdf == KDF.SHAKE128 and not backend.hash_supported(
123 hashes.SHAKE128(digest_size=32)
124 ):
125 pytest.skip("SHAKE128 not supported")
126 if kdf == KDF.SHAKE256 and not backend.hash_supported(
127 hashes.SHAKE256(digest_size=64)
128 ):
129 pytest.skip("SHAKE256 not supported")
130 if (
131 kem
132 in [
133 KEM.MLKEM768,
134 KEM.MLKEM1024,
135 KEM.MLKEM768_X25519,
136 KEM.MLKEM1024_P384,
137 ]
138 and not backend.mlkem_supported()
139 ):
140 pytest.skip("ML-KEM not supported")
141 if kem in [
142 KEM.MLKEM768_X25519,
143 KEM.MLKEM1024_P384,
144 ] and not backend.hash_supported(hashes.SHA3_256()):
145 pytest.skip("SHA3-256 not supported")
146 suite = Suite(kem, kdf, aead)
147
148 sk_r: (
149 x25519.X25519PrivateKey
150 | ec.EllipticCurvePrivateKey
151 | mlkem.MLKEM768PrivateKey
152 | mlkem.MLKEM1024PrivateKey
153 | MLKEM768X25519PrivateKey
154 | MLKEM1024P384PrivateKey
155 )
156 if kem == KEM.X25519:
157 sk_r = x25519.X25519PrivateKey.generate()
158 elif kem == KEM.P256:
159 sk_r = ec.generate_private_key(ec.SECP256R1())
160 elif kem == KEM.P384:
161 sk_r = ec.generate_private_key(ec.SECP384R1())
162 elif kem == KEM.P521:
163 sk_r = ec.generate_private_key(ec.SECP521R1())
164 elif kem == KEM.MLKEM768:
165 sk_r = mlkem.MLKEM768PrivateKey.generate()
166 elif kem == KEM.MLKEM1024:
167 sk_r = mlkem.MLKEM1024PrivateKey.generate()
168 elif kem == KEM.MLKEM768_X25519:
169 sk_r = MLKEM768X25519PrivateKey(
170 mlkem.MLKEM768PrivateKey.generate(),
171 x25519.X25519PrivateKey.generate(),
172 )
173 else:
174 sk_r = MLKEM1024P384PrivateKey(
175 mlkem.MLKEM1024PrivateKey.generate(),
176 ec.generate_private_key(ec.SECP384R1()),
177 )
178 pk_r = sk_r.public_key()

Callers

nothing calls this directly

Calls 7

hash_supportedMethod · 0.80
mlkem_supportedMethod · 0.80
generateMethod · 0.45
generate_private_keyMethod · 0.45
public_keyMethod · 0.45
encryptMethod · 0.45
decryptMethod · 0.45

Tested by

no test coverage detected