Ce document présente le plan des tests d’interopérabilité. Ces tests valident que les artefacts générés par QPKI sont lisibles par des implémentations externes (OpenSSL, BouncyCastle).
Métrique Valeur Validateurs 2 (OpenSSL 3.6+, BouncyCastle 1.83+) Tests OpenSSL 7 scripts Tests BouncyCastle 13 classes Java Artefacts testés Cert, CRL, CSR, CMS, OCSP, TSA Emplacement test/crossval/
# BouncyCastle seulement (nécessite Java 17+ et Maven)
# Générer les fixtures avant les tests
Artefact OpenSSL BouncyCastle Algorithmes testés Certificate TC-C-OSL-CERT TC-C-BC-CERT EC, RSA, ML-DSA, SLH-DSA, Catalyst, Composite CRL TC-C-OSL-CRL TC-C-BC-CRL EC, ML-DSA, Catalyst, Composite CSR TC-C-OSL-CSR TC-C-BC-CSR EC, ML-DSA CMS SignedData TC-C-OSL-CMS TC-C-BC-CMS EC, ML-DSA, SLH-DSA CMS EnvelopedData TC-C-OSL-CMSENC TC-C-BC-CMSENC RSA, ECDH, ML-KEM OCSP Response TC-C-OSL-OCSP TC-C-BC-OCSP EC, ML-DSA TSA Timestamp TC-C-OSL-TSA TC-C-BC-TSA EC, ML-DSA Extensions - TC-C-BC-EXT Custom X.509 extensions
Prérequis : OpenSSL 3.6+ avec support PQC natif
Script TC-ID Description Commande OpenSSL verify_certs.shTC-C-OSL-CERT-001/002 Vérifie certificats EC et PQC openssl verifyverify_crl.shTC-C-OSL-CRL-001 Vérifie CRL openssl crl -verifyverify_csr.shTC-C-OSL-CSR-001 Vérifie signature CSR openssl req -verifyverify_cms.shTC-C-OSL-CMS-001 Vérifie CMS SignedData openssl cms -verifyverify_cms_encrypt.shTC-C-OSL-CMSENC-001 Déchiffre CMS EnvelopedData openssl cms -decryptverify_ocsp.shTC-C-OSL-OCSP-001 Vérifie réponse OCSP openssl ocsp -verifyverify_tsa.shTC-C-OSL-TSA-001 Vérifie timestamp token openssl ts -verify
TC-ID Nom Algorithmes Résultat attendu TC-C-OSL-CERT-001 Certificat ECDSA P-256, P-384 OKTC-C-OSL-CERT-002 Certificat ML-DSA ML-DSA-44/65/87 OKTC-C-OSL-CRL-001 CRL standard EC, ML-DSA verify OKTC-C-OSL-CSR-001 CSR signature EC, ML-DSA verify OKTC-C-OSL-CMS-001 CMS SignedData EC, ML-DSA, SLH-DSA Verification successfulTC-C-OSL-CMSENC-001 CMS EnvelopedData RSA, ECDH, ML-KEM Contenu déchiffré TC-C-OSL-OCSP-001 OCSP Response EC, ML-DSA Response verify OKTC-C-OSL-TSA-001 TSA Token EC, ML-DSA Verification: OK
Feature Statut Notes Catalyst hybrid Partiel Seule signature ECDSA vérifiée, PQC ignorée Composite Non supporté Pas de support composite dans OpenSSL SLH-DSA CRL OK Supporté depuis OpenSSL 3.6
Prérequis : Java 17+, Maven 3.8+
Classe TC-ID Description ClassicalVerifyTest.javaTC-C-BC-CERT-001 Certificats ECDSA/RSA PQCVerifyTest.javaTC-C-BC-CERT-002 Certificats ML-DSA, SLH-DSA CatalystVerifyTest.javaTC-C-BC-CERT-003 Certificats Catalyst hybrid CompositeVerifyTest.javaTC-C-BC-CERT-004 Certificats Composite hybrid CRLVerifyTest.javaTC-C-BC-CRL-001 CRL standard CatalystCRLVerifyTest.javaTC-C-BC-CRL-002 CRL Catalyst CompositeCRLVerifyTest.javaTC-C-BC-CRL-003 CRL Composite CSRVerifyTest.javaTC-C-BC-CSR-001 CSR signature CMSVerifyTest.javaTC-C-BC-CMS-001 CMS SignedData CMSEnvelopedTest.javaTC-C-BC-CMSENC-001 CMS EnvelopedData/AuthEnvelopedData OCSPVerifyTest.javaTC-C-BC-OCSP-001 OCSP Response TSAVerifyTest.javaTC-C-BC-TSA-001 TSA Timestamp ExtensionsVerifyTest.javaTC-C-BC-EXT-001 Extensions X.509 custom
TC-ID Nom Algorithmes Résultat attendu TC-C-BC-CERT-001 Certificat classique ECDSA, RSA Chaîne validée TC-C-BC-CERT-002 Certificat PQC ML-DSA, SLH-DSA Signature validée TC-C-BC-CERT-003 Certificat Catalyst EC + ML-DSA Les deux signatures validées TC-C-BC-CERT-004 Certificat Composite ECDSA-ML-DSA Signature composite validée TC-C-BC-CRL-001 CRL standard EC, ML-DSA Signature CRL validée TC-C-BC-CRL-002 CRL Catalyst EC + ML-DSA Les deux signatures validées TC-C-BC-CRL-003 CRL Composite Composite Signature composite validée TC-C-BC-CSR-001 CSR EC, ML-DSA Signature CSR validée TC-C-BC-CMS-001 CMS SignedData EC, ML-DSA, SLH-DSA SignedData validé TC-C-BC-CMSENC-001 CMS EnvelopedData RSA, ECDH, ML-KEM Contenu déchiffré TC-C-BC-OCSP-001 OCSP Response EC, ML-DSA Response validée TC-C-BC-TSA-001 TSA Token EC, ML-DSA Token validé TC-C-BC-EXT-001 Extensions custom - Extensions parsées correctement
Feature Statut Notes Catalyst hybrid OK Support complet Composite Partiel BC 1.83 utilise draft-07, QPKI draft-13 (OID différent) ML-KEM CMS OK Support complet
Les fixtures sont des artefacts générés par QPKI utilisés comme entrée des tests.
# Génère toutes les fixtures
./test/crossval/generate_qpki_fixtures.sh
├── ec/ # Artefacts EC (P-256, P-384)
├── ml/ # Artefacts ML-DSA (44, 65, 87)
├── slh/ # Artefacts SLH-DSA
├── hybrid/ # Artefacts hybrides
└── extensions/ # Tests d'extensions custom
Job Tests Durée Prérequis crosstest-opensslTC-C-OSL-* ~5 min OpenSSL 3.6+ crosstest-bcTC-C-BC-* ~3 min Java 17+, Maven
- uses : actions/checkout@v4
- name : Setup OpenSSL 3.6
# Install OpenSSL with PQC support
uses : actions/setup-java@v4
- name : Generate fixtures
run : make crosstest-fixtures
- name : Run OpenSSL tests
run : make crosstest-openssl
- name : Run BouncyCastle tests
# Vérifier les algorithmes PQC
openssl list -signature-algorithms | grep -i ml
BC 1.83 utilise les OIDs draft-07 (2.16.840.1.114027.80.8.1.x), QPKI utilise draft-13 (1.3.6.1.5.5.7.6.x).
Workaround : Attendre BC 1.84+ ou tester uniquement Catalyst.
ls -la test/crossval/fixtures/