Podpisywanie pliku PDF bazowym podpisem PAdES (przeniesione)
Ten przepis został przeniesiony
Dział zatytułowany „Ten przepis został przeniesiony”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
Dlaczego ta strona uległa zmianie (erratum)
Dział zatytułowany „Dlaczego ta strona uległa zmianie (erratum)”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
SignedDataCMS 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ógsignature-time-stampdla 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.
Co pozostało bez zmian
Dział zatytułowany „Co pozostało bez zmian”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
Contentssłownika podpisu (ISO 32000-2 §12.8.1). - Skrót jest obliczany dla
ByteRangei 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.