(self, backend, kem, kdf, aead)
| 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() |
nothing calls this directly
no test coverage detected