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