CMS Özet Algoritması Tutarlılığı
HotPDF, imzalı belge aralıklarını okumadan, içeriği hash'lemeden, sertifika yolları oluşturmadan veya bir imza sağlayıcı çağırmadan önce tutarsız CMS algoritma tanımlayıcılarını teşhis eder
Tutarlılık denetimleri
Güncel SignerInfo.digestAlgorithm, onu saran SignedData.digestAlgorithms kümesinde bulunmalıdır; ilgisiz fazladan algoritmalara ise birlikte çalışabilir çoklu imzalayan container'lar için izin verilmeye devam eder
Öze özgü RSA PKCS#1 v1.5 ve ECDSA imza OID'leri ile RSA-PSS parametrelerindeki açık hash, SignerInfo.digestAlgorithm ile aynı özeti seçmelidir
RFC 6211 CMSAlgorithmProtection imzalı özniteliği mevcutsa tek bir değerle yalnızca bir kez yer almalıdır; korunan özet ve imza AlgorithmIdentifier değerleri gerçek SignerInfo alanlarıyla eşleşmelidir
Parametresiz algoritma tanımlayıcılarında parametre yokluğu ile DER NULL parametresi eşdeğer sayılarak karşılaştırılır; diğer parametreler birebir karşılaştırılır, böylece parametreli imza mekanizmaları sessizce normalleştirilemez
Makine tarafından okunabilir sonuç
HPDFParseCMSSignature, başarıyla ayrıştırılmış meta verileri korur ancak bir tutarlılık denetimi başarısız olduğunda THPDFSignatureInfo.Status değerini svDigestAlgorithmMismatch yapar
Doğrulama svDigestAlgorithmMismatch döndürür, doğrulama raporları vfcDigestAlgorithmMismatch kullanır ve JSON digestAlgorithmMismatch yayınlar; bu durum hatalı biçimli CMS, desteklenmeyen algoritma ya da içerik özeti uyuşmazlığına indirgenmez
THPDFSignatureInfo.DigestAlgorithmOID imzalayan özet OID'sini kaydeder, THPDFSignatureInfo.DigestConsistencyIssue ise aşağıdaki nedenlerden birini seçer
dciSignerDigestNotDeclared— bilinen imzalayan özeti, dış özet kümesinde yer almıyordciSignatureDigestMismatch— sabit veya parametreli bir imza mekanizması başka bir özet seçiyordciAlgorithmProtectionDigestMismatch— korunan özet tanımlayıcısı, imzalayanın özet tanımlayıcısından farklıdciAlgorithmProtectionSignatureMismatch— korunan imza tanımlayıcısı, imzalayanın imza tanımlayıcısından farklı
JSON imzalayan nesneleri aynı bilgiyi digestAlgorithmOID ve digestConsistencyIssue alanlarıyla sunar; değerler signerDigestNotDeclared, signatureDigestMismatch, algorithmProtectionDigestMismatch veya algorithmProtectionSignatureMismatch olur
Zaman damgaları ve öncelik sırası
RFC 3161 belge zaman damgaları ve imzasız signature-timestamp token'ları aynı denetimleri kullanır; bunların THPDFTimestampInfo.DigestConsistencyIssue değeri, tutarsız iç içe CMS container'ını teşhis eder
Yapısal hatalar yine hatalı biçimli CMS olarak başarısız olur, bilinmeyen imzalayan özetleri desteklenmeyen kalır ve ilk deterministik tutarlılık sorunu; container, algoritma koruması, ardından imza mekanizması sırasıyla saklanır
Sağlayıcı ve yüklü belge doğrulama sözleşmeleri için modern imza sağlayıcılarına ve THotPDF.VerifyLoadedSignatureWithOptions sayfasına bakın