Test use of PQC client certificates / CAs with Pulp + increase aiohttp default header size limits slightly - #7962
Conversation
|
Failure is expected due to https://redhat.atlassian.net/browse/PULP-2216 I will include a patch once I'm done refactoring the tests. Then I believe pulp/pulp-oci-images#841 is still required in order for tests to pass. |
f1d0916 to
6dae71e
Compare
|
Test run without the patch demonstrates failure with ML-DSA-87: https://github.com/pulp/pulpcore/actions/runs/31559420159/job/93998797369?pr=7962 Satellite experienced failures with ML-DSA-65, but that is because they tested with substantial entitlement metadata shoved into the certificate as an extension. We're not doing that, so ML-DSA-65 squeaks through, but ML-DSA-87 fails. Maybe we should test putting a bit extra into the certificate to emulate entitlements? |
|
|
||
|
|
||
| @pytest.fixture(scope="class") | ||
| def file_remote_pqc_client_cert_req_factory( |
There was a problem hiding this comment.
This is following an existing pattern, though TBH I'm not sure if it's worth creating brand new fixtures for something that gets used once and might as well be just a function call.
47b5b52 to
f56949c
Compare
0d5f231 to
605e630
Compare
Test scenarios added: Certguard (parameterized over ML-DSA-65 and ML-DSA-87): - Download with a valid PQC client cert returns 200 - Download with an untrusted PQC client cert returns 403 - Download with no client cert returns 403 Remote sync (ML-DSA-65): - on_demand sync over HTTPS with PQC server certificate (TLS validation) - on_demand sync over HTTPS with PQC mutual TLS (client cert required) Static PQC cert/key assets and a generation script are included for both ML-DSA-65 and ML-DSA-87. Certs are generated using pycryptography's x509 builder API. Assisted-By: Claude Opus 4.6
Post-quantum (ML-DSA) X.509 certificates are significantly larger than traditional RSA/ECDSA certificates. When a reverse proxy forwards a PQC client certificate via the X-CLIENT-CERT header, it can exceed aiohttp's default 8190-byte max_field_size, causing a 400 LineTooLong error. Increase the limit to 16KB. Assisted-By: Claude Opus 4.6
We want the lower bound to have PQC support.
|
📜 Checklist
See: Pull Request Walkthrough