docs(conformance): « couvert » exige une preuve de mise en service (D-2) - #63
Open
PhilippeVienne wants to merge 2 commits into
Open
PhilippeVienne wants to merge 2 commits into
PhilippeVienne wants to merge 2 commits into
Conversation
error_response construisait à la main l'octet « bits inutilisés » du PKIFailureInfo, puis le passait à BitString::from_bytes, qui en ajoute un second. Le bit lu n'était donc pas le bon : timeNotAvailable (bit 14) arrivait comme les bits 7 et 22, et openssl affichait « Failure info: unspecified ». Tous les refus étaient concernés (badAlg, unacceptedPolicy, timeNotAvailable…) : un client ne pouvait pas savoir pourquoi sa demande était refusée (RFC 3161 §2.4.2). Trouvé par un test de câblage du binaire tsa-server (constat D-2). Le corpus historique ne contient que les requêtes, et les tests existants vérifiaient le type d'erreur Rust, jamais le DER rendu. - BitString::new(unused, bytes), en DER minimal. - error_response_encodes_the_rfc3161_failure_bit : DER exact de chaque FailureInfo ; openssl_reads_the_failure_reason : openssl nomme la raison. Les deux échouent avec l'ancien encodage. Co-authored-by: Claude <noreply@anthropic.com>
Constat D-2 de l'audit du 2026-09-25 : la matrice prouvait l'existence d'un test, pas la mise en service du mécanisme. C'est ainsi que §7.11 avait pu rester « couvert » alors qu'aucun binaire ne l'appelait. - Nouveau statut « implémenté, pas en service » (mécanisme et test présents, aucun binaire ne l'appelle) : §7.11 (oe-crosstsa, oe-replicate) y passe. - Entry gagne `in_service` : pour une ligne couverte, un test qui exerce un binaire (bin/…) ou une étape d'un job de démonstration réelle (.github/workflows/…). validate() refuse une ligne couverte sans elle. - tests/references.rs résout chaque référence `test` et `in_service` : fichier présent, fonction définie et non #[ignore], étape de workflow existante. La ligne REQ-7.5-01 citait un test #[ignore] : elle cite désormais le test du binaire. - bin/tsa-server/tests/serve.rs, premier test du binaire tsa-server : vrai token SoftHSM, refus d'un certificat hors profil TSU, suspension en enforce (/healthz 503, timeNotAvailable), jeton vérifié par openssl ts -verify, SHA-1 refusé (badAlg). C'est ce test qui a révélé l'encodage fautif du failInfo (commit précédent, PR #62). - ca-server : undersized_ca_keys_are_refused_by_the_binary. - CI : SoftHSM2 installé dans le job de tests ; OE_REQUIRE_SOFTHSM fait échouer le test du binaire au lieu de l'ignorer. - 36 exigences : 17 couvertes, 1 implémentée, 16 écarts, 2 hors périmètre. `/api/v1/conformance` expose `en_service`. Co-authored-by: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Objet
Constat D-2 de l'audit du 2026-09-25 : la matrice prouvait l'existence d'un test, pas la mise en service du mécanisme — c'est ainsi que §7.11 avait pu rester « couvert » sans qu'aucun binaire ne l'appelle. Tranche c, dernière du découpage D (a : #60 → b : #61 → c : cette PR).
Empilement : base
docs/matrix-versions-ids(#61, têted25ee8cà l'ouverture). La branche contient aussi, en premier commit, le correctif #62 (encodage dufailInfo), trouvé par le test du binaire écrit ici et nécessaire à ses assertions. Ordre de merge : #62 (indépendante), #60, #61, puis cette PR ; au rebase surdev, le commit de #62 déjà mergé disparaît de lui-même.Changements
oe-crosstsa,oe-replicate) y passe.in_service, obligatoire pour une ligne couverte (choix de l'utilisateur) : un test qui exerce un binaire (bin/…) ou une étape d'un job de démonstration réelle (.github/workflows/ci.yml, kind/compose).validate()refuse une ligne couverte sans elle.crates/oe-conformance/tests/references.rsrésout mécaniquement chaque référencetestetin_service: fichier présent, fonction définie et non#[ignore], étape de workflow existante. Il a trouvé que la ligneREQ-7.5-01citaitpkcs11_integration.rs, entièrement#[ignore](jamais exécuté en CI) — elle cite désormais le test du binaire.bin/tsa-server/tests/serve.rs— premier test du binairetsa-server: vrai token SoftHSM (clé générée dedans), certificat émis par une CA de test ; refus au démarrage d'un certificat au profil OCSP (EN 319 422 §6) ; enenforcesans heure traçable,/healthz503 et refustimeNotAvailable(EN 319 421TIS-7.7.1-07) ; enmonitor, jeton vérifié paropenssl ts -verify(EN 319 422 §7) et SHA-1 refusé enbadAlg(TS 119 312 §5.1).bin/ca-server/tests/bootstrap_cli.rs::undersized_ca_keys_are_refused_by_the_binary(TS 119 312 §8.4).OE_REQUIRE_SOFTHSM=1fait échouer le test du binaire au lieu de l'ignorer — une preuve de mise en service ne peut plus sauter en silence./api/v1/conformanceexposeen_service. README à jour.Limites
OPENEIDAS_TIME_POLICY=monitor: la suspension enenforcen'est prouvée que par le test du binaire, pas en démonstration réelle.OE_CASTORE_TEST_DSN, absente du job de tests CI (inchangé ici).Vérifications
cargo fmt --check,cargo clippy --workspace --all-targets -- -D warnings(1.97 et 1.98.1),cargo test --workspaceavec PostgreSQL etOE_REQUIRE_SOFTHSM=1,cargo audit --ignore RUSTSEC-2023-0071,cargo deny check licenses: verts.make conformance-docrégénéré.in_service,detects_missing_versions_ids_and_mismatched_clauseséchoue.libsofthsm2à/usr/lib/softhsm/libsofthsm2.so, vérifié sous Ubuntu).Revue humaine obligatoire
Voir PROVENANCE.md. Chaque case est cochée par le
contributeur humain qui valide la PR, après l'avoir fait lui-même.
make licenses)Assistance par IA
Co-authored-by: Claude <noreply@anthropic.com>, auteur et committer restent humains, etscripts/provenance.py archivea été lancé