Я использую iTextSharp 5.5.10 для создания подписанного PDF. В частности, мне нужна подпись LTV. LTV может выполняться с запросами CRL и OCSP.Как я могу кэшировать ответ OCSP с помощью iTextSharp (подпись LTV)?
Я сделал это с таким кодом:
IOcspClient ocspClient = new OcspClientBouncyCastle();
ICrlClient crlClient = new CrlClientOnline(myCert.Chain);
List<ICrlClient> lstCrlClients = new List<ICrlClient> { crlClient };
MakeSignature.SignDetached(sap, signature, this.myCert.Chain, lstCrlClients, ocspClient, null, 0, CryptoStandard.CMS);
Проблема заключается в том: я буду подписывать много, много PDF (всегда с тем же сертификатом). Поэтому я не хочу каждый раз запрашивать CRL и OCSP, я должен «кэшировать» их.
мне удалось кэшировать CRL с таким кодом (он опирается на C# MemoryCache):
private List<ICrlClient> GetCachedListCrlClient()
{
var key = "LstCrlClient";
List<ICrlClient> lstCrlClients = MyGlobalCachingProvider.GetItem<List<ICrlClient>>(key);
if (lstCrlClients == null)
{
lstCrlClients = new List<ICrlClient>();
for (int i = 0; i < myCert.Chain.Length; i++)
{
String crlUrl = CertificateUtil.GetCRLURL(myCert.Chain[i]);
if (crlUrl != null)
{
byte[] crlDownloaded = new System.Net.WebClient().DownloadData(crlUrl);
ICrlClient crlClient = new CrlClientOffline(crlDownloaded);
lstCrlClients.Add(crlClient);
}
}
MyGlobalCachingProvider.AddItem(key, lstCrlClients, DateTime.Now.AddHours(2));
}
return lstCrlClients;
}
я не могу найти какое-либо решение, однако для кэширования ответов OCSP. Кто-нибудь знает?
OCSP ответы, как правило, имеют лишь очень короткое время, чтобы жить. Таким образом, обычно кэширование их не стоит. Если вы подписываете очень много PDF-файлов за короткое время, вы можете захотеть реализовать «OcspClientOffline», аналогичный «CrlClientOffline». Взгляните на код, это тривиально. – mkl
Спасибо. Ваше решение в порядке. Однако ответы OCSP не всегда недолговечны: от нескольких минут до нескольких дней. В моем случае это 10 дней! Поэтому я думаю, что iText должен дать нам стандартное решение для этой проблемы ... – AEC
10 дней ответов OCSP? Вау! Хорошо, в этом случае я понимаю, что вы хотите кэшировать. Я использую только время жизни не более нескольких минут. – mkl