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