Přidat digitální podpisy do prezentací v PHP

Úvod

Digitální certifikát se používá k vytvoření prezentace PowerPoint chráněné heslem, označené jako vytvořená konkrétní organizací nebo osobou. Digitální certifikát lze získat kontaktováním autorizované organizace – certifikační autority. Po instalaci digitálního certifikátu do systému jej lze použít k přidání digitálního podpisu do prezentace přes Soubor → Informace → Chránit prezentaci:

todo:image_alt_text

Prezentace může obsahovat více než jeden digitální podpis. Po přidání digitálního podpisu do prezentace se v PowerPointu zobrazí speciální zpráva:

todo:image_alt_text

K podepsání prezentace nebo ověření pravosti podpisů prezentace poskytuje Aspose.Slides API třídu DigitalSignature, třídu DigitalSignatureCollection a metodu Presentation::getDigitalSignatures. V současné době jsou digitální podpisy podporovány pouze pro formát PPTX.

Přidání digitálního podpisu z PFX certifikátu

Níže uvedený ukázkový kód demonstruje, jak přidat digitální podpis z PFX certifikátu:

  1. Otevřete soubor PFX a předáte heslo PFX objektu DigitalSignature.
  2. Přidejte vytvořený podpis do objektu prezentace.
  # Otevírání souboru prezentace
  $pres = new Presentation();
  try {
    # Vytvořit objekt DigitalSignature s PFX souborem a PFX heslem
    $signature = new DigitalSignature("testsignature1.pfx", "testpass1");
    # Komentář k novému digitálnímu podpisu
    $signature->setComments("Aspose.Slides digital signing test.");
    # Přidat digitální podpis do prezentace
    $pres->getDigitalSignatures()->add($signature);
    # Uložit prezentaci
    $pres->save("SomePresentationSigned.pptx", SaveFormat::Pptx);
  } finally {
    $pres->dispose();
  }

Nyní je možné zkontrolovat, zda byla prezentace digitálně podepsána a nebyla upravena:

  # Otevřít prezentaci
  $pres = new Presentation("SomePresentationSigned.pptx");
  try {
    if (java_values($pres->getDigitalSignatures()->size()) > 0) {
      $allSignaturesAreValid = true;
      echo("Signatures used to sign the presentation: ");
      # Zkontrolovat, zda jsou všechny digitální podpisy platné
      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();
    }
  }

Často kladené otázky

Mohu odstranit existující podpisy ze souboru?

Ano. Kolekce digitálních podpisů podporuje removing individual items a clearing it entirely; po uložení souboru nebude v prezentaci žádný podpis.

Stane se soubor po podpisu „read-only“?

Ne. Podpis zachovává integritu a autorství, ale neblokuje úpravy. Pro omezení úprav jej kombinujte s “Read-only” nebo heslem.

Zobrazí se podpis správně v různých verzích PowerPointu?

Podpis je vytvořen pro kontejner OOXML (PPTX). Moderní verze PowerPointu, které podporují OOXML podpisy, zobrazí stav takových podpisů správně.