Статус: Новичок
Группы: Участники
Зарегистрирован: 25.11.2015(UTC) Сообщений: 1  Откуда: Tyumen
|
Добрый день! Вопрос по реализации шифрования на закрытом ключе Тестового УЦ. Сейчас этим бьюсь, никак не получается. Помогите пожалуйста, кто знает, поделитесь хоть какой-нибудь информацией. Реализую аутентификацию на сайте (asp) через ЕСИА. Из минкомсвязи прислали тестовые учётки с сертификатами для тестирования. В документации написано необходимо сформировать запрос с определенным набором параметров. Все параметры понятны, кроме одного <client-secret> - подпись. Делаю как написано в примерах для SDK.NET, ищу сертификат, с помощью него пытаюсь подписать, каждый раз вылетает исключение: Цитата:Ошибка исполнения функции. Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода. Сведения об исключении: System.Security.Cryptography.CryptographicException: Ошибка исполнения функции. Ошибка источника: Строка 36: CmsSigner cmsSigner = new CmsSigner(certificate); Строка 37: cmsSigner.IncludeOption = X509IncludeOption.EndCertOnly; Строка 38: signedCms.ComputeSignature(cmsSigner, false); Строка 39: byte[] pk = signedCms.Encode(); Строка 40: return pk; Вот код. Подскажите пожалуйста, что делаю не так? Код:public static byte[] SignMessage(byte[] data)
{
X509Store store = new X509Store(StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
X509Certificate2 certificate = null;
//manually chose the certificate in the store
X509Certificate2Collection sel = X509Certificate2UI.SelectFromCollection(store.Certificates, null, null, X509SelectionFlag.SingleSelection);
if (sel.Count > 0)
{
certificate = sel[0];
if (data == null)
throw new ArgumentNullException("data");
if (certificate == null)
throw new ArgumentNullException("certificate");
// Вычисляем подпись
ContentInfo contentInfo = new ContentInfo(data);
SignedCms signedCms = new SignedCms(contentInfo, true);
CmsSigner cmsSigner = new CmsSigner(certificate);
cmsSigner.IncludeOption = X509IncludeOption.EndCertOnly;
signedCms.ComputeSignature(cmsSigner, false);
byte[] pk = signedCms.Encode();
return pk;
}
return null;
}
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,433  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 38 раз Поблагодарили: 737 раз в 634 постах
|
Этот же код в консольном приложении работает? |
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close