PAdES-handtekeningbeleid-validatie

HotPDF maakt en valideert het expliciete CMS-kenmerk signature-policy-identifier dat wordt gebruikt door PAdES E-EPES-handtekeningen

Een expliciet beleid genereren

Stel SignaturePolicyOID en de digest van het beleidsdocument in op THPDFCMSSignOptions, en kies dan optionele gestructureerde kwalificaties

Options := HPDFCMSDefaultOptions(palExtended_E_EPES);
Options.SignaturePolicyOID := '1.2.3.4.5.1';
Options.SignaturePolicyHash := HPDFCMSDigestBytes(PolicyDocument, cmsdaSHA256);
Options.SignaturePolicyURI := 'https://policies.example/approval-v1';

SetLength(Options.SignaturePolicyQualifiers, 1);
Options.SignaturePolicyQualifiers[0].Kind := cmsqUserNotice;
Options.SignaturePolicyQualifiers[0].ExplicitText := 'Approval policy applies';

CMS := HPDFCMSBuildSignedDataEx(KeyMaterial, DocumentDigest, Options);

SignaturePolicyHashAlgOID valt standaard terug op SHA-256 wanneer het leeg is, terwijl SignaturePolicyURI een compatibiliteitssnelkoppeling blijft voor één SPuri-kwalificatie en kan worden gecombineerd met SignaturePolicyQualifiers

Het gestructureerde kwalificatiemodel ondersteunt SPuri, SPUserNotice met een optionele kennisgevingreferentie en expliciete tekst, en SPDocSpecification geïdentificeerd door een OID of URI

Stel SignaturePolicyHashIsUnknown alleen in wanneer de ondertekenaar de beleidshash niet kent; HotPDF geeft dan de ETSI-alle-nul-representatie uit met de geselecteerde digestlengte

Parsen en rapporteren

HPDFParseCMSSignature stelt het kenmerk bloot via THPDFSignatureInfo.SignaturePolicy, inclusief de identificatie, het hash-algoritme, de hash-bytes, de onbekend-hash-vlag, de kwalificaties en de validatiestatus

Bekende kwalificatiewaarden worden gedecodeerd in getypeerde velden, terwijl een onherkende kwalificatie zijn OID- en ruwe waarde-DER behoudt voor verwerking op applicatieniveau

HPDFSignatureValidationReportToJSON serialiseert dezelfde beleids- en kwalificatiegegevens met een machineleesbare validatiestatus

Een vereist beleid vastpinnen

VerifyOptions := THPDFCMSVerifyOptions.Default;
VerifyOptions.RequireSignaturePolicy := True;
VerifyOptions.ExpectedSignaturePolicyOID := '1.2.3.4.5.1';
VerifyOptions.ExpectedSignaturePolicyHash := ExpectedPolicyHash;
VerifyOptions.SignaturePolicyDocument := PolicyDocument;
VerifyOptions.VerifySignaturePolicyDocumentHash := True;
VerifyOptions.RejectUnknownSignaturePolicyHash := True;

Status := HPDFVerifyCMSSignatureEx(Source, ByteRange, CMS,
  VerifyOptions, SignatureInfo);

Verwachte OID- en hash-velden beperken alleen de overeenkomstige waarde, en verificatie van het beleidsdocument hasht zelfs een opzettelijk leeg document wanneer VerifySignaturePolicyDocumentHash waar is

Ontbrekende, afwijkende, ondersteunde of geweigerde onbekende beleidsregels retourneren svSignaturePolicyMismatch en vfcSignaturePolicyMismatch met een nauwkeurige THPDFSignaturePolicyValidationStatus

Beleidscontroles worden uitgevoerd vóór handtekeningprovider-, certificaatpad- of bewijswerk en gelden alleen voor primaire SignerInfo-records, zodat een beleid van het bovenliggende document tegenondertekeningen niet beperkt

Striktheid en grenzen

De parser wijst dubbele beleidskenmerken, meerdere waarden, implied-policy NULL, ongeldig gevormde bekende kwalificaties, niet-ASCII IA5String-waarden, ongeldige Unicode, verkeerde bekende digestlengten en verzamelingsgroottes boven de geconfigureerde implementatielimieten af

PAdES E-EPES vereist het expliciete beleidskenmerk precies één keer en verbiedt de /Reason-invoer van het PDF-handtekeningenwoordenboek wanneer dat kenmerk aanwezig is; de CMS-laag kan het PDF-woordenboek niet inspecteren, dus de PDF-producerende werkstroom moet die laatste beperking afdwingen

Zie CMS met meerdere primaire ondertekenaars, CMS digest-algoritmeconsistentie en CMS-validatierapporten