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:
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:
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:
- Otevřete soubor PFX a předáte heslo PFX objektu DigitalSignature.
- 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ě.