Provjera pravila potpisa u PAdES-u

HotPDF stvara i provjerava eksplicitni CMS atribut signature-policy-identifier koji potpisuju PAdES E-EPES potpisi

Generiranje eksplicitnog pravila

Postavite SignaturePolicyOID i digest dokumenta pravila na THPDFCMSSignOptions, a zatim odaberite opcionalne strukturirane kvalifikatore

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 se, kada je prazan, prema zadanim postavkama postavlja na SHA-256, dok SignaturePolicyURI ostaje kratkom putanjom kompatibilnosti za jedan SPuri kvalifikator i može se kombinirati s SignaturePolicyQualifiers

Model strukturiranih kvalifikatora podržava SPuri, SPUserNotice s opcionalnom referencom na bilješku i eksplicitnim tekstom te SPDocSpecification identificiran OID-om ili URI-jem

Postavite SignaturePolicyHashIsUnknown samo kada potpisnik ne poznaje hash pravila; HotPDF tada šalje ETSI reprezentaciju od samih nula na odabranoj duljini digesta

Parsiranje i izvješće

HPDFParseCMSSignature izlaže atribut kroz THPDFSignatureInfo.SignaturePolicy, uključujući njegov identifikator, algoritam hasha, hash bajtove, zastavicu nepoznatog hasha, kvalifikatore i status provjere

Poznate vrijednosti kvalifikatora dekodiraju se u tipizirana polja, dok neprepoznati kvalifikator zadržava svoj OID i sirove DER vrijednosti za obradu na razini aplikacije

HPDFSignatureValidationReportToJSON serijalizira iste podatke o pravilu i kvalifikatorima uz strojno čitljiv status provjere

Zaključavanje obaveznog pravila

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

Polja očekivanog OID-a i hasha ograničavaju samo odgovarajuću vrijednost, a provjera dokumenta pravila hashira čak i namjerno prazan dokument kada je VerifySignaturePolicyDocumentHash postavljen na true

Nedostajuća, neusklađena, nepodržana ili odbijena nepoznata pravila vraćaju svSignaturePolicyMismatch i vfcSignaturePolicyMismatch s preciznim THPDFSignaturePolicyValidationStatus stanjem

Provjere pravila izvode se prije rada providera potpisa, lanca certifikata ili dokaza i primjenjuju se samo na primarne SignerInfo zapise, tako da pravilo nadređenoga dokumenta ne ograničava counter-potpise

Strogost i ograničenja

Parser odbacuje duplicirane atribute pravila, višestruke vrijednosti, implied-policy NULL, neispravne poznate kvalifikatore, vrijednosti IA5String koje nisu ASCII, nevažeći Unicode, pogrešne duljine poznatih digest-a i veličine kolekcija iznad konfiguriranih ograničenja implementacije

PAdES E-EPES zahtijeva eksplicitni atribut pravila točno jednom i zabranjuje unos /Reason u PDF Signature Dictionary kada je taj atribut prisutan; CMS sloj ne može pregledati PDF dictionary, pa radni tijek koji stvara PDF mora osigurati to posljednje ograničenje

Vidi CMS multiple primary signers, CMS digest-algorithm consistency i CMS validation reports