Kami dengan senang hati mengumumkan rilis GroupDocs.Signature untuk .NET v26.9, tersedia sejak September 2026. Rilis ini merupakan pembaruan yang berfokus pada keamanan yang memperkenalkan dukungan .NET 10, menghentikan .NET Standard 2.1, dan menerapkan default yang lebih ketat untuk memuat sumber daya eksternal, algoritma hashing, serta validasi sertifikat. Rilis ini juga menambahkan dukungan untuk menandatangani dokumen Word dengan sertifikat post‑quantum (ML‑DSA) dan memperbaiki beberapa bug kritis terkait verifikasi, pencatatan, dan perilaku khusus platform.

Apa yang baru di rilis ini

  • [Feature] Dukungan .NET 10 dan .NET Standard 2.1 dihentikan (SIGNATURENET-5938)
  • [Enhancement] Sumber daya eksternal tidak lagi dimuat secara default (SIGNATURENET-5950)
  • [Enhancement] Tanda tangan digital PDF menggunakan SHA‑256 secara default dan menghormati HashAlgorithm (SIGNATURENET-5976)
  • [Enhancement] SignatureFont tidak lagi mengekspos tipe System.Drawing pada .NET 6 dan yang lebih baru (SIGNATURENET-5943)
  • [Enhancement] Penandatanganan dengan sertifikat yang kedaluwarsa atau belum berlaku ditolak secara default (SIGNATURENET-5995)
  • [Enhancement] Menandatangani dokumen Word dengan sertifikat post‑quantum (ML‑DSA) (SIGNATURENET-5996)
  • [Bug] Verify tidak memeriksa tanda tangan digital PDF secara kriptografis (SIGNATURENET-5978)
  • [Bug] SubjectName dan IssuerName diabaikan saat memverifikasi dokumen PDF (SIGNATURENET-5997)
  • [Bug] Kredensial server time‑stamp hanya dikirim ketika nama pengguna dan kata sandi keduanya diatur (SIGNATURENET-5998)
  • [Bug] Menyimpan presentasi dan dokumen Word sebagai gambar gagal pada Linux dan macOS (SIGNATURENET-5999)
  • [Bug] LoadExternalResources diabaikan untuk dokumen di dalam arsip (SIGNATURENET-6000)
  • [Bug] Gambar eksternal dan stylesheet SVG selalu dimuat (SIGNATURENET-6001)
  • [Bug] Pencarian dan verifikasi spreadsheet dengan gambar terhubung melempar ArgumentNullException (SIGNATURENET-6002)
  • [Bug] CertificateVerifyOptions.Expired salah karena offset UTC lokal (SIGNATURENET-6003)
  • [Bug] SignatureSettings.LogLevel tidak berpengaruh (SIGNATURENET-6004)
  • [Bug] VerifyOptions yang dipakai kembali melaporkan tanda tangan dokumen yang diverifikasi sebelumnya (SIGNATURENET-6005)
  • [Bug] DigitalSignOptions yang dipakai kembali menandatangani presentasi berikutnya dengan sertifikat dan komentar pertama (SIGNATURENET-6006)
  • [Enhancement] Perbaikan internal (SIGNATURENET-5979)

Perubahan API Publik

Anggota Perubahan
LoadOptions.SkipExternalResources Baru. bool, nilai default true. Ketika true, sumber daya eksternal tidak dimuat, kecuali yang cocok dengan WhitelistedResources.
LoadOptions.WhitelistedResources Baru. List<string>, nilai default kosong. Bagian alamat yang dapat dimuat saat SkipExternalResources bernilai true. Sebuah alamat dimuat bila mengandung salah satu dari mereka, tanpa memperhatikan huruf besar/kecil. Menetapkan null mengosongkan daftar.
LoadOptions.LoadExternalResources Usang. Masih berfungsi, dengan arti berlawanan dari SkipExternalResources. Nilai defaultnya berubah dari true menjadi false. Menggunakannya menghasilkan peringatan kompilator CS0618.
SignatureFont konversi implisit dari System.Drawing.Font Dihapus dari build .NET 6, .NET 8, dan .NET 10. Usang pada build .NET Framework. Tetapkan properti SignatureFont secara langsung.
SignOptions.HashAlgorithm Tidak ada perubahan tanda tangan. Sekarang berpengaruh untuk tanda tangan digital PDF; sebelumnya diabaikan.
DigitalVerifyOptions.SubjectName, DigitalVerifyOptions.IssuerName Tidak ada perubahan tanda tangan. Sekarang berpengaruh untuk dokumen PDF; sebelumnya diabaikan di sana.
SignatureSettings.LogLevel Tidak ada perubahan tanda tangan. Sekarang berpengaruh: hanya pesan dengan level yang tercantum yang sampai ke logger, dan LogLevel.None tidak mencatat apa‑apa. Sebelumnya, setiap pesan dicatat apa pun nilainya. Deskripsi nilai LogLevel telah diperbaiki.
VerificationResult.Succeeded, VerificationResult.TotalSignatures Tidak ada perubahan tanda tangan. Ketika satu objek VerifyOptions digunakan untuk beberapa pemanggilan Verify, kini hanya menampilkan tanda tangan dokumen yang baru saja diverifikasi.
DigitalSignOptions.AllowExpired Baru. bool, nilai default false. Ketika false, menandatangani dengan sertifikat yang masa berlakunya telah berakhir akan melempar GroupDocsSignatureException. Ketika true, dokumen tetap ditandatangani dan peringatan dicatat.
DigitalSignOptions.AllowNotYetValid Baru. bool, nilai default false. Sama, untuk sertifikat yang masa berlakunya belum dimulai.

Fitur baru

Tidak ada fitur baru selain yang tercantum di Apa yang baru di rilis ini dan Perubahan API Publik.

Contoh kode

Izinkan hanya sumber daya eksternal tepercaya:

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.
}

Tandatangani dengan SHA‑384 dan gunakan sertifikat yang kedaluwarsa (dengan peringatan):

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);
}

Tandatangani dengan sertifikat yang kedaluwarsa secara eksplisit diizinkan:

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 ...).
}

Tandatangani dokumen Word dengan sertifikat post‑quantum ML‑DSA:

using (Signature signature = new Signature("sample.docx"))
{
    DigitalSignOptions options = new DigitalSignOptions("ml-dsa-65.pfx")
    {
        Password = "1234567890"
    };
    signature.Sign("signed.docx", options);
}

Konfigurasikan pencatatan agar hanya menampilkan kesalahan dan peringatan:

SignatureSettings settings = new SignatureSettings(new ConsoleLogger())
{
    // Errors and warnings, without the step-by-step traces.
    LogLevel = LogLevel.Error | LogLevel.Warning
};

Cara mendapatkan pembaruan

NuGet

Tingkatkan ke paket GroupDocs.Signature terbaru melalui NuGet: GroupDocs.Signature 26.9.0

Perintah instalasi:

dotnet add package GroupDocs.Signature --version 26.9.0

Unduhan langsung

Unduh assembly dari halaman GroupDocs.Signature for .NET 26.9

Sumber daya