เพิ่มลายเซ็นดิจิทัลให้กับการนำเสนอใน C++
บทนำ
Digital certificate ใช้เพื่อสร้างการนำเสนอ PowerPoint ที่มีการป้องกันด้วยรหัสผ่าน, ระบุว่าถูกสร้างโดยองค์กรหรือบุคคลเฉพาะ. สามารถขอรับ Digital certificate ได้โดยติดต่อกับองค์กรที่ได้รับอนุญาต – ผู้ให้บริการใบรับรอง. หลังจากติดตั้ง Digital certificate ลงในระบบแล้ว สามารถใช้เพิ่มลายเซ็นดิจิทัลลงในการนำเสนอผ่านเมนู File -> Info -> Protect Presentation:
การนำเสนออาจมีลายเซ็นดิจิทัลมากกว่าหนึ่งรายการ. หลังจากเพิ่มลายเซ็นดิจิทัลลงในการนำเสนอ ข้อความพิเศษจะปรากฏใน PowerPoint:
เพื่อทำการเซ็นการนำเสนอหรือเพื่อตรวจสอบความถูกต้องของลายเซ็นการนำเสนอ, Aspose.Slides API ให้บริการ IDigitalSignature interface, IDigitalSignatureCollection interface และ IPresentation.DigitalSignatures method. ปัจจุบันลายเซ็นดิจิทัลรองรับเฉพาะรูปแบบ PPTX เท่านั้น.
เพิ่มลายเซ็นดิจิทัลจากใบรับรอง PFX
ตัวอย่างโค้ดด้านล่างแสดงวิธีเพิ่มลายเซ็นดิจิทัลจากใบรับรอง PFX:
- เปิดไฟล์ PFX และส่งรหัสผ่านของ PFX ไปยังอ็อบเจกต์ DigitalSignature.
- เพิ่มลายเซ็นที่สร้างขึ้นไปยังอ็อบเจกต์การนำเสนอ.
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);
// บันทึกการนำเสนอ
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.");
}
}
คำถามที่พบบ่อย
ฉันสามารถลบลายเซ็นที่มีอยู่จากไฟล์ได้หรือไม่?
ใช่. คอลเล็กชันของลายเซ็นดิจิทัลรองรับการ removing individual items และการ clearing it entirely; หลังจากบันทึกไฟล์ การนำเสนอจะไม่มีลายเซ็นใดๆ
ไฟล์จะกลายเป็น “อ่านอย่างเดียว” หลังจากการเซ็นหรือไม่?
ไม่. ลายเซ็นคงความสมบูรณ์และผู้เขียนไว้แต่ไม่ได้บล็อกการแก้ไข. หากต้องการจำกัดการแก้ไข ให้ผสานกับ “Read-only” or a password.
ลายเซ็นจะแสดงอย่างถูกต้องในเวอร์ชันต่าง ๆ ของ PowerPoint หรือไม่?
ลายเซ็นถูกสร้างสำหรับคอนเทนเนอร์ OOXML (PPTX). เวอร์ชันสมัยใหม่ของ PowerPoint ที่รองรับลายเซ็น OOXML จะแสดงสถานะของลายเซ็นเหล่านั้นอย่างถูกต้อง.