C++ でプレゼンテーションにデジタル署名を追加する

デジタル証明書は、パスワードで保護された PowerPoint プレゼンテーションを作成するために使用され、特定の組織または個人が作成したことがマークされます。デジタル証明書は、認可された組織(証明書発行機関)に連絡することで取得できます。システムにデジタル証明書をインストールした後、File -> Info -> Protect Presentation からプレゼンテーションにデジタル署名を追加できます:

todo:image_alt_text

プレゼンテーションは複数のデジタル署名を含むことができます。デジタル署名がプレゼンテーションに追加されると、PowerPoint に特別なメッセージが表示されます:

todo:image_alt_text

プレゼンテーションに署名したり、署名の真正性を確認したりするには、Aspose.Slides APIIDigitalSignature インターフェイス、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 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 バージョンでは、署名のステータスが正しく表示されます。