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

Sprawdza on wymagane bezpośrednie i pośrednie kształty obiektów oraz potwierdza, że /Perms /DocMDP katalogu wskazuje na ten sam słownik podpisu

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

GetLoadedSignaturePermissions zgłasza tylko strukturę polityki

VerifyLoadedSignature nadal oddzielnie zgłasza integralność kryptograficzną

Żadna z metod nie twierdzi, że każda późniejsza rewizja przyrostowa przestrzega zgłoszonego uprawnienia DocMDP lub FieldMDP, ponieważ wymaga to analizy zmian semantycznych rewizja po rewizji

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ż