Aller au contenu

Le paysage des normes

Spec: ISO 32000-2 Spec: ETSI EN 319 142-1 Spec: RFC 3161 Spec: WCAG 2.2 Evidence: Standard-backed

Un moteur PDF ne se conforme pas à un seul document. Il dépend d’une petite fédération de documents, rédigés par des organismes différents, qui se renvoient les uns aux autres. Cette page cartographie cette fédération telle que NextPDF la suit. Elle décrit aussi le chemin qu’emprunte une clause, de « la norme l’exige » à « le moteur l’applique, et un test le prouve ».

Elle s’adresse aux ingénieures et ingénieurs chevronnés qui doivent savoir quel document régit un comportement avant de décider si l’interprétation qu’en fait NextPDF est défendable.

« Prise en charge du PDF » est une affirmation qui masque une question : prise en charge de quoi, exactement ? La syntaxe de base, c’est ISO 32000-2. Les signatures passent par l’ETSI. Les horodatages sont un protocole de l’IETF. Le HTML et le CSS rendus par le moteur relèvent du W3C. Le chiffrement sous-jacent relève du NIST. L’accessibilité de la sortie relève à nouveau du W3C.

Si une bibliothèque traite tout cela comme un bloc indifférencié, tu ne peux pas raisonner correctement sur une défaillance. Quand un validateur rejette une facture signée, la première question utile n’est pas « le PDF est-il corrompu ». C’est « la clause de quelle norme n’a pas été respectée, et dans quelle couche ». Pour poser cette question, il te faut une carte qui nomme les organismes et une explication honnête de la façon dont une clause devient un comportement.

  • NextPDF suit cinq organismes de normalisation. L’ISO fait autorité sur le format. L’ETSI fait autorité sur les profils de signature européens. L’IETF fait autorité sur les protocoles de transport (horodatages, primitives cryptographiques par référence). Le W3C fait autorité sur le HTML, le CSS et les critères d’accessibilité. Le NIST fait autorité sur les algorithmes cryptographiques approuvés.
  • Ces documents forment des pistes, et non une simple liste : une seule capacité de PDF signé parcourt ISO → ETSI → IETF → NIST, chaque couche renvoyant normativement à la suivante.
  • Une clause ne devient pas un comportement parce qu’on la lit. Elle devient un comportement parce qu’elle est paraphrasée et citée, rattachée à une exigence, implémentée, puis figée par un test. La page qui décrit le comportement l’indique par son niveau de preuve.
  • Lorsqu’une clause est obligatoire, elle porte un mot-clé normatif (un shall, un must). NextPDF traite ces mots-clés comme le contrat. Un should est une recommandation qu’il documente comme telle, et non comme une garantie.

ISO 32000-2 est le centre. Il définit ce qu’est un fichier conforme. Un fichier conforme doit respecter chaque exigence du document, tout en pouvant omettre toute fonctionnalité que le document n’exige pas explicitement Spec: ISO 32000-2, §6 . Il fixe aussi l’obligation du producteur : tout ce que NextPDF crée ou modifie dans un fichier doit être conforme au format et rester cohérent avec les éléments déjà présents Spec: ISO 32000-2, §6 . À elle seule, cette clause explique pourquoi le moteur refuse d’émettre une mise à jour incrémentale structurellement incohérente. Ce n’est pas une préférence de NextPDF. C’est la règle propre au format.

Depuis ce centre, ISO 32000-2 renvoie vers l’extérieur. Le traitement des signatures y est défini « par renvoi » à la série ETSI EN 319 142 pour PAdES. L’ETSI, à son tour, renvoie à l’IETF RFC 3161 pour le jeton d’horodatage, et à la série NIST FIPS pour les algorithmes de hachage et de signature. Une capacité est donc un chemin à travers plusieurs documents, dont chacun est normatif pour sa propre couche.

  1. Step 1 of 5: ISO 32000-2 §12.8 signatures
  2. Step 2 of 5: ETSI EN 319 142-1 PAdES baseline
  3. Step 3 of 5: RFC 3161 timestamp token
  4. Step 4 of 5: NIST FIPS 180-4 hash strength
  5. Step 5 of 5: WCAG 2.2 tagged output
