Dodawanie podpisów cyfrowych do prezentacji w Javie

Wprowadzenie

Certyfikat cyfrowy służy do tworzenia chronionej hasłem prezentacji PowerPoint, oznaczonej jako utworzonej przez określoną organizację lub osobę. Certyfikat cyfrowy można uzyskać, kontaktując się z autoryzowaną organizacją – jednostką certyfikującą. Po zainstalowaniu certyfikatu cyfrowego w systemie, można go użyć do dodania cyfrowego podpisu do prezentacji, wybierając Plik → Informacje → Chronienie prezentacji:

todo:image_alt_text

Prezentacja może zawierać więcej niż jeden cyfrowy podpis. Po dodaniu cyfrowego podpisu do prezentacji, w programie PowerPoint pojawi się specjalna wiadomość:

todo:image_alt_text

Aby podpisać prezentację lub sprawdzić autentyczność podpisów w prezentacji, Aspose.Slides API udostępnia IDigitalSignature interfejs, IDigitalSignatureCollection interfejs oraz IPresentation.getDigitalSignatures metodę. Obecnie cyfrowe podpisy są obsługiwane wyłącznie dla formatu PPTX.

Dodaj cyfrowy podpis z certyfikatu PFX

Poniższy przykład kodu pokazuje, jak dodać cyfrowy podpis z certyfikatu PFX:

  1. Otwórz plik PFX i przekaż hasło PFX do DigitalSignature obiektu.
  2. Dodaj utworzony podpis do obiektu prezentacji.
// Otwieranie pliku prezentacji
Presentation pres = new Presentation();
try {
    // Utwórz obiekt DigitalSignature z plikiem PFX i hasłem PFX 
    DigitalSignature signature = new DigitalSignature("testsignature1.pfx", "testpass1");

    // Dodaj komentarz do nowego podpisu cyfrowego
    signature.setComments("Aspose.Slides digital signing test.");

    // Dodaj podpis cyfrowy do prezentacji
    pres.getDigitalSignatures().add(signature);

    // Zapisz prezentację
    pres.save("SomePresentationSigned.pptx", SaveFormat.Pptx);
} finally {
    pres.dispose();
}

Teraz można sprawdzić, czy prezentacja została cyfrowo podpisana i nie została zmodyfikowana:

// Otwórz prezentację
Presentation pres = new Presentation("SomePresentationSigned.pptx");
try {
    if (pres.getDigitalSignatures().size() > 0)
    {
        boolean allSignaturesAreValid = true;

        System.out.println("Signatures used to sign the presentation: ");

        // Sprawdź, czy wszystkie podpisy cyfrowe są ważne
        for (IDigitalSignature signature : pres.getDigitalSignatures())
        {
            System.out.println(signature.getComments() + ", "
                    + signature.getSignTime().toString() + " -- " + (signature.isValid() ? "VALID" : "INVALID"));
            allSignaturesAreValid &= signature.isValid();
        }

        if (allSignaturesAreValid)
            System.out.println("Presentation is genuine, all signatures are valid.");
        else
            System.out.println("Presentation has been modified since signing.");
    }
} finally {
    if (pres != null) pres.dispose();
}

FAQ

Czy mogę usunąć istniejące podpisy z pliku?

Tak. Kolekcja cyfrowych podpisów obsługuje usuwanie pojedynczych elementów oraz czyszczenie jej w całości; po zapisaniu pliku prezentacja nie będzie zawierała żadnych podpisów.

Czy plik staje się „tylko do odczytu” po podpisaniu?

Nie. Podpis zachowuje integralność i autorstwo, ale nie blokuje edycji. Aby ograniczyć edycję, połącz go z “Tylko do odczytu” lub hasło.

Czy podpis będzie wyświetlany poprawnie w różnych wersjach PowerPointa?

Podpis jest tworzony dla kontenera OOXML (PPTX). Współczesne wersje PowerPointa, które obsługują podpisy OOXML, wyświetlają status takich podpisów poprawnie.