Здравствуйте!
При создании PKCS конверта с данными, при попытке его подписать, запрашивается ПИН. В нашем решении мы не можем предлагать пользователю вводить ПИН каждый раз, когда отчетность уходит в надзирающие органы. Соответственно, необходимо сделать это автоматически. Есть ли возможность ввести ПИН праграммно?
/// <summary>
/// Подписывает массив данных сертификатом
/// </summary>
/// <param name="data">Данные</param>
/// <param name="certificate">Сертификат</param>
/// <returns></returns>
public byte[] SignByteArray(byte[] data, X509Certificate2 certificate)
{
// Создаем объект ContentInfo по сообщению.
// Это необходимо для создания объекта SignedCms.
ContentInfo contentInfo = new ContentInfo(data);
// Создаем объект SignedCms по только что созданному
// объекту ContentInfo.
// SubjectIdentifierType установлен по умолчанию в
// IssuerAndSerialNumber.
// Свойство Detached установлено по умолчанию в false, таким
// образом сообщение будет включено в SignedCms.
SignedCms signedCms = new SignedCms(contentInfo);
// Определяем подписывающего, объектом certificate.
CmsSigner cmsSigner = new CmsSigner(certificate);
cmsSigner.IncludeOption = X509IncludeOption.EndCertOnly;
/*-------------------------------------------------------------------------*/
/*-----В этом месте: либо эксепшн о невведенном ПИНе, либо запрос ПИНа-----*/
/*-------------------------------------------------------------------------*/ signedCms.ComputeSignature(cmsSigner, false);
// Кодируем CMS/PKCS #7 сообщение.
return signedCms.Encode();
}
Отредактировано пользователем 13 февраля 2017 г. 15:51:12(UTC)
| Причина: Не указана