PowerPoint中的数字签名

数字证书用于创建受密码保护的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>();

// 创建具有PFX文件和PFX密码的DigitalSignature对象 
auto signature = System::MakeObject<DigitalSignature>(u"testsignature1.pfx", u"testpass1");

// 评论新的数字签名
signature->set_Comments(u"Aspose.Slides数字签名测试。");

// 将数字签名添加到演示文稿
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"用于签署演示文稿的签名:");

    // 检查所有数字签名是否有效
    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"有效") : System::String(u"无效")));
        allSignaturesAreValid &= signature->get_IsValid();
    }

    if (allSignaturesAreValid)
    {
        Console::WriteLine(u"演示文稿是真正的,所有签名都是有效的。");
    }
    else
    {
        Console::WriteLine(u"演示文稿在签名后已被修改。");
    }
}