ما خوشحالیم که انتشار GroupDocs.Signature برای .NET نسخه 26.9 را اعلام می‌کنیم، که از سپتامبر 2026 در دسترس است. این انتشار یک به‌روزرسانی متمرکز بر امنیت است که پشتیبانی از .NET 10 را معرفی می‌کند، .NET Standard 2.1 را متوقف می‌سازد و پیش‌فرض‌های سخت‌تری برای بارگذاری منابع خارجی، الگوریتم‌های هش و اعتبارسنجی گواهی‌نامه‌ها اعمال می‌کند. همچنین پشتیبانی از امضای اسناد Word با گواهی‌نامه‌های پس‌کوآنتومی (ML‑DSA) را اضافه می‌کند و چندین باگ بحرانی مرتبط با تأیید، ثبت لاگ و رفتارهای خاص پلتفرم را برطرف می‌سازد.

چه چیزهای جدیدی در این انتشار وجود دارد

  • [Feature] پشتیبانی از .NET 10 و حذف .NET Standard 2.1 (SIGNATURENET-5938)
  • [Enhancement] به‌طور پیش‌فرض دیگر منابع خارجی بارگذاری نمی‌شوند (SIGNATURENET-5950)
  • [Enhancement] امضای دیجیتال PDF به‌صورت پیش‌فرض از SHA‑256 استفاده می‌کند و HashAlgorithm را رعایت می‌کند (SIGNATURENET-5976)
  • [Enhancement] SignatureFont دیگر انواع System.Drawing را در .NET 6 به‌بعدی نمایش نمی‌دهد (SIGNATURENET-5943)
  • [Enhancement] امضای با گواهی‌نامه منقضی‌شده یا هنوز معتبر نیست به‌صورت پیش‌فرض رد می‌شود (SIGNATURENET-5995)
  • [Enhancement] امضای اسناد Word با گواهی‌نامه‌های پس‌کوآنتومی (ML‑DSA) (SIGNATURENET-5996)
  • [Bug] Verify امضای دیجیتال PDF را به‌صورت رمزنگاری‌شده بررسی نمی‌کرد (SIGNATURENET-5978)
  • [Bug] SubjectName و IssuerName هنگام تأیید اسناد PDF نادیده گرفته می‌شدند (SIGNATURENET-5997)
  • [Bug] اعتبارهای سرور زمان‌سنجی فقط زمانی ارسال می‌شدند که هم نام کاربری و هم رمز عبور تنظیم شده باشند (SIGNATURENET-5998)
  • [Bug] ذخیره‌سازی ارائه‌ها و اسناد Word به‌صورت تصویر در لینوکس و macOS شکست می‌خورد (SIGNATURENET-5999)
  • [Bug] LoadExternalResources برای اسنادی که داخل آرشیو هستند نادیده گرفته می‌شد (SIGNATURENET-6000)
  • [Bug] تصاویر خارجی و شیوه‌نامه‌های SVG همیشه بارگذاری می‌شدند (SIGNATURENET-6001)
  • [Bug] جستجو و تأیید یک صفحه‌گسترده با تصویر پیوندی منجر به ArgumentNullException می‌شد (SIGNATURENET-6002)
  • [Bug] CertificateVerifyOptions.Expired به‌دلیل اختلاف ساعت محلی UTC نادرست بود (SIGNATURENET-6003)
  • [Bug] SignatureSettings.LogLevel هیچ تأثیری نداشت (SIGNATURENET-6004)
  • [Bug] یک VerifyOptions بازاستفاده‑شده امضاهای اسنادی که قبلاً تأیید شده بودند را گزارش می‌داد (SIGNATURENET-6005)
  • [Bug] یک DigitalSignOptions بازاستفاده‑شده ارائه‌های بعدی را با اولین گواهی‌نامه و توضیح خود امضا می‌کرد (SIGNATURENET-6006)
  • [Enhancement] بهبودهای داخلی (SIGNATURENET-5979)

تغییرات API عمومی

