Xác thực chính sách chữ ký PAdES
HotPDF tạo và xác thực thuộc tính đã ký signature-policy-identifier của CMS mà chữ ký PAdES E-EPES sử dụng
Tạo chính sách tường minh
Đặt SignaturePolicyOID cùng digest của tài liệu chính sách trong THPDFCMSSignOptions, rồi chọn các qualifier có cấu trúc tùy chọn
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 mặc định là SHA-256 khi để trống, còn SignaturePolicyURI vẫn là đường tắt tương thích cho một qualifier SPuri và có thể kết hợp với SignaturePolicyQualifiers
Mô hình qualifier có cấu trúc hỗ trợ SPuri, SPUserNotice kèm notice reference và explicit text tùy chọn, cùng SPDocSpecification được nhận dạng bằng OID hoặc URI
Chỉ đặt SignaturePolicyHashIsUnknown khi người ký không biết hash của chính sách; khi đó HotPDF phát biểu diễn all-zero của ETSI theo độ dài digest đã chọn
Phân tích và báo cáo
HPDFParseCMSSignature phơi bày thuộc tính này qua THPDFSignatureInfo.SignaturePolicy, bao gồm định danh, thuật toán hash, byte hash, cờ hash không xác định, các qualifier và trạng thái xác thực
Giá trị qualifier đã biết được giải mã thành các trường có kiểu, còn qualifier không nhận dạng được giữ nguyên OID và giá trị DER thô để tầng ứng dụng tự xử lý
HPDFSignatureValidationReportToJSON tuần tự hóa đúng dữ liệu chính sách và qualifier đó kèm trạng thái xác thực ở dạng máy đọc được
Khóa chặt chính sách bắt buộc
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);
Các trường OID và hash mong đợi chỉ ràng buộc giá trị tương ứng, và việc kiểm tra tài liệu chính sách sẽ hash cả một tài liệu rỗng có chủ ý khi VerifySignaturePolicyDocumentHash bật
Chính sách bị thiếu, không khớp, không được hỗ trợ, hoặc hash không xác định bị từ chối sẽ trả về svSignaturePolicyMismatch và vfcSignaturePolicyMismatch kèm THPDFSignaturePolicyValidationStatus chính xác
Việc kiểm tra chính sách chạy trước công việc của signature-provider, đường dẫn chứng thư và bằng chứng, và chỉ áp dụng cho bản ghi SignerInfo chính, nên chính sách của tài liệu cha không ràng buộc chữ ký lồng
Độ nghiêm ngặt và giới hạn
Trình phân tích từ chối thuộc tính chính sách trùng lặp, nhiều giá trị, NULL của implied-policy, qualifier đã biết sai định dạng, giá trị IA5String ngoài ASCII, Unicode không hợp lệ, độ dài digest đã biết không đúng, và kích thước collection vượt giới hạn cài đặt đã cấu hình
PAdES E-EPES yêu cầu thuộc tính chính sách tường minh xuất hiện đúng một lần và cấm mục /Reason trong PDF Signature Dictionary khi thuộc tính đó có mặt; tầng CMS không đọc được từ điển PDF, nên quy trình tạo PDF phải tự thực thi ràng buộc cuối cùng này
Xem Nhiều người ký chính trong CMS, Tính nhất quán thuật toán digest trong CMS, và Báo cáo xác thực CMS