TPDFlibSignatureVerifier
Güvenlik ve İmzalar
Açıklama
PDF imza alanlarını ve CMS imzalayanlarını numaralandırır, seçili imzayı tüm PDF belleğe yüklenmeden doğrular ve seçili imzanın kendi artımlı revizyonunu geçerli dosyadan ayrı olarak raporlar Doğrulayıcı, bir dosyayı, çağıranın sahibi olduğu akışı veya ANSI bayt dizgesini
OpenPDF, OpenPDFStream ya da OpenPDFString üzerinden kabul eder
Seçim
Count := Verifier.GetSignatureCount;
Verifier.GetSignatureFieldName(0, FieldName);
SignerCount := Verifier.GetSignerCount(0);
Result := Verifier.VerifySignatureByName(FieldName, 0, Report);
VerifySignatureByIndex bir PDF alanını 0 tabanlı dizinle seçerken VerifySignatureByName tam nitelikli AcroForm alan adını kullanır; her iki yöntem de 0 tabanlı bir CMS imzalayan dizini kabul eder
İmza doğrulama raporu
| IntegrityResult | Seçili imzalayan için kriptografik CMS veya eski PKCS#7 bütünlük sonucu |
|---|---|
| CoverageStatus | scInvalid, scSignedRevision, or scWholeDocument |
| ByteRangeValid | Yalnızca tüm aralıklar sınırlıyken ve imzalı revizyon kendi %%EOF işaretiyle sona eriyorsa True |
| ContentsGapValid | Yalnızca atlanan baytlar tam olarak seçili onaltılık /Contents belirteci ise True |
| HasLaterRevisions | Seçili imza daha önceki bir artımlı revizyonu doğruluyorsa ve sonrasında baytlar mevcutsa True |
| SignedRevisionLength | Seçili imza tarafından doğrulanan revizyonun bayt cinsinden uzunluğu |
| PermissionReport | Seçili imza için ayrıştırılmış DocMDP ve FieldMDP kısıtları |
Sertifikasyon ve alan izinleri
GetSignaturePermissionInfo ve GetSignaturePermissionInfoByName, TPDFlibSignaturePermissionReport döndürür
Rapor, geçerli bir DocMDP dönüşümünü eşleşen katalog
/Perms /DocMDP başvurusundan ayırır ve bir alanın /Lock sözlüğünün FieldMDP dönüşümüyle, eylemiyle ve alan adı listesiyle eşleştiğini doğrular
Sertifika zinciri ve iptal
VerifySignerCertificateChainByIndex ve VerifySignerCertificateChainByName, açıkça seçilmiş bir imza ve imzalayıcı için varsayılan zincir doğrulamasını yürütür
VerifySignerCertificateChainEx ve VerifySignerCertificateChainExByName, srmNone, srmCacheOnly veya srmOnline ile birlikte isteğe bağlı bir doğrulama zamanı kabul eder
TPDFlibSignatureChainReport; TrustStatus'u, Windows zincir ve ilke hatalarını, DSS veya VRI kanıt sayılarını, tam OCSP atfını, OCSP durumunu, iptal gerekçesini, tazeliği ve yerel hataları ayrı tutar
Gömülü sertifikalar ve doğrulama malzemesi bir zinciri tamamlayabilir ama güvenilmeyen bir kökü güvenilen köke dönüştürmez
DSS veya VRI OCSP kanıtı yalnızca yanıtlayıcı imzası, ihraç eden veya delege edilmiş yanıtlayıcı kullanımı, CertID'si, durumu ve tazeliği seçilen sertifikayla eşleştiğinde kabul edilir
Özel güven çıpaları
Verifier.AddTrustAnchorDER(RootCertificateDER);
Verifier.AddTrustAnchorFromFile('BusinessRoot.cer');
AnchorCount := Verifier.GetTrustAnchorCount;
Verifier.ClearTrustAnchors;
AddTrustAnchorDER ve AddTrustAnchorFromFile, doğrulanmış X.509 sertifikalarını bellek içi, yinelemesiz bir güven çıpası kümesine ekler
Küme boş olmadığında her imzalayıcı ve zaman damgası zinciri, münhasır bir güven motoruyla kurulur; bu motor kümeden CA kökleri ve açık sertifika sabitlemeleri olarak yararlanır ve Windows Root veya TrustedPeople depolarına başvurmaz
Münhasır motor ve ayrıştırılmış kök deposu doğrulayıcı tarafından önbelleğe alınır ve çıpa kümesi değişene dek yeniden kullanılır
Bu yalıtım, bir uygulamanın sertifika kurmadan veya ilgisiz makine güvenini devralmadan özel bir iş güveni ilkesi uygulamasını sağlar
Güven çıpası üyeliği, sertifika geçerliliğini, anahtar kullanımını, imzayı veya istenen iptal denetimlerini atlatmaz
ClearTrustAnchors kümeyi bırakır ve sonraki denetimler için varsayılan Windows sistem güven motorunu geri getirir
Harici güven kaynakları
Verifier.SetTrustSource(TrustSource);
Source := Verifier.GetTrustSource;
SetTrustSource, zamana özgü çıpalar sağlayabilen ve başarıyla kurulmuş bir sertifika zincirini değerlendirebilen, sahiplik içermeyen bir TPDFlibSignatureTrustSource bağlar
Kaynak çıpaları, el ile özel çıpalarla aynı münhasır zincir motorunda birleştirilir; bu motor kaynak revizyonu ve doğrulama zamanına göre önbelleğe alınır
Kaynak atamak, kaynak veya el ile çıpa yokken Windows sistem köklerine düşmeyi devre dışı bırakır
Başarılı bir kaynak değerlendirmesi, sertifika zinciri, kullanım, geçerlilik, imza veya iptal denetimlerini zayıflatmadan TPDFlibSignatureChainReport.QualificationReport'u doldurur
TPDFlibEUTSLTrustSource bu sözleşmeyi imzalı AB LOTL'si ve ulusal TSL belgeleri için uygular
RFC 3161 zaman damgaları
VerifyDocumentTimeStamp (imza indeksi) ve VerifyDocumentTimeStampByName (alan adı), bir belge zaman damgasını imzanın ByteRange verisine göre doğrular
GetSignatureTimeStampCount ve VerifySignatureTimeStamp ailesi, seçili CMS imzalayıcının signatureValue'sine göre id-aa-signatureTimeStampToken özniteliklerini numaralandırır ve doğrular; VerifySignatureTimeStamp imzayı indeksten, VerifySignatureTimeStampByName alan adından seçer
Ex türevleri (VerifyDocumentTimeStampEx, VerifyDocumentTimeStampExByName, VerifySignatureTimeStampEx, VerifySignatureTimeStampExByName) ayrıca iptal modunu, beklenen ilke OID'sini ve beklenen nonce'u kabul eder
TPDFlibTimeStampVerificationReport; token imzası geçerliliğini, mesaj baskısı geçerliliğini, TSA EKU ve ad bağlamasını, ilkeyi, nonce'u, üretim zamanını, zincir sonucunu ve güven durumunu bağımsız olarak bildirir
AdES geçmiş doğrulaması
Result := Verifier.VerifyAdESHistoricalByName(
FieldName, 0, srmCacheOnly, ValidationTime, HistoricalReport);
VerifyAdESHistorical ve VerifyAdESHistoricalByName önce istenen UTC zamanında imza bütünlüğünü ve imzalayıcı zincirini doğrular
İstenen zamandaki zincir geçersizse doğrulayıcı; hedef imzayı kapsayan imzalı revizyona sahip her imza zaman damgasını ve her belge zaman damgasını doğrular, en erken güvenilen imza zamanını ve en geç tüm-belge arşiv zamanını türetir ve zinciri o varlık kanıtı kontrol zamanlarında yeniden dener
Sıfır bir ValidationTime geçerli UTC zamanını seçer; sıfır olmayan bir değer ise UTC olarak doğrudan sertifika zinciri ilkesine geçirilir
srmNone, güvenilen bir imza zaman damgasının veya kapsayan bir belge zaman damgasının tarihsel kontrol zamanını sağlamasına izin verir
srmCacheOnly ve srmOnline, güncel DSS, VRI, CRL veya OCSP malzemesi tarihsel kanıt sayılabilmeden önce geçerli belgenin tamamını kapsayan güvenilen bir belge zaman damgası ister; aksi hâlde rapor ahsEvidenceNotArchived döndürür
Zaman damgası, imzalı baytların var olduğu zamana bir üst sınır sağlar; çıkarılmış bir imzalama zamanı değil. Bu yüzden seçilen kanıt zamanında hâlihazırda geçersiz olan bir imzalayıcı sertifikası geçersiz kalır
TPDFlibAdESHistoricalValidationReport; istenen ve etkin zincir raporlarını, en iyi imza ve arşiv zamanlarını, seçilen kanıt kaynağını, zaman damgası sayılarını, zaman kaydırma durumunu ve belirli bir tarihsel durumu döndürür
DeriveBaselineProfile böyle bir raporu son işlemden geçirir; raporda hâlihazırda toplanmış zaman damgası ve DSS kanıtıyla birlikte imza alt filtresinden BaselineProfile'u doldurur
ahsValidAtRequestedTime | Zaman kaydırma olmaksızın bütünlük ve zincir geçerlidir |
|---|---|
ahsValidAtProofTime | Zincir, güvenilen bir zaman damgasından türetilen kontrol zamanında geçerlidir |
ahsIntegrityInvalid | Seçilen imza veya belge zaman damgası bütünlük ya da ByteRange doğrulamasında başarısız olur |
ahsNoTrustedProof | Seçilen imza revizyonunu kapsayan güvenilen bir zaman damgası yoktur |
ahsEvidenceNotArchived | İptal denetimi istendi ama doğrulama malzemesini mühürleyen güvenilen tüm-belge arşiv zaman damgası yoktur |
ahsHistoricalTrustInvalid | Güvenilen kanıt zamanları vardır ama imzalayıcı zinciri türetilen her kontrol zamanında geçersizdir |
Uyumluluk metotları
VerifySignature, GetSignatureMetadata, GetSignerCertificate ve VerifySignerCertificateChain kullanılabilir kalır ve 0. alan ile 0. imzalayıcıyı seçer
Karşılık gelen ByIndex ve ByName yöntemleri (GetSignatureMetadataByIndex, GetSignatureMetadataByName, GetSignerCertificateByIndex, GetSignerCertificateByName), çok imzalı ve çok imzalayıcılı belgeler için açık seçim sağlar
Ayrıca bkz
TPDFlibEUTSLTrustSource, SetSignProcessDocMDP, SetSignProcessFieldLock, SetPAdESSignatureTimeStampToken