CSC Uzak İmza Sağlayıcısı
THPDFCSCSignatureProvider, mevcut THPDFSignatureProvider sözleşmesi üzerinde CSC API v2'nin credentials/info, credentials/authorize, credentials/authorizeCheck, signatures/signHash, signatures/signPolling ve signatures/timestamp uçlarını gerçekleştirir
Transport ve yetkilendirme
Sağlayıcı hiçbir zaman bir HTTP stack seçmez; refresh token, client secret, PIN veya OTP saklamaz
THPDFCSCTransport tam olarak metodu, URL'yi, bearer yetkilendirmesini, JSON gövdesini, kararlı idempotency anahtarını, deneme numarasını, operasyon tanımlayıcısını ve yanıt bütçesini alır; THPDFCSCAccessTokenCallback ise kısa ömürlü OAuth access token'larını sağlar ve tazeler
SAD gerektiğinde sağlayıcı credential meta verisini ve eksiksiz sınırlanmış sertifika zincirini alır, incelenmiş kimlik doğrulama değerleri için THPDFCSCAuthenticationCallback'e başvurur, bir SAD edinir ve gerektiğinde asenkron yetkilendirme handle'ını poll'lar
İmzalama ve replay güvenliği
Sign, özet girdisini CMS pipeline'ından alır, özet ve imza OID'lerini signatures/signHash'e taşır ve gerektiğinde DER kodlu RSA-PSS parametreleri üretir
SignHashBatch, tek bir yetkilendirme altında aynı algoritmalı sıralı özet grubu gönderir; ortaya çıkan SAD'ı tam sayıya, algoritmalara, parametrelere ve özet baytlarına sabitler ve istek sırasını hem senkron hem asenkron sonuçlarda korur
Çoklu özet çağrısı, sayısı hem MaxBatchSignatures hem de credential'ın multisign değerine sığıyorsa kabul edilir; yanıt, istenen her özet için tam olarak bir imza içermelidir
Geçici istekler sabit uzunluklu, SHA-256 content-addressed bir Idempotency-Key yeniden kullanır; sınırlı operasyon önbelleği ise aynı operasyon, credential, parametreler ve sıralı özetler yeniden gönderildiğinde tamamlanmış grubun defensive kopyalarını döndürür
Başarısız bir transport denemesi, otomatik yetkilendirilmiş SAD'ı tam bir retry için saklar; ancak farklı bir grup o SAD'ı tüketemez ve yeni bir yetkilendirme almak zorundadır
Bütçeler ve iptal
THPDFCSCOptions.Default; grup imzalarını, yanıt baytlarını, tekil imzaları, timestamp'leri, sertifika zinciri sayısını ve baytlarını, retry denemelerini, Retry-After gecikmelerini, poll denemelerini ve önbellekteki operasyonları sınırlar
Cancel, transport çağrılarından önce, retry'lar arasında ve kısa dilimli poll beklemeleri sırasında gözlemlenir; operasyon tanımlayıcısı transport'a da geçirilir, böylece uygulama kendi in-flight HTTP isteğini iptal edebilir
Sertifika zincirleri ve timestamp'ler
RefreshCredentialInfo; anahtar, algoritma, yetkilendirme, SCAL, çoklu imza ve sertifika zinciri meta verisini imzalamadan doğrular ve önbelleğe alır
GetCertificateChain, CMS sertifika girdisine uygun defensive bayt kopyaları döndürür; TimestampDigest ise isteğe bağlı bir nonce ile tek bir RFC 3161 token'ı ister ve çözer