مرجع HotPDF
تطبّق THPDFCSCSignatureProvider واجهة CSC API v2 بعملياتها credentials/info وcredentials/authorize وcredentials/authorizeCheck وsignatures/signHash وsignatures/signPolling وsignatures/timestamp، وذلك فوق عقد THPDFSignatureProvider الموجود
النقل والتفويض
لا يختار المزوّد مكدّس HTTP أبدًا ولا يخزّن refresh token أو client secret أو رمز PIN أو OTP
يتلقى THPDFCSCTransport الـ method بالضبط وURL وترويسة bearer authorization وجسم JSON ومفتاح idempotency ثابت ورقم المحاولة ومعرّف العملية وميزانية الاستجابة، بينما يوفّر THPDFCSCAccessTokenCallback رموز OAuth access token قصيرة العمر ويجدّدها
عندما يكون SAD مطلوبًا، يجلب المزوّد بيانات الاعتماد الوصفية وسلسلة الشهادات الكاملة المحدودة، ويطلب من THPDFCSCAuthenticationCallback قيم مصادقة مراجَعة، ويحصل على SAD، ويستطلع مقبض تفويض غير متزامن عند الحاجة
أمان التوقيع وإعادة التشغيل
تقبل Sign مُدخل digest من خط أنابيب CMS، وتنقل OID الخاص بالـ digest وبالتوقيع إلى signatures/signHash، وتُصدر معاملات RSA-PSS مُرمّزة بترميز DER عند الحاجة
ترسل SignHashBatch دفعة مرتّبة من digest بنفس الخوارزمية تحت تفويض واحد، وتُثبّت SAD الناتج على العدد الدقيق والخوارزميات والمعاملات وبايتات digest، وتحافظ على ترتيب الطلبات في النتائج المتزامنة وغير المتزامنة
لا يُقبل استدعاء متعدد الـ digest إلا إذا توافق عدده مع كل من MaxBatchSignatures وقيمة multisign الخاصة ببيانات الاعتماد، ويجب أن تحتوي الاستجابة على توقيع واحد بالضبط لكل digest مطلوب
تعيد الطلبات العابرة استخدام Idempotency-Key ثابت الطول موجه بالمحتوى بخوارزمية SHA-256، بينما تعيد ذاكرة العمليات المحدودة نسخًا دفاعيةً من دفعة مكتملة سابقًا عند تكرار نفس العملية وبيانات الاعتماد والمعاملات والبصمات المرتبة
تحتفظ محاولة النقل الفاشلة بـ SAD مُصرَّح به تلقائيًا لإعادة محاولة مطابقة تمامًا، لكن لا يمكن لدُفعة مختلفة استهلاك ذلك الـ SAD ويجب عليها الحصول على تصريح جديد
أمان التوقيع وإعادة التشغيل
يحدّ THPDFCSCOptions.Default توقيعات الدفعة وبايتات الاستجابة والتوقيعات الفردية والطوابع الزمنية وعدد شهادات السلسلة وبايتاتها ومحاولات إعادة المحاولة وتأخيرات Retry-After ومحاولات الاستطلاع والعمليات المخزَّنة مؤقتًا
تُراقَب Cancel قبل نداءات النقل، وبين إعادة المحاولات، وأثناء فترات انتظار الاستطلاع المقسَّمة إلى شرائح قصيرة، كما يُمرَّر معرّف العملية إلى طبقة النقل حتى يتمكن التطبيق من إلغاء طلب HTTP الجاري الخاص به
أمان التوقيع وإعادة التشغيل
تتحقق RefreshCredentialInfo من بيانات المفتاح والخوارزمية والتفويض وSCAL والتوقيع المتعدد وبيانات سلسلة الشهادات وتخزّنها مؤقتًا دون توقيع
تُعيد GetCertificateChain نسخًا وقائية من البايتات مناسبة لمُدخل شهادة CMS، بينما تطلب TimestampDigest رمز RFC 3161 واحدًا وتفكّ ترميزه مع nonce اختياري