Я использую iTextsharp 5.5.13.0 для подписи PDF-файлов с помощью смарт-карты (X509Certificate2) в проекте C #.Процесс печати подписи в порядке, но время, необходимое для подписи, намного больше, чем в более ранней версии, которая была для этого процесса (iTextsharp 4.1.2.0).
Раньше это занимало не более10 секунд между сертификатом было выбрано и процесс подписи завершен, теперь это занимает более чем вдвое.
Это код, в котором подписан pdf.Я также прилагаю изображение времени, которое требуется, чтобы подписать.Есть что-то, что я могу сделать, чтобы сократить время подписания?
public static void SignHashed(string Source, string Target, X509Certificate2 Certificate, string Reason, string Location, bool AddTimeStamp, string strTSA)
{
X509CertificateParser objCP = new X509CertificateParser();
X509Certificate[] objChain = new X509Certificate[] { objCP.ReadCertificate(Certificate.RawData) };
IList<ICrlClient> crlList = new List<ICrlClient>();
crlList.Add(new CrlClientOnline(objChain));
PdfReader objReader = new PdfReader(Source);
PdfStamper objStamper = PdfStamper.CreateSignature(objReader, new FileStream(Target, FileMode.Create), '\0', null, true);
int pageNumber = objReader.NumberOfPages;
ITSAClient tsaClient = null;
IOcspClient ocspClient = null;
if (AddTimeStamp)
{
OcspVerifier ocspVerifier = new OcspVerifier(null, null);
ocspClient = new OcspClientBouncyCastle(ocspVerifier);
tsaClient = new TSAClientBouncyCastle(strTSA);
}
PdfSignatureAppearance signatureAppearance = objStamper.SignatureAppearance;
signatureAppearance.Reason = Reason;
signatureAppearance.Location = Location;
signatureAppearance.Acro6Layers = true;
signatureAppearance.SignatureRenderingMode = PdfSignatureAppearance.RenderingMode.NAME_AND_DESCRIPTION;
signatureAppearance.SetVisibleSignature(new Rectangle(50, 10, 200, 66), pageNumber, null);
IExternalSignature externalSignature = new X509Certificate2Signature(Certificate, "SHA-1");
// this process take to much time
MakeSignature.SignDetached(signatureAppearance, externalSignature, objChain, crlList, ocspClient, tsaClient, 0, CryptoStandard.CMS);
if (objReader != null)
{
objReader.Close();
}
if (objStamper != null)
{
objStamper.Close();
}
}