Handtekeningtransformatiemethoden en permissies
HotPDF kan DocMDP- en FieldMDP-permissiestructuren opstellen en daarna elke standaard handtekeningtransformatiemethode in een geladen document inspecteren en classificeren
Producer API
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 combineert het aanmaken van een ondertekende tijdelijke aanduiding met certificeringsconfiguratie
ConfigureCertificationSignature is voor een reeds aangemaakte ondertekende tijdelijke aanduiding en vereist dat dat veld het eerste veld is dat een handtekeningwoordenboek draagt
Een document kan slechts één certificeringshandtekening bevatten, zodat een tweede configuratieverzoek wordt afgewezen voordat de objectgraaf wordt gewijzigd
Deze API's schakelen automatisch over naar PDF 1.5-uitvoer
DocMDP-permissieniveaus
| Waarde | Certificeringspermissie |
|---|---|
dmpNoChanges | Na certificering zijn geen wijzigingen toegestaan |
dmpFormFillAndSign | Formuliervulling, sjablooninstantiatie en ondertekening zijn toegestaan |
dmpFormFillSignAndAnnotate | De voorgaande wijzigingen plus het aanmaken, verwijderen en wijzigen van annotaties zijn toegestaan |
dmpNone is gereserveerd voor inspectieresultaten zonder een DocMDP-transformatie en wordt door producer-methoden afgewezen
Vergrendelingsbereiken van velden
| Waarde | Fields-argument | Effect na ondertekenen |
|---|---|---|
flaAll | Moet leeg zijn | Vergrendelt elk formulierveld |
flaInclude | Een of meer unieke veldnamen | Vergrendelt alleen de vermelde velden |
flaExclude | Een of meer unieke veldnamen | Vergrendelt elk veld behalve de vermelde velden |
AttachSignatureFieldLock wijst lege namen, dubbele namen, ongeldige actiewaarden, een incompatibele Fields-vorm, een niet-ondertekend doelveld of een veld dat al een vergrendeling of FieldMDP-beleid draagt af
Emitted structure
- De certificeringshandtekening draagt een directe
/Reference-array die een direct DocMDP-handtekeningreferentiewoordenboek en directe transformatieparameters bevat - De Catalog-verwijzing
/Perms /DocMDPwijst naar hetzelfde indirecte handtekeningwoordenboek - De veldverwijzing
/Lockwijst naar een indirect/Type /SigFieldLock-woordenboek - Het vergrendelingsbereik wordt gekopieerd naar een directe FieldMDP-handtekeningreferentie en diens
/Data-verwijzing wijst naar de indirecte Catalog-wortel - Het handtekeningwoordenboek markeert transformatieverwijzingen als kritiek via
/V 1
Delphi-voorbeeld
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;
Loaded inspection
function GetLoadedSignaturePermissions( SigIndex: Integer; out Info: THPDFSignaturePermissionInfo): Boolean;
De lezer rapporteert de volledige transformatieset, het referentieaantal, de DocMDP-permissie, de SigFieldLock- en FieldMDP-bereiken, de UR-gebruiksrechten, de Catalog UR- of UR3-bron, de Identity-objectscope, onbekende methoden, structurele geldigheid en een diagnostische probleemtekenreeks
De lezer verifieert de vereiste directe en indirecte vormen, Catalog-/Perms-doelen, transformatieversies, dubbele verwijzingen, UR-versus-UR3-beperkingen en de optionele DocMDP-/P 2-standaard
Als zowel SigFieldLock als FieldMDP aanwezig zijn, moeten hun acties en veldlijsten overeenkomen
Het doorlopen van de Identity-scope is cycle-veilig en begrensd op 64 niveaus en 100000 indirecte objecten, en inspectie voert nooit JavaScript, acties of handtekeninginhoud uit
Dekking van standaardtransformaties
| Method | Gerapporteerd beleid |
|---|---|
DocMDP | Certificeringspermissie en de bijpassende Catalog-doelverwijzing /Perms /DocMDP |
UR | Document-, annotatie-, formulier-, handtekening- en ingesloten-bestandsrechten plus de legacy-/UR- of byte-range-/UR3-bron |
FieldMDP | Vergrendelingsbereik All, Include of Exclude en overeenstemming met de gekopieerde SigFieldLock |
Identity | Cycle-veilige transitieve objectnummers die vanaf de vereiste indirecte /Data-wortel bereikbaar zijn |
Onbekende methodenamen worden bewaard in UnknownTransformMethods en maken de permissiestructuur ongeldig, zodat een kritieke transformatie niet over het hoofd kan worden gezien
Validation boundary
GetLoadedSignaturePermissions rapporteert alleen de beleidsstructuur
VerifyLoadedSignature rapporteert de cryptografische integriteit nog steeds apart
AnalyzeLoadedSignatureRevisions analyseert semantische wijzigingen revisie voor revisie voor byte-range DocMDP-, FieldMDP-, UR3- en Identity-beleidsregels, terwijl verouderde non-byte-range UR-object-digest-handtekeningen nog steeds via structurele inspectie zichtbaar blijven
SaveIncrementalUpdateAuthenticated maakt van inspectie handhaving: het leest beleid uit de ondertekende snapshots, authenticeert de sturende handtekeningen, valideert alle latere revisies en publiceert pas via atomaire vervanging nadat elk beleid is geslaagd
Prestaties
Producer-validatie scant alleen zelf aangemaakte AcroForm-velden en de kleine handtekeningreferentie-array, terwijl geladen inspectie alleen de gekozen handtekening, diens vergrendeling, verwijzingen en de Catalog-permissieverwijzing leest
Er wordt geen pagina-inhoud, afbeeldingsstream, lettertypeprogramma of niet-gerelateerd indirect object gedecodeerd