We’re happy to announce the release of GroupDocs.Signature for .NET v26.9, available as of September 2026. This release is a security‑focused update that introduces .NET 10 support, discontinues .NET Standard 2.1, and enforces stricter defaults for loading external resources, hashing algorithms, and certificate validation. It also adds support for signing Word documents with post‑quantum (ML‑DSA) certificates and resolves several critical bugs related to verification, logging, and platform‑specific behavior.
Co nowego w tej wersji
- [Feature] Obsługa .NET 10 i wycofanie .NET Standard 2.1 (SIGNATURENET-5938)
- [Enhancement] Zasoby zewnętrzne nie są już ładowane domyślnie (SIGNATURENET-5950)
- [Enhancement] Cyfrowe podpisy PDF używają domyślnie SHA-256 i respektują HashAlgorithm (SIGNATURENET-5976)
- [Enhancement] SignatureFont nie udostępnia już typów System.Drawing w .NET 6 i nowszych (SIGNATURENET-5943)
- [Enhancement] Podpisywanie przy użyciu wygasłego lub jeszcze nieważnego certyfikatu jest domyślnie odrzucane (SIGNATURENET-5995)
- [Enhancement] Podpisywanie dokumentów Word przy użyciu certyfikatów post‑kwantowych (ML‑DSA) (SIGNATURENET-5996)
- [Bug] Verify nie sprawdzał kryptograficznie cyfrowych podpisów PDF (SIGNATURENET-5978)
- [Bug] SubjectName i IssuerName były ignorowane przy weryfikacji dokumentów PDF (SIGNATURENET-5997)
- [Bug] Dane uwierzytelniające serwera znaczników czasu były wysyłane tylko wtedy, gdy ustawiono zarówno nazwę użytkownika, jak i hasło (SIGNATURENET-5998)
- [Bug] Zapisywanie prezentacji i dokumentów Word jako obrazy nie powiodło się w systemach Linux i macOS (SIGNATURENET-5999)
- [Bug] LoadExternalResources było ignorowane dla dokumentów wewnątrz archiwów (SIGNATURENET-6000)
- [Bug] Zewnętrzne obrazy i arkusze stylów obrazów SVG były zawsze ładowane (SIGNATURENET-6001)
- [Bug] Wyszukiwanie i weryfikacja arkusza kalkulacyjnego z powiązanym obrazem wywołały ArgumentNullException (SIGNATURENET-6002)
- [Bug] CertificateVerifyOptions.Expired był niepoprawny o lokalny offset UTC (SIGNATURENET-6003)
- [Bug] SignatureSettings.LogLevel nie miał żadnego efektu (SIGNATURENET-6004)
- [Bug] Ponowne użycie VerifyOptions zgłaszało podpisy dokumentów zweryfikowanych wcześniej (SIGNATURENET-6005)
- [Bug] Ponowne użycie DigitalSignOptions podpisywało późniejsze prezentacje pierwszym certyfikatem i komentarzem (SIGNATURENET-6006)
- [Enhancement] Wewnętrzne ulepszenia (SIGNATURENET-5979)
Zmiany w publicznym API
| Członek | Zmiana |
|---|---|
LoadOptions.SkipExternalResources |
Nowe. bool, domyślnie true. Gdy true, zasoby zewnętrzne nie są ładowane, z wyjątkiem tych, które pasują do WhitelistedResources. |
LoadOptions.WhitelistedResources |
Nowe. List<string>, domyślnie pusty. Części adresów, które mogą być ładowane, gdy SkipExternalResources jest true. Adres jest ładowany, gdy zawiera jedną z nich, bez uwzględniania wielkości liter. Ustawienie null czyści listę. |
LoadOptions.LoadExternalResources |
Przestarzałe. Nadal działa, z odwrotnym znaczeniem niż SkipExternalResources. Jego domyślna wartość zmieniła się z true na false. Użycie powoduje ostrzeżenie kompilatora CS0618. |
SignatureFont implicit conversion from System.Drawing.Font |
Usunięto z kompilacji .NET 6, .NET 8 i .NET 10. Przestarzałe w kompilacji .NET Framework. Zamiast tego przypisz właściwości SignatureFont. |
SignOptions.HashAlgorithm |
Brak zmiany w sygnaturze. Teraz ma wpływ na cyfrowe podpisy PDF; wcześniej był ignorowany. |
DigitalVerifyOptions.SubjectName, DigitalVerifyOptions.IssuerName |
Brak zmiany w sygnaturze. Teraz mają wpływ na dokumenty PDF; wcześniej były tam ignorowane. |
SignatureSettings.LogLevel |
Brak zmiany w sygnaturze. Teraz ma wpływ: tylko wiadomości poziomów zawartych w LogLevel trafiają do loggera, a LogLevel.None nie loguje nic. Wcześniej każda wiadomość była logowana niezależnie od wartości. Opisy wartości LogLevel zostały poprawione. |
VerificationResult.Succeeded, VerificationResult.TotalSignatures |
Brak zmiany w sygnaturze. Gdy jeden obiekt VerifyOptions jest używany w kilku wywołaniach Verify, teraz wymienia tylko podpisy właśnie zweryfikowanego dokumentu. |
DigitalSignOptions.AllowExpired |
Nowe. bool, domyślnie false. Gdy false, podpisywanie certyfikatem, którego okres ważności się zakończył, powoduje wyrzucenie GroupDocsSignatureException. Gdy true, dokument jest podpisywany i logowane jest ostrzeżenie. |
DigitalSignOptions.AllowNotYetValid |
Nowe. bool, domyślnie false. To samo, dla certyfikatu, którego okres ważności jeszcze się nie rozpoczął. |
Nowe funkcje
Brak nowych funkcji poza wymienionymi w Co nowego w tej wersji i Zmiany w publicznym API.
Przykład kodu
Zezwól tylko na zaufane zasoby zewnętrzne:
LoadOptions loadOptions = new LoadOptions
{
WhitelistedResources = new List<string> { "https://cdn.example.com/images/" }
};
using (Signature signature = new Signature("sample.docx", loadOptions))
{
// Ładowane są tylko obrazy z https://cdn.example.com/images/
}
Podpisz przy użyciu SHA‑384 i użyj wygasłego certyfikatu (z ostrzeżeniem):
using (Signature signature = new Signature("sample.pdf"))
{
DigitalSignOptions options = new DigitalSignOptions("certificate.pfx")
{
Password = "1234567890",
HashAlgorithm = HashAlgorithm.Sha384 // respektowane od tej wersji; domyślnie jest SHA-256
};
signature.Sign("signed.pdf", options);
}
Podpisz przy użyciu wygasłego certyfikatu, zezwalając wyraźnie:
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);
// Jeśli certificate.pfx wygasł, dokument jest podpisywany i konsola wyświetla ostrzeżenie takie jak:
// Certyfikat podpisujący wygasł 2019-05-01 12:00 UTC (subject "CN=...", thumbprint ...).
}
Podpisz dokument Word przy użyciu certyfikatu post‑kwantowego ML‑DSA:
using (Signature signature = new Signature("sample.docx"))
{
DigitalSignOptions options = new DigitalSignOptions("ml-dsa-65.pfx")
{
Password = "1234567890"
};
signature.Sign("signed.docx", options);
}
Skonfiguruj logowanie, aby wyświetlało tylko błędy i ostrzeżenia:
SignatureSettings settings = new SignatureSettings(new ConsoleLogger())
{
// Błędy i ostrzeżenia, bez szczegółowych śladów krok po kroku.
LogLevel = LogLevel.Error | LogLevel.Warning
};
Jak uzyskać aktualizację
NuGet
Uaktualnij do najnowszego pakietu GroupDocs.Signature za pośrednictwem NuGet: GroupDocs.Signature 26.9.0
Polecenie instalacji:
dotnet add package GroupDocs.Signature --version 26.9.0
Bezpośrednie pobranie
Pobierz zestawy z GroupDocs.Signature for .NET 26.9 page