Skip to content

feat(preuve): attestation PDF horodatée (PAdES) et jeton dans l'export - #26

Merged
PhilippeVienne merged 1 commit into
mainfrom
feat/attestation-pdf
Sep 27, 2026
Merged

PhilippeVienne merged 1 commit into
mainfrom
feat/attestation-pdf

Conversation

@PhilippeVienne

Copy link
Copy Markdown
Contributor

Attestation PDF, comme sur la démonstration, téléchargeable depuis la page de preuve :

  • une page A4 : signataire (nom, fonction, organisation, publication, date de confirmation) et horodatage de l'attestation (date certifiée, empreinte, série, unité, CA, politique), mode de vérification, mention staging ;
  • pièces jointes ISO 32000 : l'attestation .json et son jeton .tsr ;
  • horodatage PAdES du PDF lui-même (/DocTimeStamp, /SubFilter /ETSI.RFC3161) demandé au staging ;
  • PHP sans dépendance (src/pdf.php) ; construit au premier téléchargement, conservé en base une fois horodaté ; si le staging ne répond pas, PDF servi sans champ de signature puis reconstruit.

Export JSON (page de retrait) : ajoute le texte exact de l'attestation et le jeton d'horodatage RFC 3161 en base64.

Vérifié avec un PDF réellement horodaté par le staging :

  • qpdf --check : aucune erreur de structure ; pdfdetach : 2 pièces jointes ; pdftotext : accents corrects ;
  • pyHanko : horodatage intact, valide, de confiance (racine du staging), couverture du fichier entier ;
  • vérificateur de demo.open-eidas.eu : « Horodatage PAdES valide et intact », chaîne TSU → CA → racine validée, pièces jointes détectées ;
  • bash tests/flow.sh : PDF (en-tête, sous-filtre, pièces jointes), horodatage du document vérifié par openssl ts -verify sur les plages ByteRange, cache, jeton dans l'export.

Note : pdfsig (poppler) ne sait pas valider les horodatages de document ETSI.RFC3161 (type « unknown ») — limite de l'outil.

- src/pdf.php : attestation PDF sans dépendance, une page A4 (données de
  la signature et de l'horodatage), attestation JSON et jeton RFC 3161
  en pièces jointes, horodatage PAdES du document (DocTimeStamp,
  ETSI.RFC3161) par l'autorité de staging. Téléchargeable depuis la page
  de preuve, conservé une fois horodaté.
- Export JSON des données personnelles : texte exact de l'attestation et
  jeton d'horodatage en base64.

Co-authored-by: Claude <noreply@anthropic.com>
@PhilippeVienne
PhilippeVienne merged commit 7e24df1 into main Sep 27, 2026
4 checks passed
@PhilippeVienne
PhilippeVienne deleted the feat/attestation-pdf branch September 27, 2026 13:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant