CMS Çoklu Birincil İmzalayanlar
HotPDF, 256'ya kadar bağımsız birincil SignerInfo kaydı barındıran tek bir RFC 5652 SignedData container'ı oluşturabilir
İstek oluşturma
Her THPDFCMSPrimarySignerRequest kendi sertifika ve anahtar materyalini, belge özetini, THPDFCMSSignOptions değerini, isteğe bağlı THPDFSignatureProvider değerini ve sağlayıcı anahtar tanımlayıcısını taşır
HPDFCMSBuildMultiSignedData, yerel bir anahtarı, harici callback'i, timestamp callback'ini, PDF MAC callback'ini veya sağlayıcıyı devreye sokmadan önce her isteği doğrular; böylece geçersiz bir sonraki istek, önlenebilir kısmi uzaktan imzalama işine yol açamaz
SetLength(Signers, 2);
Signers[0].KeyMaterial := FirstKey;
Signers[0].DocumentDigest := HPDFCMSDigestBytes(DocumentBytes, cmsdaSHA256);
Signers[0].Options := FirstOptions;
Signers[1].KeyMaterial := SecondKey;
Signers[1].DocumentDigest := HPDFCMSDigestBytes(DocumentBytes, cmsdaSHA384);
Signers[1].Options := SecondOptions;
Signers[1].Provider := RemoteProvider;
Signers[1].KeyIdentifier := 'approval-key';
CMS := HPDFCMSBuildMultiSignedData(Signers);
Deterministik birleştirme
HPDFCMSMergeSignedData, zaten oluşturulmuş CMS container'larını özel anahtar işlemlerini tekrarlamadan; asenkron veya dağıtık imzalama iş akışları için birleştirir
Her girdi, definite-length signedData zarflarını ve kümelerini kullanmalı, birincil imzalayanlarının kullandığı her özet algoritmasını bildirmeli ve bayt bakımından özdeş encapContentInfo taşımalıdır; ek olarak bildirilen özet algoritmalarına izin verilmeye devam eder
Birleştirilen container özet algoritmalarını, sertifikaları ve iptal değerlerini tekilleştirir, tüm SET OF değerlerini DER bayt sırasına göre sıralar, her birincil imzalayanı korur ve dış sürümü en yüksek geçerli girdi gereksinimine yükseltir
İstek sırası, kodlandıktan sonra bilinçli olarak gözlemlenemez çünkü signerInfos bir DER SET OF'tur; bu yüzden ayrıştırma ve doğrulama sonuçları istek sırası yerine DER sırasını kullanır
Tek imzalayanlı bir oluşturma ve tek container'lı bir birleştirme, mevcut CMS baytlarını aynen korur
Bağımsız doğrulama
HPDFParseCMSSignatures, HPDFVerifyCMSSignaturesEx ve HPDFVerifyCMSSignerReport her birincil imzalayan için bağımsız bir sonuç döndürür; bu sonuç öznitelikleri, özet ve imza politikasını, eşleşen sertifikayı, zaman damgalarını, counter-signature değerlerini ve başarısızlık durumunu kapsar
Hatalı biçimli veya kriptografik olarak geçersiz bir imzalayan, geçerli kardeş sonucu silmez; toplu Boolean sonuç ise tüm birincil imzalayanlar başarılı olmadıkça false olur
Placeholder boyutlandırma
HPDFCMSEstimateMultiSignerPlaceholder imzalamadan her imza uzunluğunu türetir, sentetik imza değerleriyle tekilleştirilmiş tam statik container şeklini kurar, dinamik callback rezervlerini toplar ve yapılandırılmış global güvenlik payını, hizalamayı, alt ve üst sınırları bir kez uygular
THPDFCMSPlaceholderEstimateInfo.SignatureBytes tüm birincil imzalayanların toplamını bildirir, cpesMixed ise imzalayanların farklı tahmin kaynakları kullandığı sonucu işaretler
PDF iş akışı sınırı
Çoklu imzalayan API'leri, tüketici profili tek container'da birden fazla birincil imzalayana izin veren uygulamalar için genel CMS işlevselliğini açığa çıkarır
Birçok PDF imza ve PAdES iş akışı, imza sözlüğü başına tek birincil imzalayan modelini kurar; alıcı profili çoklu imzalayan CMS'yi açıkça kabul etmiyorsa ayrı PDF imza alanları kullanın
CMS SubjectKeyIdentifier imzalayanlarına, CMS özet algoritması tutarlılığına ve CMS placeholder otomatik boyutlandırmasına bakın