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

IntegrityResultSeçili imzalayan için kriptografik CMS veya eski PKCS#7 bütünlük sonucu
CoverageStatusscInvalid, scSignedRevision, or scWholeDocument
ByteRangeValidYalnızca tüm aralıklar sınırlıyken ve imzalı revizyon kendi %%EOF işaretiyle sona eriyorsa True
ContentsGapValidYalnızca atlanan baytlar tam olarak seçili onaltılık /Contents belirteci ise True
HasLaterRevisionsSeçili imza daha önceki bir artımlı revizyonu doğruluyorsa ve sonrasında baytlar mevcutsa True
SignedRevisionLengthSeçili imza tarafından doğrulanan revizyonun bayt cinsinden uzunluğu
PermissionReportSeç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

ahsValidAtRequestedTimeZaman kaydırma olmaksızın bütünlük ve zincir geçerlidir
ahsValidAtProofTimeZincir, güvenilen bir zaman damgasından türetilen kontrol zamanında geçerlidir
ahsIntegrityInvalidSeçilen imza veya belge zaman damgası bütünlük ya da ByteRange doğrulamasında başarısız olur
ahsNoTrustedProofSeç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
ahsHistoricalTrustInvalidGü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