TPDFlibSignatureVerifier
Bảo mật và Chữ ký
Mô tả
Liệt kê các trường chữ ký PDF và các signer CMS, xác thực một chữ ký được chọn mà không cần nạp toàn bộ PDF vào bộ nhớ, và báo cáo riêng bản sửa đổi tăng dần của chính chữ ký được chọn, tách khỏi tệp hiện tại Bộ xác thực nhận một tệp, stream do caller sở hữu hoặc chuỗi byte ANSI thông qua
OpenPDF, OpenPDFStream hoặc OpenPDFString
Lựa chọn
Count := Verifier.GetSignatureCount;
Verifier.GetSignatureFieldName(0, FieldName);
SignerCount := Verifier.GetSignerCount(0);
Result := Verifier.VerifySignatureByName(FieldName, 0, Report);
VerifySignatureByIndex chọn trường PDF theo chỉ số tính từ 0, còn VerifySignatureByName dùng tên trường AcroForm đầy đủ, và cả hai phương thức đều nhận chỉ số signer CMS tính từ 0
Báo cáo xác minh chữ ký
| IntegrityResult | Kết quả toàn vẹn mật mã CMS hoặc PKCS#7 kiểu cũ của signer được chọn |
|---|---|
| CoverageStatus | scInvalid, scSignedRevision, or scWholeDocument |
| ByteRangeValid | Chỉ True khi mọi vùng đều có giới hạn và bản sửa đổi đã ký kết thúc tại %%EOF riêng của nó |
| ContentsGapValid | Chỉ True khi các byte bị bỏ qua đúng là mã thập lục phân /Contents được chọn |
| HasLaterRevisions | True khi chữ ký được chọn xác thực một bản sửa đổi tăng dần sớm hơn và vẫn còn byte phía sau |
| SignedRevisionLength | Độ dài tính bằng byte của bản sửa đổi được chữ ký đã chọn xác thực |
| PermissionReport | Các ràng buộc DocMDP và FieldMDP đã phân tích cho chữ ký được chọn |
Chứng thực và quyền của trường
GetSignaturePermissionInfo và GetSignaturePermissionInfoByName trả về TPDFlibSignaturePermissionReport
Báo cáo phân biệt một transform DocMDP hợp lệ với tham chiếu catalog
/Perms /DocMDP tương ứng, và xác minh từ điển /Lock của trường khớp với transform FieldMDP, hành động và danh sách tên trường của nó
Chuỗi chứng chỉ và thu hồi
VerifySignerCertificateChainByIndex và VerifySignerCertificateChainByName chạy xác thực chuỗi mặc định cho chữ ký và signer được chọn tường minh
VerifySignerCertificateChainEx và VerifySignerCertificateChainExByName thêm các chứng chỉ X.509 đã xác thực vào một tập neo tin cậy trong bộ nhớ, không chứa bản trùng
Khi tập này khác rỗng, mọi chuỗi signer và dấu thời gian được dựng bằng một cơ chế tin cậy độc quyền, dùng tập đó làm root CA và điểm ghim chứng chỉ tường minh mà không tham chiếu kho srmNone hay srmCacheOnly của Windows
Cơ chế độc quyền và kho root đã phân tích được bộ xác thực lưu cache và dùng lại cho đến khi tập neo thay đổi
Cách cô lập này cho phép ứng dụng áp dụng chính sách tin cậy doanh nghiệp riêng mà không cần cài chứng chỉ hay thừa hưởng tin cậy máy không liên quan
Việc nằm trong tập neo tin cậy không bỏ qua các bước kiểm tra hiệu lực chứng chỉ, mục đích dùng khóa, chữ ký hay thu hồi theo yêu cầu
srmOnline giải phóng tập này và khôi phục cơ chế tin cậy hệ thống Windows mặc định cho các lần kiểm tra tiếp theo
TPDFlibSignatureChainReportTrustStatus
Nguồn tin cậy bên ngoài
Verifier.AddTrustAnchorDER(RootCertificateDER);
Verifier.AddTrustAnchorFromFile('BusinessRoot.cer');
AnchorCount := Verifier.GetTrustAnchorCount;
Verifier.ClearTrustAnchors;
AddTrustAnchorDER gắn một AddTrustAnchorFromFile không sở hữu, có thể cung cấp các neo theo thời điểm và đánh giá một chuỗi chứng chỉ đã dựng thành công
Các neo từ nguồn được kết hợp với neo tùy chỉnh thủ công trong cùng một cơ chế chuỗi độc quyền, được cache theo bản sửa đổi nguồn và thời điểm xác thực
Việc gán một nguồn sẽ tắt cơ chế dự phòng về root hệ thống Windows khi không có neo nguồn hay neo thủ công nào khả dụng
Một lần đánh giá nguồn thành công sẽ điền dữ liệu vào
Root mà không làm yếu đi các bước kiểm tra chuỗi chứng chỉ, mục đích dùng, hiệu lực, chữ ký hay thu hồi
TrustedPeople hiện thực hóa hợp đồng này cho các tài liệu LOTL của EU và TSL quốc gia đã được ký số
ClearTrustAnchors
Dấu thời gian RFC 3161
Verifier.SetTrustSource(TrustSource);
Source := Verifier.GetTrustSource;
SetTrustSource (chỉ số chữ ký) và TPDFlibSignatureTrustSource (tên trường) xác thực dấu thời gian tài liệu dựa trên dữ liệu ByteRange của chữ ký
TPDFlibSignatureChainReport.QualificationReport
TPDFlibEUTSLTrustSource
VerifyDocumentTimeStamp và họ VerifyDocumentTimeStampByName liệt kê và xác thực các thuộc tính
GetSignatureTimeStampCount và VerifySignatureTimeStamp trước hết xác thực tính toàn vẹn chữ ký và chuỗi signer tại thời điểm UTC được yêu cầu
Nếu chuỗi tại thời điểm yêu cầu không hợp lệ, bộ xác thực sẽ xác thực mọi dấu thời gian chữ ký và mọi dấu thời gian tài liệu mà bản sửa đổi đã ký của chúng bao phủ chữ ký đích, suy ra thời điểm chữ ký đáng tin sớm nhất và thời điểm lưu trữ toàn tài liệu muộn nhất, rồi thử lại chuỗi tại các thời điểm kiểm soát chứng minh sự tồn tại đó
Giá trị id-aa-signatureTimeStampToken bằng 0 chọn thời điểm UTC hiện tại, còn giá trị khác 0 được truyền thẳng vào chính sách chuỗi chứng chỉ dưới dạng UTC
signatureValue cho phép một dấu thời gian chữ ký đáng tin hoặc dấu thời gian tài liệu bao phủ cung cấp thời điểm kiểm soát lịch sử
VerifySignatureTimeStamp và VerifySignatureTimeStampByName yêu cầu một dấu thời gian tài liệu đáng tin bao phủ trọn vẹn tài liệu hiện tại trước khi tư liệu DSS, VRI, CRL hoặc OCSP hiện có có thể được coi là bằng chứng lịch sử; nếu không, báo cáo trả về
Ex
Dấu thời gian cung cấp chặn trên cho thời điểm các byte đã ký tồn tại, chứ không phải thời điểm ký suy ra, nên một chứng chỉ signer đã mất hiệu lực ngay từ thời điểm chứng minh được chọn thì vẫn giữ trạng thái không hợp lệ
VerifyDocumentTimeStampEx trả về các báo cáo chuỗi theo yêu cầu và thực tế, thời điểm chữ ký và lưu trữ tốt nhất, nguồn chứng minh được chọn, số lượng dấu thời gian, trạng thái trượt thời gian cùng một trạng thái lịch sử cụ thể
VerifyDocumentTimeStampExByName hậu xử lý một báo cáo dạng này, điền VerifySignatureTimeStampExVerifySignatureTimeStampExByName
TPDFlibTimeStampVerificationReport
Result := Verifier.VerifyAdESHistoricalByName(
FieldName, 0, srmCacheOnly, ValidationTime, HistoricalReport);
VerifyAdESHistoricalVerifyAdESHistoricalByName
ValidationTime
srmNone
srmCacheOnlysrmOnlineahsEvidenceNotArchived
TPDFlibAdESHistoricalValidationReport
DeriveBaselineProfileBaselineProfile
ahsValidAtRequestedTime | Tính toàn vẹn và chuỗi hợp lệ mà không cần trượt thời gian |
|---|---|
ahsValidAtProofTime | Chuỗi hợp lệ tại một thời điểm kiểm soát suy ra từ dấu thời gian đáng tin |
ahsIntegrityInvalid | Chữ ký được chọn hoặc dấu thời gian tài liệu không vượt qua được xác thực toàn vẹn hoặc xác thực ByteRange |
ahsNoTrustedProof | Không có dấu thời gian đáng tin nào bao phủ bản sửa đổi của chữ ký được chọn |
ahsEvidenceNotArchived | Đã yêu cầu kiểm tra thu hồi nhưng không có dấu thời gian lưu trữ toàn tài liệu đáng tin nào niêm phong tư liệu xác thực |
ahsHistoricalTrustInvalid | Các thời điểm chứng minh đáng tin có tồn tại nhưng chuỗi signer không hợp lệ tại mọi thời điểm kiểm soát đã suy ra |
Phương thức tương thích
VerifySignatureGetSignatureMetadataGetSignerCertificateVerifySignerCertificateChain
ByIndex, ByName, GetSignatureMetadataByIndex và GetSignatureMetadataByName vẫn khả dụng và chọn trường 0 với signer 0
Các phương thức GetSignerCertificateByIndex và GetSignerCertificateByName tương ứng (
Xem thêm
TPDFlibEUTSLTrustSource, SetSignProcessDocMDP, SetSignProcessFieldLock, SetPAdESSignatureTimeStampToken