Aller au contenu

PD-36 — Acceptabilité


📚 Navigation User Story | Document | | | ---------- | -- | | 📋 [Spécification](PD-36-specification.md) | | | 🛠️ [Plan d'implémentation](PD-36-plan.md) | | | ✅ **Critères d'acceptation** | *(ce document)* | | 📝 [Retour d'expérience](PD-36-rex.md) | | [← Retour à crypto-proof](../PD-189-epic.md) · [↑ Index User Story](index.md)

Objectif

Vérifier que l’implémentation est conforme à la spécification, respecte l’ensemble des invariants ProbatioVault et ne présente aucune incohérence ou oubli critique.


Périmètre de vérification

La revue d’acceptabilité vérifie explicitement :

  • la conformité stricte à la spécification fonctionnelle
  • le respect de tous les invariants applicables
  • la couverture des scénarios de test définis
  • l’absence d’incohérences, oublis ou régressions

Écarts identifiés

Classification des écarts

Niveau Définition
BLOQUANT Violation d’un invariant, faille de sécurité, non-conformité majeure à la spec
MAJEUR Fonction incomplète, comportement non conforme mais sans rupture de sécurité
MINEUR Détail, dette acceptable, amélioration non critique

Détail des écarts

co


Conclusion d’acceptabilité

REFUSÉ — Écart bloquant sur l’authentification mTLS non opérationnelle (E-01), complété par des écarts majeurs sur la gestion RSA des CSR et la robustesse des sessions (E-02, E-03).

2026-01-05 — Suivi E-04

  • Statut précédent : OUVERT
  • Statut actuel : RÉSOLU
  • Justification factuelle : validateHsmConfig() est appelée en fail-fast dans src/modules/crypto/hsm/hsm.service.ts (initialize) et lève si pin ou libraryPath manquants ; validation présente dans hsm.config.ts.
  • Preuve de vérification : src/modules/crypto/hsm/hsm.service.ts (initialize), src/modules/crypto/hsm/hsm.config.ts

2026-01-05 — Suivi E-03

  • Statut précédent : OUVERT
  • Statut actuel : RÉSOLU
  • Justification factuelle : Pool de sessions HSM implémenté (HsmSessionPool), paramètres sessionTimeout/maxSessions utilisés, renouvellement avant expiration, méthodes acquirePooledSession/releasePooledSession et fermeture dans finalize().
  • Preuve de vérification : src/modules/crypto/hsm/providers/cloudhsm-pkcs11.provider.ts (HsmSessionPool, initialize/finalize/pool APIs)

2026-01-05 — Suivi E-02

  • Statut précédent : OUVERT
  • Statut actuel : RÉSOLU
  • Justification factuelle : Prise en charge RSA/ECDSA dans CSR/public key : getPublicKey() détecte CKK_RSA/CKK_EC, construit SPKI RSA via buildRsaSpki; createCsr() détecte le type de clé, choisit SignatureAlgorithm.RSA_PSS_SHA384 pour RSA, ECDSA_SHA384 pour EC ; OID/paramètres ajustés.
  • Preuve de vérification : src/modules/crypto/hsm/providers/cloudhsm-pkcs11.provider.ts (getPublicKey, buildRsaSpki, createCsr, getSignMechanism), src/modules/crypto/hsm/interfaces/pkcs11.interface.ts (RSA_PSS_SHA384)

2026-01-05 — Suivi E-01

  • Statut précédent : OUVERT
  • Statut actuel : RÉSOLU
  • Justification factuelle : buildMtlsAgent() utilise désormais privateKeyEngine + privateKeyIdentifier avec URI PKCS#11 RFC 7512, délégation de signature TLS au HSM (OpenSSL engine), TLS options/CA pass-through, métadonnées HsmMtlsAgent.
  • Preuve de vérification : src/modules/crypto/hsm/hsm.service.ts (buildMtlsAgent, buildPkcs11Uri) ; tests PASS hsm.service.spec.ts (22 tests E-01, 66/66)

Verdict d’acceptabilité (courant)

Verdict actuel : ✅ ACCEPTÉ
Date : 2026-01-05
Motif synthétique : E-01 résolu (mTLS via PKCS#11/OpenSSL engine) et E-02/E-03/E-04 déjà résolus ; plus aucun écart ouvert.

Historique des verdicts

Date Verdict Commentaire
2026-01-05 ⛔ REFUSÉ Verdict initial
2026-01-05 ⛔ REFUSÉ E-02/E-03/E-04 résolus, E-01 bloquant restant
2026-01-05 ✅ ACCEPTÉ E-01 résolu, plus d’écarts ouverts