La piste de normes que traverse un seul PDF signé à validité long terme : ISO définit le conteneur et renvoie à l'ETSI pour le profil de signature ; l'ETSI exige un horodatage IETF ; les primitives cryptographiques sont approuvées par le NIST ; la sortie rendue est tenue à l'accessibilité W3C. Chaque flèche est un renvoi normatif, et non une association lâche.

La manière risquée de travailler avec les normes consiste à lire une clause puis à écrire du code de mémoire. Le chemin suivi par NextPDF est délibérément plus long, parce que c’est celui que tu peux auditer :

  1. Retrieve The clause is read from the standard, not from memory.
  2. Cite It is paraphrased and pinned with a chunk digest, never quoted.
  3. Classify Its keyword (shall / should / may) sets whether it is a contract or a recommendation.
  4. Map The obligation becomes a concrete engine requirement.
  5. Implement The requirement is built into the pipeline.
  6. Pin A test holds the behaviour against drift.
  7. Tag The page that describes it declares its evidence level.
Le chemin d'une clause normative à un comportement testé du moteur : récupérer et citer la clause, classer son obligation d'après son mot-clé normatif, la rattacher à une exigence du moteur, l'implémenter, la figer par un test, puis étiqueter la page de documentation avec sa base de preuve. Une clause qui s'arrête avant le test est une affirmation, pas un comportement.

C’est à l’étape « classer » que se règle l’essentiel de l’ambiguïté. Les spécifications encodent leurs niveaux d’exigence dans des mots-clés : la famille bien connue MUST, SHALL, SHOULD, MAY. Le sens de ces mots-clés est fixé par la convention IETF des mots-clés d’exigence, mise à jour pour préciser que seules les formes en majuscules sont normatives, puis appliquée à la prose descriptive de chaque spécification Spec: RFC 2119 Spec: RFC 8174 . NextPDF lit un shall comme une frontière stricte que le moteur ne franchit pas, et un should comme une recommandation qu’il suit et documente comme une recommandation — jamais comme une promesse. Cette distinction est la différence entre un énoncé de capacité honnête et une promesse excessive.

« Conforme » se résume rarement à un seul bit. Les normes de signature sont graduées — le profil européen à validité long terme avec archivage, par exemple, existe précisément pour ajouter des jetons d’horodatage qui maintiennent une signature validable longtemps après sa création Spec: ETSI EN 319 122-1, §6 . C’est une affirmation strictement plus forte qu’une simple signature de référence. La norme d’accessibilité a la même forme : un niveau de conformité n’est atteint qu’en satisfaisant chaque critère de succès de ce niveau, et une déclaration énonce le niveau réellement atteint Spec: WCAG 2.2, §5.2.1 . NextPDF énonce donc le profil et le niveau, et non un « conforme » sans qualification.

Cette page est Evidence: Standard-backed  : chaque affirmation est ancrée à une clause, paraphrasée et citée avec une empreinte, afin que la personne suivante chargée de la revue puisse la revérifier par rapport à la source.

CoucheOrganismeClause d’ancrage (paraphrasée)Ce qu’elle régit dans NextPDF
FormatISOLes éléments créés ou modifiés par un producteur doivent être conformes et rester cohérents Spec: ISO 32000-2, §6 Le PDF émis par le moteur
ConformitéISOUn fichier conforme satisfait toutes les exigences ; les fonctionnalités supplémentaires sont facultatives Spec: ISO 32000-2, §6 Le sens de « sortie valide »
Profil de signatureETSILe niveau à validité long terme avec archivage ajoute des horodatages en vue d’une validation ultérieure Spec: ETSI EN 319 122-1, §6 Le profil PAdES que vise une signature
Temps de confianceIETFUn service d’horodatage prouve qu’une donnée existait avant un instant donné Spec: RFC 3161, §2 Le jeton d’horodatage du document
ChiffrementNISTLes hachages approuvés diffèrent par la force de sécurité qu’ils confèrent Spec: NIST FIPS 180-4, §1 L’algorithme de condensé sous une signature
Accessibilité de la sortieW3CUn niveau de conformité exige chaque critère de ce niveau Spec: WCAG 2.2, §5.2.1 Les déclarations d’accessibilité sur les PDF rendus

Les empreintes citées sont consignées dans le frontmatter citations de cette page. Aucun texte des normes n’est reproduit ici. La règle qui régit ce choix fait l’objet d’une page dédiée. Voir Discipline de citation.

