PowerPointにおけるデジタル署名

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

todo:image_alt_text

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

todo:image_alt_text

プレゼンテーションに署名したり、プレゼンテーションの署名の真偽を確認するために、Aspose.Slides APIIDigitalSignatureインターフェース、IDigitalSignatureCollectionインターフェース、およびIPresentation.getDigitalSignaturesメソッドを提供します。現在、デジタル署名はPPTX形式のみがサポートされています。

PFX証明書からデジタル署名を追加する

以下のコードサンプルは、PFX証明書からデジタル署名を追加する方法を示しています:

  1. PFXファイルを開き、PFXパスワードをDigitalSignatureオブジェクトに渡します。
  2. 作成した署名をプレゼンテーションオブジェクトに追加します。
// プレゼンテーションファイルを開く
Presentation pres = new Presentation();
try {
    // PFXファイルとPFXパスワードでDigitalSignatureオブジェクトを作成
    DigitalSignature signature = new DigitalSignature("testsignature1.pfx", "testpass1");

    // 新しいデジタル署名にコメントを追加
    signature.setComments("Aspose.Slidesデジタル署名テスト。");

    // プレゼンテーションにデジタル署名を追加
    pres.getDigitalSignatures().add(signature);

    // プレゼンテーションを保存
    pres.save("SomePresentationSigned.pptx", SaveFormat.Pptx);
} finally {
    pres.dispose();
}

これで、プレゼンテーションがデジタル署名されており、変更されていないかどうかを確認することが可能です:

// プレゼンテーションを開く
Presentation pres = new Presentation("SomePresentationSigned.pptx");
try {
    if (pres.getDigitalSignatures().size() > 0)
    {
        boolean allSignaturesAreValid = true;

        System.out.println("プレゼンテーションに署名するために使われた署名: ");

        // すべてのデジタル署名が有効か確認
        for (IDigitalSignature signature : pres.getDigitalSignatures())
        {
            System.out.println(signature.getComments() + ", "
                    + signature.getSignTime().toString() + " -- " + (signature.isValid() ? "有効" : "無効"));
            allSignaturesAreValid &= signature.isValid();
        }

        if (allSignaturesAreValid)
            System.out.println("プレゼンテーションは本物であり、すべての署名は有効です。");
        else
            System.out.println("署名以来、プレゼンテーションが変更されています。");
    }
} finally {
    if (pres != null) pres.dispose();
}