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

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

todo:image_alt_text

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

todo:image_alt_text

プレゼンテーションに署名したり、署名の真正性を確認したりするには、Aspose.Slides APIDigitalSignature クラス、DigitalSignatureCollection クラス、および Presentation::getDigitalSignatures メソッドを提供します。現在、デジタル署名は PPTX 形式のみでサポートされています。

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

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

  1. PFX ファイルを開き、PFX パスワードを DigitalSignature オブジェクトに渡します。
  2. 作成した署名をプレゼンテーション オブジェクトに追加します。
  # プレゼンテーションファイルを開く
  $pres = new Presentation();
  try {
    # PFXファイルとPFXパスワードでDigitalSignatureオブジェクトを作成
    $signature = new DigitalSignature("testsignature1.pfx", "testpass1");
    # 新しいデジタル署名にコメントを設定
    $signature->setComments("Aspose.Slides digital signing test.");
    # デジタル署名をプレゼンテーションに追加
    $pres->getDigitalSignatures()->add($signature);
    # プレゼンテーションを保存
    $pres->save("SomePresentationSigned.pptx", SaveFormat::Pptx);
  } finally {
    $pres->dispose();
  }

これで、プレゼンテーションがデジタル署名されており、変更されていないかどうかを確認できるようになりました:

  # プレゼンテーションを開く
  $pres = new Presentation("SomePresentationSigned.pptx");
  try {
    if (java_values($pres->getDigitalSignatures()->size()) > 0) {
      $allSignaturesAreValid = true;
      echo("Signatures used to sign the presentation: ");
      # すべてのデジタル署名が有効かチェック
      foreach($pres->getDigitalSignatures() as $signature) {
        echo($signature->getComments() . ", " . $signature->getSignTime()->toString() . " -- " . $signature->isValid() ? "VALID" : "INVALID");
        $allSignaturesAreValid &= $signature->isValid();
      }
      if ($allSignaturesAreValid) {
        echo("Presentation is genuine, all signatures are valid.");
      } else {
        echo("Presentation has been modified since signing.");
      }
    }
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

FAQ

既存の署名をファイルから削除できますか?

はい。デジタル署名コレクションは、個々の項目を削除 できることと、全体をクリア できることをサポートしています。ファイルを保存すると、プレゼンテーションに署名は残りません。

署名後にファイルは「読み取り専用」になりますか?

いいえ。署名は完全性と作者情報を保持しますが、編集をブロックしません。編集を制限するには、“Read-only” またはパスワード と組み合わせてください。

異なるバージョンの PowerPoint でも署名は正しく表示されますか?

署名は OOXML (PPTX) コンテナ用に作成されています。OOXML 署名に対応した最新の PowerPoint バージョンでは、署名のステータスが正しく表示されます。