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ý

IntegrityResultKết quả toàn vẹn mật mã CMS hoặc PKCS#7 kiểu cũ của signer được chọn
CoverageStatusscInvalid, scSignedRevision, or scWholeDocument
ByteRangeValidChỉ 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ó
ContentsGapValidChỉ True khi các byte bị bỏ qua đúng là mã thập lục phân /Contents được chọn
HasLaterRevisionsTrue 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
PermissionReportCá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

GetSignaturePermissionInfoGetSignaturePermissionInfoByName 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

VerifySignerCertificateChainByIndexVerifySignerCertificateChainByName chạy xác thực chuỗi mặc định cho chữ ký và signer được chọn tường minh

VerifySignerCertificateChainExVerifySignerCertificateChainExByName 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

GetSignatureTimeStampCountVerifySignatureTimeStamp 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ử VerifySignatureTimeStampVerifySignatureTimeStampByName 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

ahsValidAtRequestedTimeTính toàn vẹn và chuỗi hợp lệ mà không cần trượt thời gian
ahsValidAtProofTimeChuỗ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
ahsIntegrityInvalidChữ 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
ahsNoTrustedProofKhô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
ahsHistoricalTrustInvalidCá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, GetSignatureMetadataByIndexGetSignatureMetadataByName vẫn khả dụng và chọn trường 0 với signer 0 Các phương thức GetSignerCertificateByIndexGetSignerCertificateByName tương ứng (

Xem thêm

TPDFlibEUTSLTrustSource, SetSignProcessDocMDP, SetSignProcessFieldLock, SetPAdESSignatureTimeStampToken