Digitale handtekeningen toevoegen aan presentaties in PHP

Inleiding

Digitale certificaat wordt gebruikt om een met wachtwoord beveiligde PowerPoint‑presentatie te maken, gemarkeerd als aangemaakt door een bepaalde organisatie of persoon. Een digitaal certificaat kan verkregen worden door contact op te nemen met een geautoriseerde organisatie – een certificeringsautoriteit. Nadat het digitale certificaat in het systeem is geïnstalleerd, kan het gebruikt worden om een digitale handtekening toe te voegen aan de presentatie via Bestand -> Info -> Presentatie beveiligen:

todo:image_alt_text

Een presentatie kan meer dan één digitale handtekening bevatten. Nadat de digitale handtekening aan de presentatie is toegevoegd, verschijnt er een speciaal bericht in PowerPoint:

todo:image_alt_text

Om een presentatie te ondertekenen of de authenticiteit van presentatiehandtekeningen te controleren, biedt de Aspose.Slides API de klasse DigitalSignature, de klasse DigitalSignatureCollection en de methode Presentation::getDigitalSignatures. Momenteel worden digitale handtekeningen alleen ondersteund voor het PPTX‑formaat.

Een digitale handtekening toevoegen vanuit een PFX‑certificaat

De onderstaande codevoorbeeld toont hoe een digitale handtekening toe te voegen vanuit een PFX‑certificaat:

  1. Open het PFX‑bestand en geef het PFX‑wachtwoord door aan het DigitalSignature‑object.
  2. Voeg de aangemaakte handtekening toe aan het presentatie‑object.
  # Presentatiebestand openen
  $pres = new Presentation();
  try {
    # DigitalSignature-object maken met PFX-bestand en PFX-wachtwoord
    $signature = new DigitalSignature("testsignature1.pfx", "testpass1");
    # Commentaar voor nieuwe digitale handtekening
    $signature->setComments("Aspose.Slides digital signing test.");
    # Digitale handtekening toevoegen aan presentatie
    $pres->getDigitalSignatures()->add($signature);
    # Presentatie opslaan
    $pres->save("SomePresentationSigned.pptx", SaveFormat::Pptx);
  } finally {
    $pres->dispose();
  }

Nu is het mogelijk te controleren of de presentatie digitaal ondertekend is en niet gewijzigd is:

  # Presentatie openen
  $pres = new Presentation("SomePresentationSigned.pptx");
  try {
    if (java_values($pres->getDigitalSignatures()->size()) > 0) {
      $allSignaturesAreValid = true;
      echo("Signatures used to sign the presentation: ");
      # Controleren of alle digitale handtekeningen geldig zijn
      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

Kan ik bestaande handtekeningen uit een bestand verwijderen?

Ja. De collectie digitale handtekeningen ondersteunt het verwijderen van individuele items en het het volledig wissen; nadat je het bestand hebt opgeslagen, bevat de presentatie geen handtekeningen meer.

Wordt het bestand “alleen‑lezen” na ondertekening?

Nee. Een handtekening behoudt de integriteit en auteurschap, maar blokkeert geen bewerkingen. Om bewerken te beperken, combineer je het met “Alleen‑lezen” of een wachtwoord.

Wordt de handtekening correct weergegeven in verschillende versies van PowerPoint?

De handtekening is gemaakt voor de OOXML‑ (PPTX)‑container. Moderne versies van PowerPoint die OOXML‑handtekeningen ondersteunen tonen de status van dergelijke handtekeningen correct.