const
TsaMaxResponseBytes = 4 * 1024 * 1024;
TsaRequestTimeoutSeconds = 30;
TsaConnectTimeoutSeconds = 30;
function TsaHttpAvailable: Boolean;
function TsaHttpBackendName: string;
function PostTimeStampQuery(const TsaUrl: string; const ReqDer: TBytes;
out RespDer: TBytes): Boolean;
FPdfTsaFpc, FPdfTsa'nın tükettiği Windows dışı zaman damgası taşımasıdır ve FPdfTsaWin'in karşılığıdır. Kodlanmış bir TimeStampReq'yi HTTP ya da HTTPS üzerinden bir zaman damgası otoritesi URL'sine POST eder ve TimeStampResp baytlarını toplar; DER oluşturma ve ayrıştırma FPdfTsa'da kalır
Taşıma katmanı libcurl'dür; bağlantılı değil çalışma zamanında bağlanır, böylece kütüphane derleme zamanı bağımlılığı olmaz ve yokluğu yüklemeyi düşürmek yerine raporlanır. libcurl üzerinden gitmek aynı zamanda TLS yığınını bu birimin dışında tutar: libcurl kendi arka ucunu seçer ve sunucu zincirini platform güven deposuna karşı doğrular
TsaHttpAvailable libcurl'ün bulunup bulunmadığını ve zorunlu giriş noktalarının çözümlenip çözümlenmediğini raporlar; TsaHttpBackendName çözümlenen arka ucu adlandırır; PostTimeStampQuery HTTP alışverişini yürütür ve herhangi bir taşıma başarısızlığında fırlatmak yerine False döndürerek çağıranın kendi bağlamını ve yeniden deneme politikasını eklemesine izin verir
Tüm interface bölümü yalnızca FPC altında derlenir. Delphi altında birim boştur; çünkü Delphi Windows'u hedefler ve orada arka uç FPdfTsaWin'dir. Birim, FPdfTsa'nın WinHttp arka ucunu tercih edip buradakini hiç çağırmadığı Windows dahil her FPC hedefinde derlenmeye devam eder
libcurl tanıtıcı türleri, giriş noktası bağlamaları ve seçenek sabitleri implementation bölümünde yaşar; interface yalnızca kullanılabilirlik denetimini, arka uç adını, POST yardımcısını ve üç taşıma limitini açığa çıkarır
| Function | Description |
|---|---|
TsaHttpAvailable | libcurl bulunduğunda ve zorunlu her giriş noktası çalışma zamanında çözümlendiğinde True döndürür |
TsaHttpBackendName | Çözümlenen arka ucun adını döndürür; taşıma kullanılabilirken libcurl, aksi halde boş bir dize döner |
PostTimeStampQuery | ReqDer içeriğini TsaUrl adresine POST eder ve RespDer içine ham TimeStampResp gövdesini doldurur; taşıma başarısızlığında False döner |
| Constant | Value | Description |
|---|---|---|
TsaMaxResponseBytes | 4 * 1024 * 1024 | Kabul edilen TimeStampResp gövdesinin üst sınırı; daha büyük bir yanıt, tamponu sınırsız büyütmek yerine aktarımı durdurur. FPdfTsaWin içindeki aynı sabitle eşit tutulur |
TsaRequestTimeoutSeconds | 30 | Saniye cinsinden tüm istek bütçesi; WinHttp zaman aşımlarıyla eşleşir, böylece yanıtsız bir TSA imzalama iş parçacığını hiçbir platformda asılı bırakamaz |
TsaConnectTimeoutSeconds | 30 | Saniye cinsinden bağlantı kurma bütçesi; istek bütçesinden önce uygulanır |
Content-Type: application/timestamp-query ile gönderilir ve application/timestamp-reply bekler; sessiz kalan bir yanıtlayanın 1 KB'den büyük bir gövdeyi oyalayamaması için Expect: 100-continue bastırılırhttp ve https URL'leri kabul edilir ve yönlendirmeler takip edilmez: yönlendirmeyle yanıt veren bir yanıtlayanın yapılandırması bozuk kabul edilir, çağıranın hiç adını vermediği bir uç noktaya sessizce yeniden deneme yapılmazTsaHttpAvailable çağrısında yüklenir ve tanıtıcı bilinçli olarak süreç ömrü boyunca açık tutulur; başka bir iş parçacığı aktarımın içindeyken boşaltmak ana makineyi düşürür. Sinyal tabanlı çözümleyici zaman aşımları kapalı tutulur, böylece imzalama worker iş parçacıklarında çalışabilirTsaHttpAvailable False döndürür ve PadesTimestampOverride üzerinden başka bir taşıma kaydedilmemişse FPdfTsa PadesTsaAvailable = False raporlar