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 |
|---|---|
dmpNoChanges | Po certyfikacji nie są dozwolone żadne zmiany |
dmpFormFillAndSign | Dozwolone jest wypełnianie formularza, instancjonowanie szablonu i podpisywanie |
dmpFormFillSignAndAnnotate | Dozwolone 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 |
|---|---|---|
flaAll | Musi być pusty | Blokuje każde pole formularza |
flaInclude | Jedna lub więcej unikalnych nazw pól | Blokuje tylko wymienione pola |
flaExclude | Jedna lub więcej unikalnych nazw pól | Blokuje 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
- Podpis certyfikujący niesie bezpośrednią tablicę
/Referencezawierającą bezpośredni słownik odniesienia podpisu DocMDP i bezpośrednie parametry przekształcenia - Wpis
/Perms /DocMDPkatalogu wskazuje na ten sam pośredni słownik podpisu - Wpis
/Lockpola wskazuje na pośredni słownik/Type /SigFieldLock - Zakres blokady jest kopiowany do bezpośredniego odniesienia podpisu FieldMDP, a jego wpis
/Datawskazuje na pośredni korzeń katalogu - Słownik podpisu oznacza odniesienia przekształcenia jako krytyczne przez
/V 1
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
| Metoda | Raportowana polityka |
|---|---|
DocMDP | Uprawnienia certyfikacji i pasujący cel Catalog /Perms /DocMDP |
UR | Prawa dokumentu, adnotacji, formularza, podpisu i plików osadzonych plus źródło legacy /UR albo /UR3 po zakresie bajtów |
FieldMDP | Zakres blokady pól All, Include albo Exclude oraz skopiowana umowa SigFieldLock |
Identity | Przechodnie 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