PowerPoint中的数字签名
Contents
 [
      
        Hide
      ]
    数字证书用于创建受密码保护的PowerPoint演示文稿,标记为由特定组织或个人创建。数字证书可以通过联系授权机构——证书颁发机构来获取。将数字证书安装到系统后,可以通过文件 -> 信息 -> 保护演示文稿将其用于为演示文稿添加数字签名:
演示文稿可能包含多个数字签名。在演示文稿添加数字签名后,PowerPoint中将出现一条特殊消息:
要对演示文稿进行签名或检查演示文稿签名的真实性,Aspose.Slides API提供了IDigitalSignature接口、IDigitalSignatureCollection接口和IPresentation.DigitalSignatures方法。目前,仅支持PPTX格式的数字签名。
从PFX证书添加数字签名
下面的代码示例演示了如何从PFX证书添加数字签名:
- 打开PFX文件并将PFX密码传递给DigitalSignature对象。
- 将创建的签名添加到演示文稿对象。
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"演示文稿在签名后已被修改。");
    }
}