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"演示文稿在签名后已被修改。");
}
}