Cette page peut contenir du texte traduit automatiquement.
Ajouter des informations de validation à long terme (PAdES-LTV) aux signatures PDF en C# et VB.NET
Les informations de validation à long terme (LTV) des signatures PDF permettent de vérifier les signatures numériques longtemps après leur création. Sans LTV, une signature numérique devient invérifiable une fois le certificat du signataire expiré ou les données de révocation indisponibles. Ceci est souvent inacceptable pour les documents PDF juridiques et financiers qui doivent rester fiables pendant des années.
Cet article se compose de deux parties : théorique et pratique. Vous découvrirez d'abord les bases des signatures PAdES-LTV. Ensuite, vous découvrirez comment ajouter des informations de validation à long terme aux signatures PDF en C# à l'aide de la bibliothèque Docotic.Pdf. Vous pouvez obtenir la bibliothèque et une clé de licence gratuite à durée limitée sur la page Télécharger la bibliothèque PDF C# .NET.
9.7.18373 15,244 réussis Téléchargements totaux de NuGet 5,976,723PAdES - Signatures électroniques PDF avancées
L'Institut européen des normes de télécommunications (ETSI) a publié plusieurs normes relatives aux signatures électroniques. Il définit notamment la norme « Signature électronique avancée PDF » (PAdES) dans la spécification ETSI EN 319 142. PAdES explique comment rendre les signatures PDF conformes à la réglementation européenne eIDAS.
Le concept fondamental des signatures LTV repose sur l'intégration d'informations relatives à la validation (VRI) dans un PDF. Ces informations permettent de valider les signatures PDF après une longue période, même lorsque l'environnement de signature n'est plus disponible.
La spécification ETSI EN 319 142-1 définit quatre niveaux de signatures de base PAdES : B-B, B-T, B-LT et B-LTA. Dans cet article, je me concentrerai sur les niveaux B-LT et B-LTA, en lien avec les signatures PDF compatibles LTV.
PAdES-B-B
Les signatures PDF numériques à court terme au format ETSI.CAdES.detached
correspondent à ce
niveau. L'article Signer des documents PDF en C# et VB.NET explique comment créer ces signatures.
PAdES-B-T
Les signatures B-T doivent respecter les exigences du niveau B-B et inclure un horodatage.
PAdES-B-LT
Les signatures B-LT doivent être conformes au niveau B-T. De plus, un fichier PDF doit inclure le dictionnaire Document Security Store (DSS) avec les données suivantes :
- Tous les certificats de la chaîne de confiance
- Réponses du protocole de vérification de l’état des certificats en ligne (OCSP)
- Listes de révocation de certificats (CRLs)
Les signatures électroniques avancées correspondent à ce niveau.
PAdES-B-LTA
Les signatures B-LTA doivent être conformes au niveau B-LT. De plus, un fichier PDF doit inclure une signature d'horodatage du document et un VRI pour le certificat d'horodatage du document.
Les signatures électroniques qualifiées correspondent à ce niveau.
Validation PAdES
Vous pouvez utiliser Adobe Acrobat Pro ou Adobe Reader. Ouvrez le panneau Signature et développez une signature numérique pour vérifier son statut. Si la signature est valide, vous verrez soit « La signature est activée pour la LTV » soit « La signature n'est pas activée pour la LTV et expirera après ».
Vous pouvez également utiliser le validateur PAdES de la Commission européenne. Cette méthode est particulièrement efficace pour la validation de documents conformes à la réglementation eIDAS de l'UE.
Il existe également le vérificateur de conformité des signatures de l'ETSI. Ce service est principalement destiné aux développeurs qui travaillent sur des outils de signature ou de validation.
N'oubliez pas que ces validateurs peuvent fournir des résultats différents pour un même document PDF.
Créer des signatures PDF compatibles LTV en C# et VB.NET
Il est temps d'écrire du code ! Docotic.Pdf fournit les méthodes PdfDocument.AddLtvInfo pour ajouter des informations LTV aux signatures PDF. Pour créer des signatures B-LTA, vous aurez également besoin des méthodes PdfDocument.TimestampAndSave pour enregistrer les PDF avec des signatures d'horodatage.
Comment créer des signatures PAdES-B-LT en C#
La création de signatures B-LT se déroule en trois étapes :
- Créez une signature B-T et enregistrez le document.
- Ouvrez le document signé et ajoutez les informations LTV.
- Enregistrez le document final de manière incrémentale.
Voici le code C# permettant de créer des signatures B-LT. Vous pouvez également télécharger l'exemple de projet complet Créer une signature PDF compatible LTV sur GitHub :
// 1. Créer une signature PAdES-B-T
using var step1 = new MemoryStream();
using (var pdf = new PdfDocument())
{
var options = new PdfSigningOptions(..)
{
DigestAlgorithm = PdfDigestAlgorithm.Sha256,
Format = PdfSignatureFormat.CadesDetached,
};
options.Timestamp.AuthorityUrl = new Uri("http://timestamp.digicert.com");
pdf.SignAndSave(options, step1);
}
// 2. Ouvrez le document signé et ajoutez les informations LTV
using (var pdf = new PdfDocument(step1))
{
pdf.AddLtvInfo();
// 3. Enregistrez le document final de manière incrémentale
var incrementalOptions = new PdfSaveOptions()
{
WriteIncrementally = true,
};
pdf.Save("b-lt.pdf", incrementalOptions);
}
Voici quelques points clés à prendre en compte. Tout d'abord, vous pouvez créer des options de
signature PdfSigningOptions
à l'aide d'un certificat PKCS#12 (fichier .pfx ou .p12) ou d'un
signataire externe. Quelle que soit la méthode, pour la conformité PAdES,
l'option Format
doit être définie sur PdfSignatureFormat.CadesDetached
.
Cet extrait de code utilise http://timestamp.digicert.com
, mais vous pouvez utiliser toute autre
autorité d'horodatage (TSA). Voici quelques alternatives courantes :
http://timestamp.comodoca.com/rfc3161
http://timestamp.sectigo.com
http://timestamp.entrust.net/TSS/RFC3161sha2TS
http://rfc3161timestamp.globalsign.com/advanced
Pour être conforme aux spécifications ETSI, vous devez utiliser une TSA approuvée par l'eIDAS. Vous pouvez en choisir un via le Navigateur de listes de confiance UE/EEE.
L'enregistrement du document intermédiaire après la première étape est obligatoire. Vous devez signer et enregistrer le document avant d'ajouter les informations LTV. Il existe toutefois une exception à cette règle, expliquée ci-dessous dans la section Certifier un PDF avec LTV.
La ligne WriteIncrementally = true
de l'étape trois active l'enregistrement incrémental. Les
mises à jour incrémentales n'invalident pas les signatures numériques. Il est conseillé de toujours
enregistrer les fichiers PDF de manière incrémentale lors de l'ajout d'informations LTV.
Comment créer des signatures PAdES-B-LTA en C#
La génération de signatures B-LTA est similaire, à l'exception de l'étape trois. Vous devez :
- Créez une signature B-T et enregistrez le document.
- Ouvrez le document signé et ajoutez les informations LTV.
- Enregistrer le document final de manière incrémentale avec une signature horodatée.
Cet exemple de code montre comment créer des signatures B-LTA en C# :
var timestampAuthorityUrl = new Uri("http://timestamp.digicert.com");
// 1. Créer une signature PAdES-B-T
using var step1 = new MemoryStream();
using (var pdf = new PdfDocument())
{
var options = new PdfSigningOptions(..)
{
DigestAlgorithm = PdfDigestAlgorithm.Sha256,
Format = PdfSignatureFormat.CadesDetached,
};
options.Timestamp.AuthorityUrl = timestampAuthorityUrl;
pdf.SignAndSave(options, step1);
}
// 2. Ouvrez le document signé et ajoutez les informations LTV
using (var pdf = new PdfDocument(step1))
{
pdf.AddLtvInfo();
// 3. Enregistrer le document final de manière incrémentale avec une signature horodatée
var timestampOptions = new PdfSignatureTimestampOptions
{
AuthorityUrl = timestampAuthorityUrl,
};
var incrementalOptions = new PdfSaveOptions()
{
WriteIncrementally = true,
};
pdf.TimestampAndSave(timestampOptions, "b-lta.pdf", incrementalOptions);
}
Le document final b-lta.pdf
contient deux signatures : la signature principale de l’étape un et
la signature horodatée du document de l’étape trois. Vous remarquerez peut-être qu’Adobe Acrobat
affiche le message “La signature est compatible LTV” pour les deux signatures. Comment se fait-il
que la signature horodatée soit compatible LTV alors qu’elle a été créée après l’appel de
AddLtvInfo
?
La clé est d’utiliser le même
TSA
pour l’horodatage de la signature et celui du document. La méthode AddLtvInfo
ajoute
VRI
pour le certificat d’horodatage. L’horodatage du document utilise alors le même certificat et
réutilise les données associées.
Impossible d’utiliser le même TSA pour l’horodatage du document ? J’aborderai ce cas dans la section Conversion PAdES-B-T vers B-LTA.
Ajouter des informations LTV aux signatures PDF existantes en C# et VB.NET
Jusqu'à présent, j'ai créé des signatures compatibles LTV de A à Z. Cependant, il est souvent nécessaire de modifier les signatures PAdES-B-T existantes, par exemple pour les convertir en B-LT ou B-LTA, ou pour actualiser les informations LTV.
Comme dans les exemples précédents, vous devez :
- Ouvrez le document signé et ajoutez les informations LTV.
- Enregistrer le document final de manière incrémentale, avec ou sans signature d'horodatage.
Voici les extraits de code correspondants :
Comment convertir des signatures PAdES-B-T en B-LT en C#
using var pdf = new PdfDocument("b-t.pdf");
pdf.AddLtvInfo();
var incrementalOptions = new PdfSaveOptions()
{
WriteIncrementally = true,
};
pdf.Save("b-lt.pdf", incrementalOptions);
Comment convertir des signatures PAdES-B-T en B-LTA en C#
using var pdf = new PdfDocument("b-t.pdf");
pdf.AddLtvInfo();
var timestampOptions = new PdfSignatureTimestampOptions
{
AuthorityUrl = new Uri("http://timestamp.digicert.com"),
};
var incrementalOptions = new PdfSaveOptions()
{
WriteIncrementally = true,
};
pdf.TimestampAndSave(timestampOptions, "b-lta.pdf", incrementalOptions);
Télécharger l'exemple de projet complet Ajouter des informations LTV aux signatures existantes. sur GitHub.
Ajouter des informations LTV à la signature d'horodatage d'un document
Les signatures B-T existantes peuvent utiliser un TSA arbitraire différent de celui utilisé dans cet exemple. Dans ce cas, Adobe Acrobat affichera le message « La signature n'est pas activée pour la LTV » pour la signature d'horodatage du document.
Comment activer la LTV ? Vous devez ajouter des informations LTV à la signature d'horodatage du document :
var timestampOptions = new PdfSignatureTimestampOptions
{
AuthorityUrl = new Uri("http://timestamp.digicert.com"),
};
var incrementalOptions = new PdfSaveOptions()
{
WriteIncrementally = true,
};
using var intermediate = new MemoryStream();
using (var pdf = new PdfDocument("b-t.pdf"))
{
pdf.AddLtvInfo();
pdf.TimestampAndSave(timestampOptions, intermediate, incrementalOptions);
}
// Ajouter des informations LTV à la signature d'horodatage du document
using (var pdf = new PdfDocument(intermediate))
{
pdf.AddLtvInfo();
pdf.TimestampAndSave(timestampOptions, "b-lta.pdf", incrementalOptions);
}
Certifier des PDF avec LTV en C# et VB.NET
Les signatures numériques des documents PDF certifiés ne permettent aucune modification. Les applications de lecture PDF affichent ces signatures avec une icône spéciale et une légende commençant par « Certifié par ».
Toute modification apportée à un PDF certifié invalidera la signature, ce qui signifie que vous ne pouvez pas ajouter d'informations LTV sans interrompre la certification.
Docotic.Pdf permet de générer des documents PDF certifiés avec des informations LTV. Utilisez la surcharge AddLtvInfo(PdfSigningOptions) pour ajouter des informations de validation à long terme (LTV) lors de la signature. Cet exemple de code montre comment certifier un PDF avec une signature B-LT en C# :
using var pdf = new PdfDocument();
var options = new PdfSigningOptions(..)
{
DigestAlgorithm = PdfDigestAlgorithm.Sha256,
Format = PdfSignatureFormat.CadesDetached,
Type = PdfSignatureType.AuthorNoChanges,
};
options.Timestamp.AuthorityUrl = new Uri("http://timestamp.digicert.com");
pdf.AddLtvInfo(options);
pdf.SignAndSave(options, "certified-b-lt.pdf");
Découvrez l'exemple de code Certifier des PDF avec des signatures LTV sur GitHub.
Depuis juin 2025, Adobe Acrobat prend en charge les documents PDF certifiés avec des signatures B-LT, mais considère les signatures B-LTA comme non valides.
Conclusion
Vous pouvez ajouter des informations de validation à long terme (LTV) aux signatures PDF afin de garantir la conformité légale et la confiance sur le long terme. La norme PAdES définit les règles et niveaux de conformité des signatures PDF.
Il est recommandé de signer au minimum avec des signatures PAdES-B-T. Les signatures B-T peuvent être converties en signatures électroniques avancées (B-LT) ou en signatures électroniques qualifiées (B-LTA) sans compromettre les validations existantes.
Utilisez la bibliothèque Docotic.Pdf pour ajouter des informations LTV aux signatures PDF dans les applications .NET. Vous pouvez même certifier des documents PDF avec LTV.
Explorez les exemples de code pour les signatures numériques dans les PDF sur GitHub. Consultez les articles connexes pour plus d’informations.
- Signer des documents PDF en C# et VB.NET
- Vérifier la signature PDF en C# et VB.NET
- Comment signer des PDF avec des jetons USB et des périphériques HSM en C# et VB.NET
Questions fréquemment posées
Comment éviter le message « Validité de la signature inconnue » dans Adobe Acrobat ?
Adobe Acrobat affiche l'avertissement « Validité de la signature inconnue » lorsqu'il ne peut pas vérifier le certificat du signataire. Cela se produit généralement lorsque le certificat est manquant, non fiable, auto-signé, révoqué, expiré ou inactif.
Obtenez le bon certificat pour éviter cet avertissement ou créer des documents conformes à la réglementation européenne (eIDAS).
Vous pouvez également ajouter manuellement des certificats à la section « Certificats de
confiance » dans Adobe Acrobat. Cette option est disponible sous :
Menu > Préférences > Signatures > Identités et certificats de confiance
.
Si vous devez approuver un certificat pour des documents certifiés, assurez-vous d'accorder l'autorisation correspondante :
Comment vérifier si une signature PDF est compatible LTV ?
Vous pouvez utiliser Adobe Reader ou le validateur PAdES de la Commission européenne. Consultez la section Validation PAdES pour plus de détails.
Pourquoi Adobe Acrobat affiche-t-il “La signature n’est pas compatible LTV” ?
Adobe Acrobat vérifie les informations de révocation dans le cadre du processus de validation de la signature. Si des données doivent être téléchargées, la signature correspondante n'est pas compatible avec la LTV.
Comment rendre une signature PDF conforme aux spécifications de l’ETSI ?
Suivez les exigences définies pour les signatures électroniques avancées PDF. Vous devez utiliser des certificats émis par des prestataires listés dans les Listes de confiance de l’Union européenne (EUTL).
Comment obtenir l’indicateur “La signature est compatible LTV” dans Adobe Reader ?
La signature doit d’abord être conforme au moins au niveau PAdES-B-T. Ensuite, vous devez ajouter les informations LTV, notamment tous les certificats de la chaîne de confiance, les réponses OCSP et les CRLs .
Les sections Créer une signature PDF compatible LTV et Ajouter des informations LTV à des signatures PDF existantes expliquent comment ajouter ces données en C# et VB.NET.
Comment activer la LTV pour une signature d’horodatage de document ?
La procédure est similaire à celle des signatures PDF classiques. Vous devez ajouter les informations LTV pour la signature d’horodatage au dictionnaire DSS .
Consultez l’exemple de code dans la section Ajouter des informations LTV à une signature d’horodatage de document.
Est-il possible d’effectuer la validation à long terme et l’horodatage en une seule opération ?
Oui ! Consultez l’exemple de code dans la section Comment convertir des signatures PAdES-B-T en B-LTA.
Comment créer une signature numérique avec LTV en C# ?
Utilisez la bibliothèque Docotic.Pdf. Pour générer des signatures électroniques avancées, consultez les exemples dans la section Créer une signature PAdES-B-LT. Pour les signatures électroniques qualifiées, voir la section Créer une signature PAdES-B-LTA.
Comment activer la LTV lorsque’“aucune modification n'est autorisée” ?
Pour les documents certifiés, Adobe Acrobat exige que toutes les données LTV soient incluses dans le document original signé. Consultez la section Certifier un PDF avec LTV pour plus de détails.
Comment activer la validation à long terme (LTV) lors de la signature de documents PDF en externe ?
Utilisez la bibliothèque Docotic.Pdf pour signer des documents PDF avec LTV à l’aide de jetons USB, de cartes à puce ou de HSMs basés sur le cloud. Consultez l’article Comment signer des PDF avec des jetons USB et des périphériques HSM en C# et VB.NET et la section Créer une signature PAdES-B-LT.
Comment signer un PDF avec plusieurs signatures et activer la LTV ?
Combinez les exemples de code Signer un formulaire PDF par plusieurs personnes et Ajouter des informations LTV aux signatures existantes..