Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works
Anything · Lazarus or Delphi
Random projectRandom project

verificateur

Vérificateur indépendant et open-source des preuves d'archivage Archive XO — contrôle l'intégrité SHA-256, l'horodatage RFC 3161 et l'ancrage OpenTimestamps d'un dossier de preuve, sans le logiciel Archive XO.

View on GitHub

Member rating

No ratings yet.

Sign in to rate this project.

README

Vérificateur Archive XO

Outil indépendant et open-source qui vérifie un dossier de preuve Archive XO — sans le logiciel Archive XO, sans la machine d'origine et sans aucun serveur.


Pourquoi cet outil ?

Une preuve numérique n'a de valeur que si n'importe qui peut la vérifier avec ses propres moyens, sans dépendre de l'éditeur qui l'a produite. C'est le rôle de ce vérificateur : public, auditable et autonome.

Il n'implémente aucune cryptographie maison. Il orchestre la vérification et délègue chaque primitive aux implémentations de référence — exactement ce qu'un auditeur ferait à la main. C'est ce qui rend le verdict opposable :

Maillon vérifié Outil de référence délégué
Empreinte SHA-256 du document openssl dgst -sha256
Présence dans le manifeste mensuel comparaison locale
Horodatage RFC 3161 (TSA) openssl ts -verify
Ancrage Bitcoin (OpenTimestamps) ots verify

La chaîne prouvée est : document → manifeste mensuel → horodatage TSA + ancrage Bitcoin.

Le vérificateur ne contient aucun secret et n'ouvre aucune connexion vers Archive XO.

Ce que le verdict prouve — et ne prouve pas

Un PASS établit l'antériorité et l'intégrité : le document existait, inchangé, au plus tard à la date du jeton d'horodatage. Il ne prouve ni l'authenticité du contenu du document, ni une date antérieure au jeton — aucune technologie d'horodatage ne le peut.

Autorité d'horodatage épinglée

Le certificat racine de FreeTSA est embarqué dans le binaire (empreinte SHA-1 0B:93:07:6C:81:39:FA:2B:83:38:5F:78:28:D7:BE:75:73:40:D2:41, vérifiable sur freetsa.org). Un jeton validé contre cette autorité affiche [ OK ] … autorite reconnue. Un jeton qui ne se valide que contre le certificat fourni dans le dossier de preuve lui-même affiche un [WARN] explicite : le dossier n'est alors cohérent qu'avec lui-même, la date n'est pas garantie par un tiers de confiance connu de ce vérificateur.

Dépendances

À placer sur le PATH ou à côté de l'exécutable :

  • openssl (openssl.exe sous Windows) — vérification SHA-256 et RFC 3161.
  • ots — client OpenTimestamps (ots.exe) — vérification de l'ancrage Bitcoin (facultatif : sans lui, ce maillon est marqué [WARN], non bloquant).

Utilisation

Téléchargez le binaire depuis la page Releases, ou compilez-le (voir plus bas), puis :

pascal
ArchiveXOVerify <dossier_de_preuve.zip | repertoire_extrait>

Le programme accepte directement le .zip (il l'extrait dans un dossier temporaire) ou un répertoire déjà décompressé.

Exemple de sortie

pascal
--- Verification de la chaine de preuve ---
[ OK ] metadata.json ??? certificat lu
[ OK ] Empreinte SHA-256 ??? 3a7bd3e2360a3d29... = certificat
[ OK ] Manifeste ??? empreinte presente dans MANIFEST_2026-05.sha256
[ OK ] Horodatage TSA primaire ??? horodatage RFC 3161 valide ??? autorite reconnue (FreeTSA, epinglee)
[ OK ] Ancrage Bitcoin ??? preuve OpenTimestamps confirmee

--- Verdict ---
RESULTAT : PASS ??? anteriorite et integrite etablies.
Ce document existait, INCHANGE, au plus tard le : May 12 09:41:07 2026 GMT

Ce verdict etablit l'ANTERIORITE et l'INTEGRITE du document.
Il ne prouve ni l'authenticite de son contenu, ni une date
anterieure a celle du jeton d'horodatage.

Codes de sortie

Code Signification
0 PASS — chaîne de preuve complète et valide (intégrable en CI/scripts)
1 FAIL — au moins un maillon critique invalide ; preuve NON vérifiée
2 Erreur d'usage ou dépendance manquante

Un maillon critique en échec (empreinte qui ne correspond pas, document absent du manifeste, jeton TSA invalide) provoque un FAIL. Une preuve Bitcoin encore pending ou un certificat CA TSA non joint produisent un [WARN] non bloquant.

Compilation depuis les sources

Écrit en Free Pascal. Aucune dépendance Windows ni LCL : un simple fpc suffit, sur les trois OS.

pascal
# Windows / Linux / macOS (Free Pascal install??)
fpc -O2 ArchiveXOVerify.lpr

Produit l'exécutable ArchiveXOVerify (.exe sous Windows). Les binaires de publication sont signés et attachés à chaque Release pour garantir leur origine.

Structure d'un dossier de preuve

pascal
<dossier_de_preuve>/
????????? metadata.json             Certificat : empreinte attendue du document
????????? original/                 Le document d'origine (+ éventuel XML Factur-X)
├── manifest/*.sha256         Manifeste mensuel des empreintes
├── tsr/
│   ├── primary.tsr           Jeton d'horodatage RFC 3161 (TSA primaire)
???   ????????? tsa-primary.pem       Certificat CA du TSA (pour v??rif. hors-ligne)
???   ????????? secondary.tsr         Jeton TSA secondaire (facultatif)
????????? ots/
    ????????? bitcoin.hash.ots      Ancrage OpenTimestamps (Bitcoin)

Vérification 100 % manuelle (sans cet outil)

Chaque maillon est reproductible à la main — c'est là toute la force du dispositif :

pascal
# Recalculer l'empreinte SHA-256 du document
openssl dgst -sha256 original/facture.pdf

# Vérifier le jeton d'horodatage RFC 3161
openssl ts -verify -data manifest/MANIFEST_2026-05.sha256 -in tsr/primary.tsr -CAfile tsr/tsa-primary.pem

# V??rifier l'ancrage OpenTimestamps
ots verify ots/bitcoin.hash.ots

La preuve ne dépend ni d'Archive XO, ni de cet outil.

Limites connues

  • Certificat CA du TSA : la vérification RFC 3161 hors-ligne exige les certificats CA (tsr/tsa-primary.pem) joints au dossier. Sans eux, le maillon TSA est marqué [WARN].
  • Client ots : requis uniquement pour l'ancrage Bitcoin. Un destinataire sans cet outil peut suivre la procédure manuelle ci-dessus ou celle du fichier VERIFICATION.txt inclus dans le dossier de preuve.

Licence

Distribué sous licence MIT. Voir le fichier LICENSE.

Liens