Nous sommes heureux d’annoncer la sortie de GroupDocs.Signature for .NET v26.9, disponible depuis septembre 2026. Cette version est une mise à jour axée sur la sécurité qui introduit la prise en charge de .NET 10, abandonne .NET Standard 2.1 et impose des valeurs par défaut plus strictes pour le chargement des ressources externes, les algorithmes de hachage et la validation des certificats. Elle ajoute également la prise en charge de la signature de documents Word avec des certificats post‑quantiques (ML‑DSA) et résout plusieurs bugs critiques liés à la vérification, à la journalisation et au comportement spécifique à la plateforme.
Nouveautés de cette version
- [Fonctionnalité] Prise en charge de .NET 10 et abandon de .NET Standard 2.1 (SIGNATURENET-5938)
- [Amélioration] Les ressources externes ne sont plus chargées par défaut (SIGNATURENET-5950)
- [Amélioration] Les signatures numériques PDF utilisent SHA‑256 par défaut et respectent HashAlgorithm (SIGNATURENET-5976)
- [Amélioration] SignatureFont n’expose plus les types System.Drawing sur .NET 6 et versions ultérieures (SIGNATURENET-5943)
- [Amélioration] La signature avec un certificat expiré ou pas encore valide est rejetée par défaut (SIGNATURENET-5995)
- [Amélioration] Signer des documents Word avec des certificats post‑quantiques (ML‑DSA) (SIGNATURENET-5996)
- [Anomalie] Verify ne vérifiait pas cryptographiquement les signatures numériques PDF (SIGNATURENET-5978)
- [Anomalie] SubjectName et IssuerName étaient ignorés lors de la vérification de documents PDF (SIGNATURENET-5997)
- [Anomalie] Les informations d’identification du serveur d’horodatage n’étaient envoyées que lorsque le nom d’utilisateur et le mot de passe étaient tous deux définis (SIGNATURENET-5998)
- [Anomalie] L’enregistrement de présentations et de documents Word en images échouait sous Linux et macOS (SIGNATURENET-5999)
- [Anomalie] LoadExternalResources était ignoré pour les documents à l’intérieur d’archives (SIGNATURENET-6000)
- [Anomalie] Les images externes et les feuilles de style des images SVG étaient toujours chargées (SIGNATURENET-6001)
- [Anomalie] La recherche et la vérification d’une feuille de calcul contenant une image liée déclenchaient une ArgumentNullException (SIGNATURENET-6002)
- [Anomalie] CertificateVerifyOptions.Expired était erroné à cause du décalage UTC local (SIGNATURENET-6003)
- [Anomalie] SignatureSettings.LogLevel n’avait aucun effet (SIGNATURENET-6004)
- [Anomalie] Un VerifyOptions réutilisé rapportait les signatures de documents vérifiés précédemment (SIGNATURENET-6005)
- [Anomalie] Un DigitalSignOptions réutilisé signait plus tard des présentations avec son premier certificat et commentaire (SIGNATURENET-6006)
- [Amélioration] Améliorations internes (SIGNATURENET-5979)
Modifications de l’API publique
| Membre | Modification |
|---|---|
LoadOptions.SkipExternalResources |
Nouveau. bool, valeur par défaut true. Lorsque true, les ressources externes ne sont pas chargées, sauf celles qui correspondent à WhitelistedResources. |
LoadOptions.WhitelistedResources |
Nouveau. List<string>, valeur par défaut vide. Parties d’adresses qui peuvent être chargées lorsque SkipExternalResources est true. Une adresse est chargée lorsqu’elle contient l’une d’elles, sans tenir compte de la casse. Définir null vide la liste. |
LoadOptions.LoadExternalResources |
Obsolète. Fonctionne toujours, avec le sens opposé de SkipExternalResources. Sa valeur par défaut est passée de true à false. Son utilisation génère l’avertissement du compilateur CS0618. |
SignatureFont implicit conversion from System.Drawing.Font |
Supprimé des builds .NET 6, .NET 8 et .NET 10. Obsolète dans le build .NET Framework. Assignez les propriétés de SignatureFont à la place. |
SignOptions.HashAlgorithm |
Pas de changement d’API. Elle prend désormais effet pour les signatures numériques PDF ; auparavant, elle était ignorée. |
DigitalVerifyOptions.SubjectName, DigitalVerifyOptions.IssuerName |
Pas de changement d’API. Elles prennent désormais effet pour les documents PDF ; auparavant, elles étaient ignorées. |
SignatureSettings.LogLevel |
Pas de changement d’API. Elle prend désormais effet : seuls les messages des niveaux qu’elle contient atteignent le journal, et LogLevel.None ne journalise rien. Auparavant, chaque message était journalisé quel que soit la valeur. Les descriptions des valeurs de LogLevel ont été corrigées. |
VerificationResult.Succeeded, VerificationResult.TotalSignatures |
Pas de changement d’API. Lorsqu’un objet VerifyOptions est utilisé pour plusieurs appels Verify, ils listent désormais uniquement les signatures du document récemment vérifié. |
DigitalSignOptions.AllowExpired |
Nouveau. bool, valeur par défaut false. Lorsque false, la signature avec un certificat dont la période de validité est terminée lève GroupDocsSignatureException. Lorsque true, le document est signé et un avertissement est journalisé. |
DigitalSignOptions.AllowNotYetValid |
Nouveau. bool, valeur par défaut false. Idem, pour un certificat dont la période de validité n’a pas encore commencé. |
Nouvelles fonctionnalités
Aucune nouvelle fonctionnalité au-delà de celles listées dans Nouveautés de cette version et Modifications de l’API publique.
Exemple de code
Allow only trusted external resources:
LoadOptions loadOptions = new LoadOptions
{
WhitelistedResources = new List<string> { "https://cdn.example.com/images/" }
};
using (Signature signature = new Signature("sample.docx", loadOptions))
{
// Only images from https://cdn.example.com/images/ are loaded.
}
Sign with SHA-384 and use an expired certificate (with warning):
using (Signature signature = new Signature("sample.pdf"))
{
DigitalSignOptions options = new DigitalSignOptions("certificate.pfx")
{
Password = "1234567890",
HashAlgorithm = HashAlgorithm.Sha384 // honoured from this release; the default is SHA-256
};
signature.Sign("signed.pdf", options);
}
Sign with an expired certificate explicitly allowed:
SignatureSettings settings = new SignatureSettings(new ConsoleLogger());
using (Signature signature = new Signature("sample.pdf", settings))
{
DigitalSignOptions options = new DigitalSignOptions("certificate.pfx")
{
Password = "1234567890",
AllowExpired = true
};
signature.Sign("signed.pdf", options);
// If certificate.pfx has expired, the document is signed and the console shows a warning such as:
// The signing certificate expired on 2019-05-01 12:00 UTC (subject "CN=...", thumbprint ...).
}
Sign a Word document with a post-quantum ML-DSA certificate:
using (Signature signature = new Signature("sample.docx"))
{
DigitalSignOptions options = new DigitalSignOptions("ml-dsa-65.pfx")
{
Password = "1234567890"
};
signature.Sign("signed.docx", options);
}
Configure logging to show only errors and warnings:
SignatureSettings settings = new SignatureSettings(new ConsoleLogger())
{
// Errors and warnings, without the step-by-step traces.
LogLevel = LogLevel.Error | LogLevel.Warning
};
Comment obtenir la mise à jour
NuGet
Mettez à jour vers le dernier package GroupDocs.Signature via NuGet : GroupDocs.Signature 26.9.0
Commande d’installation :
dotnet add package GroupDocs.Signature --version 26.9.0
Téléchargement direct
Téléchargez les assemblages depuis la page GroupDocs.Signature for .NET 26.9