C++ でプレゼンテーションにデジタル署名を追加する
デジタル証明書は、パスワードで保護された PowerPoint プレゼンテーションを作成するために使用され、特定の組織または個人が作成したことがマークされます。デジタル証明書は、認可された組織(証明書発行機関)に連絡することで取得できます。システムにデジタル証明書をインストールした後、File -> Info -> Protect Presentation からプレゼンテーションにデジタル署名を追加できます:
プレゼンテーションは複数のデジタル署名を含むことができます。デジタル署名がプレゼンテーションに追加されると、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 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.");
}
}
FAQ
ファイルから既存の署名を削除できますか?
はい。デジタル署名コレクションは 個々の項目の削除 と 全体のクリア をサポートしています。ファイルを保存した後、プレゼンテーションには署名が残りません。
署名後にファイルは「読み取り専用」になりますか?
いいえ。署名は完全性と作成者情報を保持しますが、編集をブロックするわけではありません。編集を制限したい場合は、“Read-only” またはパスワード と組み合わせて使用してください。
異なるバージョンの PowerPoint でも署名は正しく表示されますか?
署名は OOXML (PPTX) コンテナ用に作成されています。OOXML 署名に対応した最新の PowerPoint バージョンでは、署名のステータスが正しく表示されます。