Przejdź do głównej zawartości

Podpisywanie pliku PDF bazowym podpisem PAdES (przeniesione)

Przewodnik dotyczący podpisywania, który wcześniej znajdował się na tej stronie, został zastąpiony. Skorzystaj zamiast tego z kanonicznego przepisu:

Podpisz plik PDF za pomocą PAdES B-B, a następnie rozszerz go do PAdES B-T

Wcześniejsza wersja tej strony informowała, że wysokopoziomowa ścieżka Document::setSignature()save() nie jest podłączona i zgłasza wyjątek NotImplementedException. To już nieprawda. Wysokopoziomowa ścieżka zapisuje teraz rzeczywisty podpis.

Wywołanie Document::setSignature($cert, SignatureLevel::PAdES_B_B)->save() (oraz równoważne output() / getPdfData()) zapisuje pole /Sig z wartością /ByteRange oraz obiektem SignedData składni Cryptographic Message Syntax (CMS), zakodowanym zgodnie z Distinguished Encoding Rules (DER), we wpisie Contents słownika podpisu. Jest to struktura, którą ISO 32000-2 §12.8 określa dla SubFilter ETSI.CAdES.detached. Wynik jest weryfikowalny w CMS: standardowy weryfikator CMS/PKCS#7 (Public-Key Cryptography Standards #7) potrafi go sparsować i sprawdzić.

  • B-B — poziom Core — jest tworzony bezpośrednio przez tę ścieżkę.
  • B-T dodaje jeden signature-time-stamp zgodny z RFC 3161, jeśli w tym samym wywołaniu przekażesz TsaClient.
  • B-LT / B-LTA można uzyskać przez tę samą wysokopoziomową ścieżkę (setSignature($cert, SignatureLevel::PAdES_B_LTA, $tsaClient)->save()), gdy zainstalowane są pakiety Pro oraz Enterprise; bez nich wywołanie kończy się niepowodzeniem w trybie fail-closed i nie zapisuje częściowej rewizji długoterminowej. W przypadku dokumentów zaszyfrowanych obsługa B-LT/B-LTA również kończy się niepowodzeniem w trybie fail-closed.

Niskopoziomowa ścieżka NextPDF\Security\Signature\DigitalSigner jest nadal obsługiwana. Kanoniczny przepis poniżej omawia ją krok po kroku. Wysokopoziomowa ścieżka to lekka warstwa ułatwiająca pracę z tym samym silnikiem podpisywania. Zestaw testów integracyjnych sprawdza obie ścieżki i tworzy rzeczywisty, parsowalny obiekt CMS.

Zastrzeżenie U-1 (zakres twierdzenia). „Weryfikowalny w CMS” oznacza, że utworzony obiekt jest poprawnie uformowanym obiektem SignedData CMS zgodnie z RFC 5652 oraz ISO 32000-2 §12.8. Nie stanowi to potwierdzenia zgodności z profilem bazowym ETSI EN 319 142-1 ani ważności prawnej. Część tego standardu dotycząca poziomów bazowych nie znajduje się w korpusie weryfikacyjnym; wymóg signature-time-stamp dla B-T został sprawdzony względem ETSI EN 319 122-1 §5.3 z użyciem RFC 3161, RFC 5652, RFC 5816 oraz ISO 32000-2 §12.8. B-LT/B-LTA tworzą strukturę walidacji długoterminowej (słownik DSS oraz rewizję DocTimeStamp); nie są przedstawiane jako przetestowane pod kątem zgodności z profilem. O zgodności oraz ważności prawnej rozstrzyga niezależny walidator.

Strukturalne fakty, które poprzednia strona podawała na temat artefaktu zapisanego na dysku, pozostają poprawne. Przepis zastępczy przedstawia je ponownie wraz z dowodami:

  • Wartość podpisu jest przechowywana we wpisie Contents słownika podpisu (ISO 32000-2 §12.8.1).
  • Skrót jest obliczany dla ByteRange i nie obejmuje samej wartości podpisu (ISO 32000-2 §12.8.1).

Ta strona nie stwierdza, że którykolwiek z utworzonych podpisów jest prawnie ważny. Ważność prawna zależy od certyfikatu, jego punktu zaufania (trust anchor) oraz polityki weryfikatora. Wszystkie te czynniki znajdują się poza zakresem tej biblioteki.