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