THotPDF.SaveIncrementalUpdateAuthenticated Method

Autentizuje politiky podepsaných revizí, odmítne zakázané změny a atomicky publikuje inkrementální update

Deklarace

function SaveIncrementalUpdateAuthenticated(
  const TargetFile: TFileName;
  const Options: THPDFAuthenticatedIncrementalUpdateOptions;
  out Info: THPDFAuthenticatedIncrementalUpdateInfo
): Boolean; overload;

function SaveIncrementalUpdateAuthenticated(
  const TargetFile: TFileName;
  out Info: THPDFAuthenticatedIncrementalUpdateInfo
): Boolean; overload;

Workflow

  1. Zapíše čekající inkrementální revizi do unikátního kandidáta v cílovém adresáři
  2. Načte každou politiku z přesné revize chráněné jejím podpisovým bajtovým rozsahem
  3. Autentizuje každý CMS podpis nesoucí politiku a volitelně zvaliduje jeho certifikátovou cestu
  4. Klasifikuje každou pozdější revizi a vynutí rozhodnutí DocMDP, FieldMDP, UR nebo UR3, Identity i neznámých transformací
  5. Publikuje přijatého kandidáta write-through atomickou náhradou

Zamítnutí kandidáta smaže a existující cíl zůstane byte-for-byte beze změny

Volby

ČlenÚčel
AuthenticationipaCryptographic vyžaduje platný CMS byte-range podpis, zatímco ipaTrustedCertificate navíc vyžaduje cvsTrusted z validace certifikátové cesty a revokace
RequireSignaturePolicyPři True (výchozí) odmítne dokumenty bez autentizované transform politiky
CertificateValidationTrust kotvy, intermediate certifikáty, offline revokační evidence, validační čas, účel a algoritmická politika používané režimem trusted certificate

Detaily výsledku

THPDFAuthenticatedIncrementalUpdateInfo hlásí finální stav, index selhavšího podpisu, stav podpisu a certifikátu, celkový počet podpisů, počet autentizovaných politik a diagnostický issue

Důležité stavy zahrnují aiusAccepted, aiusNoSignaturePolicy, aiusSignatureInvalid, aiusCertificateUntrusted, aiusPolicyMalformed, aiusPolicyViolation a aiusCommitFailed

Použití

var
  Info: THPDFAuthenticatedIncrementalUpdateInfo;
begin
  PDF.BeginIncrementalUpdate('certified.pdf');
  PDF.SetLoadedFormFieldValueByName('CustomerName', 'Ada');
  if not PDF.SaveIncrementalUpdateAuthenticated('updated.pdf', Info) then
    raise Exception.Create(String(Info.Issue));
end;

Bezpečnostní hranice

Související API