عضو تغییر
LoadOptions.SkipExternalResources جدید. bool، پیش‌فرض true. وقتی true باشد، منابع خارجی بارگذاری نمی‌شوند، به‌جز مواردی که با WhitelistedResources مطابقت داشته باشند.
LoadOptions.WhitelistedResources جدید. List<string>، پیش‌فرض خالی. بخش‌هایی از آدرس‌ها که ممکن است هنگام SkipExternalResources برابر true بارگذاری شوند. آدرسی زمانی بارگذاری می‌شود که شامل یکی از این بخش‌ها باشد، بدون در نظر گرفتن حروف بزرگ/کوچک. تنظیم null فهرست را پاک می‌کند.
LoadOptions.LoadExternalResources منسوخ. هنوز کار می‌کند، اما معنای مخالف SkipExternalResources دارد. پیش‌فرض آن از true به false تغییر یافت. استفاده از آن هشدار کامپایلر CS0618 را تولید می‌کند.
تبدیل ضمنی SignatureFont از System.Drawing.Font حذف شده در ساخت‌های .NET 6، .NET 8 و .NET 10. منسوخ در ساخت .NET Framework. به‌جای آن ویژگی‌های SignatureFont را به‌صورت جداگانه تنظیم کنید.
SignOptions.HashAlgorithm تغییری در امضا ایجاد نمی‌کند. اکنون برای امضای دیجیتال PDF مؤثر است؛ پیش از این نادیده گرفته می‌شد.
DigitalVerifyOptions.SubjectName، DigitalVerifyOptions.IssuerName تغییری در امضا ایجاد نمی‌کند. اکنون برای اسناد PDF مؤثر هستند؛ پیش از این نادیده گرفته می‌شدند.
SignatureSettings.LogLevel تغییری در امضا ایجاد نمی‌کند. اکنون مؤثر است: فقط پیام‌های سطوح موجود در آن به لاگر می‌رسند و LogLevel.None هیچ‌چیزی لاگ نمی‌کند. پیش از این، هر پیام بدون توجه به مقدار لاگ می‌شد. توضیحات مقادیر LogLevel اصلاح شد.
VerificationResult.Succeeded، VerificationResult.TotalSignatures تغییری در امضا ایجاد نمی‌کند. وقتی یک شیء VerifyOptions برای چندین فراخوانی Verify استفاده شود، اکنون فقط امضاهای سند تازه تأیید شده را فهرست می‌کند.
DigitalSignOptions.AllowExpired جدید. bool، پیش‌فرض false. وقتی false باشد، امضای با گواهی‌نامه‌ای که دوره اعتبار آن تمام شده است GroupDocsSignatureException می‌اندازد. وقتی true باشد، سند امضا می‌شود و یک هشدار لاگ می‌شود.
DigitalSignOptions.AllowNotYetValid جدید. bool، پیش‌فرض false. همان‌طور که برای گواهی‌نامه‌ای که هنوز دوره اعتبارش شروع نشده است.

ویژگی‌های جدید

هیچ ویژگی جدیدی جز موارد فهرست‌شده در چه چیزهای جدیدی در این انتشار وجود دارد و تغییرات API عمومی وجود ندارد.

مثال کد

اجازه دادن فقط به منابع خارجی مورد اعتماد:

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

امضا با SHA‑384 و استفاده از گواهی‌نامه منقضی‌شده (با هشدار):

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

امضا با گواهی‌نامه منقضی‌شده که صراحتاً اجازه داده شده است:

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

امضا یک سند Word با گواهی‌نامه پس‌کوآنتومی ML‑DSA:

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

پیکربندی لاگ برای نمایش فقط خطاها و هشدارها:

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

نحوه دریافت به‌روزرسانی

NuGet

به‌روزرسانی به آخرین بسته GroupDocs.Signature از طریق NuGet: GroupDocs.Signature 26.9.0

دستور نصب:

dotnet add package GroupDocs.Signature --version 26.9.0

دانلود مستقیم

دستگاه‌های اسمبلی را از صفحه GroupDocs.Signature برای .NET 26.9 دریافت کنید

منابع