PAdES-validering af signaturpolitik
HotPDF opretter og validerer den eksplicitte CMS-signede signature-policy-identifier-attribut, som bruges af PAdES E-EPES-signaturer
Generér en eksplicit politik
Angiv SignaturePolicyOID og digestet af politikdokumentet på THPDFCMSSignOptions, og vælg derefter valgfrie strukturerede kvalifikatorer
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 bruger SHA-256 som standard, når feltet er tomt, mens SignaturePolicyURI forbliver en kompatibilitetsgenvej til én SPuri-kvalifikator og kan kombineres med SignaturePolicyQualifiers
Den strukturerede kvalifikatormodel understøtter SPuri, SPUserNotice med en valgfri meddelelsesreference og eksplicit tekst samt SPDocSpecification identificeret af en OID eller URI
Sæt SignaturePolicyHashIsUnknown kun, når underskriveren ikke kender politikhashen; HotPDF udsender derefter ETSI-repræsentationen med alle nuller i den valgte digest-længde
Parse og rapportér
HPDFParseCMSSignature eksponerer attributten gennem THPDFSignatureInfo.SignaturePolicy, inklusive dens identifikator, hash-algoritme, hash-bytes, ukendt-hash-flag, kvalifikatorer og valideringsstatus
Kendte kvalifikatorværdier afkodes til typede felter, mens en ukendt kvalifikator beholder sin OID og rå Den-markering til håndtering på applikationsniveau
HPDFSignatureValidationReportToJSON serialiserer de samme politik- og kvalifikatordata med en maskinlæsbar valideringsstatus
Fastlås en påkrævet politik
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);
Forventede OID- og hash-felter begrænser kun den tilsvarende værdi, og politikdokument-verifikation hasher endda et bevidst tomt dokument, når VerifySignaturePolicyDocumentHash er true
Manglende, uoverensstemmende, ikke-understøttede eller afviste ukendte politikker returnerer svSignaturePolicyMismatch og vfcSignaturePolicyMismatch med en præcis THPDFSignaturePolicyValidationStatus
Politikcheck kører før signaturudbyder-, certifikatsti- eller evidensarbejde og gælder kun primære SignerInfo-poster, så en overordnet politik begrænser ikke medsignaturer
Strenghed og grænser
Parseren afviser duplikerede politikattributter, flere værdier, implied-policy-NULL, fejlformede kendte kvalifikatorer, ikke-ASCII IA5String-værdier, ugyldig Unicode, forkerte kendte digest-længder og samlinger, der overskrider de konfigurerede implementeringsgrænser
PAdES E-EPES kræver den eksplicitte politikattribut præcis én gang og forbyder posten /Reason i PDF-signaturordbogen, når attributten er til stede; CMS-laget kan ikke inspicere PDF-ordbogen, så PDF-producerende workflow skal håndhæve den sidste begrænsning
Se CMS med flere primære underskrivere, CMS digest-algoritme-konsistens og CMS-valideringsrapporter