Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline tremdim  
#1 Оставлено : 3 июля 2013 г. 9:44:34(UTC)
tremdim

Статус: Участник

Группы: Участники
Зарегистрирован: 25.02.2013(UTC)
Сообщений: 14

Здравствуйте!

Получаю ответ от сервера на post запрос подписанный(der-кодировка)
Пишу на c#.

Ниже код получения подписанного ответа от сервера:

using (Stream resst = ((HttpWebResponse)request.GetResponse()).GetResponseStream())
{
r = new StreamReader(resst, Encoding.GetEncoding(1251)).ReadToEnd();
}

подписанное сообщение в переменной - r

Подскажите как проверить и снять подпись(der-кодировка) на c#?
(использую следующие библиотеки
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.Security.Cryptography.Pkcs;
)
Offline Андрей Писарев  
#2 Оставлено : 3 июля 2013 г. 10:16:15(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,516
Мужчина
Российская Федерация

Сказал «Спасибо»: 554 раз
Поблагодарили: 2252 раз в 1757 постах
А зачем здесь работа с кодировкой GetEncoding(1251)?
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#3 Оставлено : 3 июля 2013 г. 10:17:18(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,516
Мужчина
Российская Федерация

Сказал «Спасибо»: 554 раз
Поблагодарили: 2252 раз в 1757 постах
http://www.cryptopro.ru/products/net
Есть примеры работы с PKCS
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#4 Оставлено : 3 июля 2013 г. 10:23:36(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,516
Мужчина
Российская Федерация

Сказал «Спасибо»: 554 раз
Поблагодарили: 2252 раз в 1757 постах
Или MSDN с примерами работы
Техническую поддержку оказываем тут
Наша база знаний
Offline tremdim  
#5 Оставлено : 3 июля 2013 г. 11:03:49(UTC)
tremdim

Статус: Участник

Группы: Участники
Зарегистрирован: 25.02.2013(UTC)
Сообщений: 14

Спасибо - примеры нашел.

Еще один вопрос - подскажите пожалуйста. Получил подписанный ответ в поток - далее сохраняю этот ответ в файл
using (Stream resst = ((HttpWebResponse)request.GetResponse()).GetResponseStream())
{
File.WriteAllBytes(@"c:\1.p7s", GetStreamBytes(resst));
}

public static byte[] GetStreamBytes(Stream stream)
{
...
}

создается файл 1.p7s, но при попытке проверить подпись при помощи КриптоАрм выходит ошибка.

Статус завершения операции: Ошибка.
Длительность выполнения операции: 00:00:00.17
Входной файл: C:\1.p7s
Описание ошибки:
Ошибка сохранения сообщения (0x80004005)
Произошла ошибка при загрузке сообщения.
Вероятно, сообщение имеет некорректный формат. (0x80004005)
Произошла ошибка при загрузке подписанных данных
Произошла ошибка при добавлении данных в сообщение

Подскажите как корректно сохранить поток в файл - чтобы в этом файле можно было в дальнейшем проверить подпись при помощи криптоарм?
Offline Андрей Писарев  
#6 Оставлено : 3 июля 2013 г. 11:06:37(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,516
Мужчина
Российская Федерация

Сказал «Спасибо»: 554 раз
Поблагодарили: 2252 раз в 1757 постах
Приложите файл p7s к сообщению.
Техническую поддержку оказываем тут
Наша база знаний
Offline tremdim  
#7 Оставлено : 3 июля 2013 г. 13:22:38(UTC)
tremdim

Статус: Участник

Группы: Участники
Зарегистрирован: 25.02.2013(UTC)
Сообщений: 14

Спасибо - все получилось - при преобразовании потока в байты допустил ошибку - не весь поток сохранялся - поэтому КриптоАрм не принимал файл.
Offline tremdim  
#8 Оставлено : 3 июля 2013 г. 13:50:26(UTC)
tremdim

Статус: Участник

Группы: Участники
Зарегистрирован: 25.02.2013(UTC)
Сообщений: 14

Автор: Андрей * Перейти к цитате
http://www.cryptopro.ru/products/net
Есть примеры работы с PKCS


В примерах не нашел как получить исходные данные после проверки подписи(может плохо искал)
На всякий случай вдруг кому пригодится

SignedCms signedCms = new SignedCms();

//проверка подписи
...

byte[] a = signedCms.ContentInfo.Content;//массив байт сообщения без подписи
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.