Статус: Участник
Группы: Участники
Зарегистрирован: 11.12.2016(UTC) Сообщений: 17 Откуда: Раменское Сказал(а) «Спасибо»: 1 раз
|
Добрый вечер. Пытаюсь подписать pdf по кнопке, ранее работало, сегодня на флешке создал новый контейнер и сертификат. С флешки установил сертификат в личное, пытаюсь с него подписаться, выводит сообщение о том что срок лицензии CSP истёк, нажимаю ОК, получаю ошибку - "Ошибка исполнения функции." Интересна причина возникновения ошибки код Код:
/*
using System;
using System.Collections.Generic;
using System.IO;
using iTextSharp.text.pdf;
using Org.BouncyCastle.X509;
using System.Security.Cryptography.Pkcs;
using System.Security.Cryptography.X509Certificates;
using iTextSharp.text;
*/
public X509Certificate2 ВыборСертификата()
{
// Находим секретный ключ по сертификату в хранилище MY
X509Store store = new X509Store("My", StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection coll = X509Certificate2UI.SelectFromCollection
(store.Certificates, "Выберите сертификат", "Выберите сертификат", X509SelectionFlag.SingleSelection);
if (coll.Count == 0 || coll == null)
{
Console.WriteLine ("Ключ не найден.");
return null;
}
X509Certificate2 certificate = coll[0];
if (certificate == null /*|| certificate.Verify()*/)
{
Console.WriteLine("Ключ не найден.");
return null;
}
if (!ValidateCertificate(certificate))
{
return null;
}
// SignedCms SignedCms = new SignedCms();
// CmsSigner cmsSigner = new CmsSigner(certificate);
// SignedCms.ComputeSignature(cmsSigner, true);
// то что подписываем
byte[] buff = new byte[8192];
var contentInfo = new ContentInfo(buff);
// сертификат для подписания
SignedCms signedCms = new SignedCms(contentInfo, true);
try
{
// Вычисляем подпись
// byte[] pk = SignMsg(ss.ToArray(), cert, true);
var cmsSigner = new CmsSigner(certificate);
signedCms.ComputeSignature(cmsSigner, false);
}
catch (System.Security.Cryptography.CryptographicException ex)
{
Console.WriteLine(ex.Message);
}
return certificate;
}
/// <summary>
/// Проверка валидности сертификата
/// </summary>
private bool ValidateCertificate(X509Certificate2 x509)
{
bool valid = false;
DateTime timeSert = DateTime.Parse(x509.GetExpirationDateString());
if (DateTime.Now.CompareTo(timeSert) < 0)
{
// Console.WriteLine("Сертификат валиден. Текущая дата: " + DateTime.Now.ToString() + " Дата сертификата: " + timeSert.ToString());
valid = true;
}
else
{
Console.WriteLine("Сертификат не валиден. Текущая дата: " + DateTime.Now.ToString() + " Дата сертификата: " + timeSert.ToString());
}
return valid;
}
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,340 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
Автор: wolfree9266 Добрый вечер. Пытаюсь подписать pdf по кнопке, ранее работало, сегодня на флешке создал новый контейнер и сертификат. С флешки установил сертификат в личное, пытаюсь с него подписаться, выводит сообщение о том что срок лицензии CSP истёк, нажимаю ОК, получаю ошибку - "Ошибка исполнения функции."
Интересна причина возникновения ошибки В вопросе есть ответ. Для работы с CSP необходима действующая лицензия. |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close