متعدّد الموقّعين الأساسيين في CMS
يمكن لـ HotPDF إنشاء حاوية SignedData واحدة وفق RFC 5652 تحتوي على ما يصل إلى 256 سجل SignerInfo أساسي مستقل
طلبات البناء
يوفر كل THPDFCMSPrimarySignerRequest شهادته ومواد مفتاحه الخاصة، وملخّص المستند، وTHPDFCMSSignOptions، وTHPDFSignatureProvider اختياريًا، ومعرّف مفتاح المزوّد
تتحقق HPDFCMSBuildMultiSignedData من كل الطلبات قبل استدعاء أي مفتاح أصلي، أو callback خارجي، أو callback للطابع الزمني، أو callback لـ PDF MAC، أو مزوّد، مما يمنع طلبًا لاحقًا غير صالح من التسبب في عمل جزئي غير ضروري للتوقيع عن بُعد
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);
الدمج الحتمي
تجمع HPDFCMSMergeSignedData حاويات CMS المبنية مسبقًا لسير عمل التوقيع غير المتزامن أو الموزّع دون تكرار عمليات المفتاح الخاص
يجب أن تستخدم كل مدخلات أغلفة ومجموعات signedData بطول محدد، وأن تعلن كل خوارزميات الملخص التي يستعملها موقّعوها الأساسيون، وأن تحمل encapContentInfo متطابقة بايت ببايت؛ وتظل خوارزميات ملخص إضافية معلنة مسموحة
تزيل الحاوية المدموجة التكرار من خوارزميات الملخص والشهادات وقيم الإلغاء، وترتّب كل قيم SET OF بترتيب بايتات DER، وتحافظ على كل موقّع أساسي، وترفع الإصدار الخارجي إلى أعلى متطلب صالح بين المدخلات
لا يمكن ملاحظة ترتيب الطلبات بعد الترميز بشكل مقصود، لأن signerInfos عبارة عن SET OF بصيغة DER؛ لذلك تستخدم نتائج التحليل والتحقق ترتيب DER لا ترتيب الطلبات
يحافظ بناء بموقّع واحد ودمج حاوية واحدة على بايتات CMS الموجودة تمامًا كما هي
التحقق المستقل
تعيد HPDFParseCMSSignatures وHPDFVerifyCMSSignaturesEx وHPDFVerifyCMSSignerReport نتيجة مستقلة لكل موقّع أساسي، بما في ذلك سماته، وسياسة الملخص والتوقيع، والشهادة المطابقة، والطوابع الزمنية، والتوقيعات المضادة، وحالة الفشل
لا يمحو موقّع تالف بنيويًا أو غير صالح تشيفريًا نتيجة أخيه الصالحة، بينما تكون النتيجة الكلية المنطقية false ما لم ينجح كل موقّع أساسي
تقدير حجم العنصر النائب
تشتق HPDFCMSEstimateMultiSignerPlaceholder طول كل توقيع دون توقيع فعلي، وتبني شكل الحاوية الساكنة الدقيق بعد إزالة التكرار بقيم توقيع اصطناعية، وتجمع احتياطيات callbacks الديناميكية، وتطبّق هامش الأمان العام المضبوط والمحاذاة والحد الأدنى والحد الأقصى مرة واحدة
يبلّغ THPDFCMSPlaceholderEstimateInfo.SignatureBytes عن المجموع لكل الموقّعين الأساسيين، وتحدد cpesMixed النتيجة التي استعمل موقّعوها مصادر تقدير مختلفة
حدود سير عمل PDF
تكشف واجهات متعدّد الموقّعين عن وظائف CMS عامة للتطبيقات التي يسمح ملفها التعريفي المستهلك بعدة موقّعين أساسيين في حاوية واحدة
يُصمّم كثير من سير عمل توقيعات PDF وPAdES موقّعًا أساسيًا واحدًا لكل قاموس توقيع، لذا استخدم حقول توقيع PDF منفصلة ما لم يقبل ملف المستلم التعريفي صراحةً CMS متعدّد الموقّعين
راجع موقّعو SubjectKeyIdentifier في CMS، واتساق خوارزميات الملخص في CMS، والتحجيم التلقائي للعنصر النائب في CMS