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
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