إضافة توقيعات رقمية إلى العروض التقديمية في C++

الشهادة الرقمية تُستخدم لإنشاء عرض تقديمي PowerPoint محمي بكلمة مرور، يتم وضع علامة بأنه تم إنشاؤه بواسطة مؤسسة أو شخص معين. يمكن الحصول على الشهادة الرقمية عن طريق التواصل مع منظمة معتمدة - هيئة إصدار الشهادات. بعد تثبيت الشهادة الرقمية في النظام، يمكن استخدامها لإضافة توقيع رقمي إلى العرض التقديمي عبر ملف -> معلومات -> حماية العرض التقديمي:

todo:image_alt_text

العرض التقديمي قد يحتوي على أكثر من توقيع رقمي. بعد إضافة التوقيع الرقمي إلى العرض، ستظهر رسالة خاصة في PowerPoint:

todo:image_alt_text

لتوقيع العرض التقديمي أو التحقق من صحة توقيعاته، توفر Aspose.Slides API واجهة IDigitalSignature وواجهة IDigitalSignatureCollection وIPresentation.DigitalSignatures كطريقة. حاليًا، تُدعم التوقيعات الرقمية لتنسيق PPTX فقط.

إضافة توقيع رقمي من شهادة PFX

العينة البرمجية أدناه توضح كيفية إضافة توقيع رقمي من شهادة PFX:

  1. افتح ملف PFX ومرّر كلمة مرور PFX إلى كائن DigitalSignature.
  2. أضف التوقيع المُنشأ إلى كائن العرض التقديمي.
auto pres = System::MakeObject<Presentation>();

// إنشاء كائن DigitalSignature بملف PFX وكلمة مرور PFX 
auto signature = System::MakeObject<DigitalSignature>(u"testsignature1.pfx", u"testpass1");

// إضافة تعليق إلى توقيع رقمي جديد
signature->set_Comments(u"Aspose.Slides digital signing test.");

// إضافة توقيع رقمي إلى العرض التقديمي
pres->get_DigitalSignatures()->Add(signature);

// Save presentation
pres->Save(u"SomePresentationSigned.pptx", SaveFormat::Pptx);

الآن يمكن التحقق مما إذا كان العرض التقديمي مُوقعًا رقميًا ولم يتم تعديله:

// فتح العرض التقديمي
auto pres = System::MakeObject<Presentation>(u"SomePresentationSigned.pptx");

if (pres->get_DigitalSignatures()->get_Count() > 0)
{
    bool allSignaturesAreValid = true;

    Console::WriteLine(u"Signatures used to sign the presentation: ");

    // تحقق مما إذا كانت جميع التواقيع الرقمية صالحة
    for (auto signature : pres->get_DigitalSignatures())
    {
        Console::WriteLine(signature->get_Certificate()->get_SubjectName()->get_Name() 
            + u", " 
            + signature->get_SignTime().ToString(u"yyyy-MM-dd HH:mm") 
            + u" -- " 
            + (signature->get_IsValid() ? System::String(u"VALID") : System::String(u"INVALID")));
        allSignaturesAreValid &= signature->get_IsValid();
    }

    if (allSignaturesAreValid)
    {
        Console::WriteLine(u"Presentation is genuine, all signatures are valid.");
    }
    else
    {
        Console::WriteLine(u"Presentation has been modified since signing.");
    }
}

الأسئلة المتكررة

هل يمكنني إزالة التواقيع الموجودة من ملف؟

نعم. تدعم مجموعة التواقيع الرقمية إزالة العناصر الفردية ومسحها بالكامل; بعد حفظ الملف، لن يحتوي العرض التقديمي على أي تواقيع.

هل يصبح الملف “للقراءة فقط” بعد التوقيع؟

لا. يحفظ التوقيع التكامل والملكية لكنه لا يمنع التعديلات. لتقييد التحرير، اجمعه مع “Read-only” أو كلمة مرور.

هل سيظهر التوقيع بشكل صحيح في إصدارات PowerPoint المختلفة؟

تم إنشاء التوقيع لحاوية OOXML (PPTX). تعرض إصدارات PowerPoint الحديثة التي تدعم توقيعات OOXML حالة هذه التواقيع بشكل صحيح.