Tu n’exécutes pas le paysage des normes ; tu le lis pour décider quoi demander au moteur. Concrètement, un appel de signature à validité long terme est un énoncé sur le point de la piste dont tu as besoin :

examples/36-sign-pades-b-b-and-b-t.php
<?php
declare(strict_types=1);
use NextPDF\Core\Document;
use NextPDF\Security\Signature\CertificateInfo;
use NextPDF\Security\Signature\DigitalSigner;
use NextPDF\Security\Signature\SignatureLevel;
// The signature level is a coordinate on the ISO -> ETSI -> RFC trail.
// PAdES B-B is the ETSI baseline CMS SignedData the Core engine produces;
// B-T adds an RFC 3161 timestamp, and B-LT/B-LTA add the DSS and document
// timestamps that keep a signature validatable after the certificate
// expires. The level you name is the point on the trail you are asking for.
$certInfo = CertificateInfo::fromFiles(
certPath: 'signer-cert.pem',
keyPath: 'signer-key.pem',
);
// The functional signing path is the direct two-phase signing engine.
// (Document::setSignature() records intent but its writer seam is not yet
// wired and fail-fasts on output — see the PadesOrchestrator docblock.)
$signer = new DigitalSigner(
certInfo: $certInfo,
level: SignatureLevel::PAdES_B_B,
);
$result = $signer->sign(file_get_contents('agreement.pdf'));
printf(
"PAdES %s CMS: %d bytes, timestamp=%s\n",
SignatureLevel::PAdES_B_B->value,
$result->getSize(),
$result->hasTimestamp() ? 'yes' : 'no',
);

Nommer PAdES_B_LTA plutôt qu’une simple signature de référence n’est pas un réglage de performance. C’est une décision sur la distance que parcourt l’obligation le long de la piste de normes. B-LT et B-LTA font intervenir les couches DSS et d’horodatage d’archivage, et requièrent le paquet LTV entreprise à l’exécution. Plutôt que de se dégrader silencieusement, le moteur refuse de faire croire qu’un niveau inférieur en fournit un supérieur.

Le piège consiste à lire « NextPDF est conforme aux normes » comme une garantie unique et totale. Ce n’est pas le cas, et aucune promesse honnête d’un moteur ne peut l’être. La conformité s’évalue par norme, par clause et par niveau. NextPDF vise la base PDF 2.0, des profils PAdES nommés et des niveaux d’accessibilité déclarés — chacun délimité, chacun cité. Une affirmation qui n’a pas une clause et un niveau derrière elle, c’est du marketing, et Insider_ ne la publie pas.

Le second piège, plus subtil, consiste à supposer qu’un should normatif est une promesse. C’est une recommandation. NextPDF documente les recommandations comme des recommandations. Les garanties du moteur sont bâties à partir des clauses shall, et cette différence compte.

Cette page est la carte, pas le territoire. Elle n’énumère pas chaque clause qu’implémente NextPDF, et ce n’est pas un certificat de conformité. La preuve comportementale se trouve sur la page thématique qui porte le comportement, avec le niveau de preuve propre à cette page — par exemple PDF 2.0 : ce qui a changé pour le delta de format.

Le paysage des normes évolue lui aussi. De nouvelles éditions paraissent. Les renvois sont mis à jour. Une clause citée ici est rattachée à l’instantané du corpus consigné dans le frontmatter citations de cette page. Quand une norme amont est révisée, la citation est revalidée par rapport à la nouvelle clause, et non supposée toujours valable. Lorsque cette page nomme une capacité de la formule Premium, elle le fait au niveau de la norme à laquelle elle répond, jamais au niveau du mécanisme interne.

  • Organisme de normalisation — une organisation qui publie une spécification (ISO, ETSI, IETF, W3C, NIST). Chacune couvre une couche différente de la pile PDF.
  • Clause normative — une exigence formulée par une norme, identifiée par son mot-clé (shall/must pour obligatoire, should pour recommandé, may pour facultatif).
  • Piste de normes — une chaîne ordonnée de spécifications que traverse une seule capacité, où chaque document renvoie normativement au suivant.
  • Niveau de conformité — un palier de conformité gradué (un profil de référence ETSI, un niveau WCAG). Une déclaration énonce le niveau réellement atteint, et non un « conforme » sans qualification.
  • PAdES — PDF Advanced Electronic Signatures, la famille de profils de signature ETSI EN 319 142 à laquelle ISO 32000-2 renvoie pour la signature PDF.