Podpisy certyfikujące i blokady pól

HotPDF może tworzyć struktury uprawnień PDF dołączone do podpisów certyfikujących i podpisanych blokad pól, a następnie sprawdzać te same struktury w załadowanym dokumencie

API producenta

procedure AddCertificationSignatureField(
  const FieldName: AnsiString;
  Rectangle: TRect;
  Permission: THPDFDocMDPPermission;
  ContentsBytes: Integer = 8192;
  const SubFilter: AnsiString = 'adbe.pkcs7.detached';
  const Reason: AnsiString = '';
  const Location: AnsiString = '';
  const ContactName: AnsiString = '';
  Flags: THPDFFormFieldFlags = []);

procedure ConfigureCertificationSignature(
  const FieldName: AnsiString;
  Permission: THPDFDocMDPPermission);

procedure AttachSignatureFieldLock(
  const FieldName: AnsiString;
  Action: THPDFFieldLockAction;
  const Fields: array of AnsiString);

AddCertificationSignatureField łączy tworzenie podpisanego zastępnika z konfiguracją certyfikacji

ConfigureCertificationSignature służy do istniejącego utworzonego podpisanego zastępnika i wymaga, aby to pole było pierwszym polem niosącym słownik podpisu

Dokument może zawierać tylko jeden podpis certyfikujący, więc drugie żądanie konfiguracji jest odrzucane, zanim graf obiektów zostanie zmieniony

Te API automatycznie negocjują wyjście PDF 1.5

Poziomy uprawnień DocMDP

Wartość Uprawnienie certyfikacji
dmpNoChangesPo certyfikacji nie są dozwolone żadne zmiany
dmpFormFillAndSignDozwolone jest wypełnianie formularza, instancjonowanie szablonu i podpisywanie
dmpFormFillSignAndAnnotateDozwolone są powyższe zmiany oraz tworzenie, usuwanie i modyfikowanie adnotacji

dmpNone jest zarezerwowane dla wyników inspekcji bez przekształcenia DocMDP i jest odrzucane przez metody producenta

Zakresy blokady pól

Wartość Argument Fields Skutek po podpisaniu
flaAllMusi być pustyBlokuje każde pole formularza
flaIncludeJedna lub więcej unikalnych nazw pólBlokuje tylko wymienione pola
flaExcludeJedna lub więcej unikalnych nazw pólBlokuje każde pole z wyjątkiem wymienionych

AttachSignatureFieldLock odrzuca puste nazwy, zduplikowane nazwy, nieprawidłowe wartości akcji, niezgodny kształt Fields, niepodpisane pole docelowe lub pole, które już niesie blokadę lub politykę FieldMDP

Wytwarzana struktura

Przykład w Delphi

var
  LockedFields: THPDFAnsiStringArray;
begin
  HotPDF.CurrentPage.AddTextField(
    'InternalCode', '', Rect(40, 80, 220, 108));

  HotPDF.CurrentPage.AddCertificationSignatureField(
    'CertSig', Rect(40, 140, 260, 190),
    dmpFormFillAndSign, 8192,
    'adbe.pkcs7.detached', 'Document approval');

  SetLength(LockedFields, 1);
  LockedFields[0] := 'InternalCode';
  HotPDF.CurrentPage.AttachSignatureFieldLock(
    'CertSig', flaInclude, LockedFields);
end;

Inspekcja załadowana

function GetLoadedSignaturePermissions(
  SigIndex: Integer;
  out Info: THPDFSignaturePermissionInfo): Boolean;

Czytnik zgłasza uprawnienie DocMDP, powiązanie z katalogiem, zakres SigFieldLock, zakres FieldMDP, nazwy pól, poprawność strukturalną i ciąg problemu diagnostycznego

Weryfikuje wymagane kształty bezpośrednie i pośrednie, cele Catalog /Perms, wersje transformacji, zduplikowane referencje, restrykcje UR względem UR3 oraz opcjonalny domyślny DocMDP /P 2

Jeśli obecne są zarówno SigFieldLock, jak i FieldMDP, ich akcje i listy pól muszą się zgadzać

Czytnik wykonuje ograniczoną inspekcję słowników i tablic i nie wykonuje JavaScriptu, akcji ani treści podpisu

Granica walidacji

MetodaRaportowana polityka
DocMDPUprawnienia certyfikacji i pasujący cel Catalog /Perms /DocMDP
URPrawa dokumentu, adnotacji, formularza, podpisu i plików osadzonych plus źródło legacy /UR albo /UR3 po zakresie bajtów
FieldMDPZakres blokady pól All, Include albo Exclude oraz skopiowana umowa SigFieldLock
IdentityPrzechodnie numery obiektów bezpieczne względem cykli osiągalne od wymaganego pośredniego korzenia /Data

Nieznane nazwy metod pozostają w UnknownTransformMethods i unieważniają strukturę uprawnień, więc krytycznej transformacji nie da się przeoczyć

Granica walidacji

GetLoadedSignaturePermissions zgłasza tylko strukturę polityki

VerifyLoadedSignature nadal oddzielnie zgłasza integralność kryptograficzną

AnalyzeLoadedSignatureRevisions wykonuje analizę zmian semantycznych rewizja po rewizji dla polityk DocMDP, FieldMDP, UR3 i Identity po zakresie bajtów, a przestarzałe podpisy UR z digestem obiektu poza zakresem bajtów pozostają dostępne dla inspekcji strukturalnej

SaveIncrementalUpdateAuthenticated zamienia inspekcję w egzekwowanie: czyta polityki z ich podpisanych snapshotów, uwierzytelnia kontrolujące podpisy, waliduje wszystkie późniejsze rewizje i publikuje przez atomową podmianę dopiero po tym, jak każda polityka przejdzie

Wydajność

Walidacja producenta skanuje tylko utworzone pola AcroForm i małą tablicę odniesień podpisów, podczas gdy inspekcja załadowana odczytuje tylko wybrany podpis, jego blokadę, jego odniesienia i wpis uprawnień katalogu

Żadna treść strony, strumień obrazu, program czcionki ani niezwiązany obiekt pośredni nie jest dekodowany

Zobacz też