PAdES validacija politike potpisa
HotPDF kreira i validira eksplicitni CMS signature-policy-identifier potpisani atribut koji koriste PAdES E-EPES potpisi
Generišite eksplicitnu politiku
Postavite SignaturePolicyOID i digest dokumenta politike na THPDFCMSSignOptions, zatim izaberite opcione 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 podrazumevano koristi SHA-256 kada je prazan, dok SignaturePolicyURI ostaje prečica za kompatibilnost za jedan SPuri kvalifikator i može se kombinovati sa SignaturePolicyQualifiers
Model strukturiranih kvalifikatora podržava SPuri, SPUserNotice sa opcionom referencom obaveštenja i eksplicitnim tekstom, i SPDocSpecification identifikovan OID-om ili URI-jem
Postavite SignaturePolicyHashIsUnknown samo kada potpisnik ne zna heš politike; HotPDF tada emituje ETSI reprezentaciju svih nula na odabranoj dužini digesta
Parsirajte i prijavite
HPDFParseCMSSignature izlaže atribut kroz THPDFSignatureInfo.SignaturePolicy, uključujući njegov identifikator, algoritam heša, bajtove heša, oznaku nepoznatog heša, kvalifikatore i status validacije
Poznate vrednosti kvalifikatora se dekodiraju u tipizirana polja, dok neprepoznati kvalifikator zadržava svoj OID i sirovu DER vrednost za obradu na nivou aplikacije
HPDFSignatureValidationReportToJSON serijalizuje iste podatke politike i kvalifikatora sa statusom validacije čitljivim za mašine
Zakačite obaveznu politiku
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);
Očekivana OID i heš polja ograničavaju samo odgovarajuću vrednost, a verifikacija dokumenta politike hešira čak i namerno prazan dokument kada je VerifySignaturePolicyDocumentHash tačno
Nedostajuće, nepodudarne, nepodržane ili odbijene nepoznate politike vraćaju svSignaturePolicyMismatch i vfcSignaturePolicyMismatch sa preciznim THPDFSignaturePolicyValidationStatus
Provere politike se izvršavaju pre rada pružaoca potpisa, putanje sertifikata ili dokaza i primenjuju se samo na primarne SignerInfo zapise, tako da politika roditeljskog dokumenta ne ograničava kontrapotpise
Strogost i granice
Parser odbija duplirane atribute politike, višestruke vrednosti, podrazumevani NULL, neispravno oblikovane poznate kvalifikatore, ne-ASCII IA5String vrednosti, nevažeći Unicode, pogrešne dužine poznatih digestova i veličine kolekcija iznad konfigurisanih ograničenja implementacije
PAdES E-EPES zahteva eksplicitni atribut politike tačno jednom i zabranjuje /Reason unos PDF rečnika potpisa kada je taj atribut prisutan; CMS sloj ne može da pregleda PDF rečnik, tako da tok rada koji proizvodi PDF mora da sprovede to konačno ograničenje
Pogledajte CMS višestruke primarne potpisnike, konzistentnost CMS digest algoritma i CMS izveštaje validacije