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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Jin  
#1 Оставлено : 26 мая 2010 г. 16:44:05(UTC)
Jin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.12.2009(UTC)
Сообщений: 119
Откуда: Moscow

Хочу скачать файл StreamVerify.cs отсюда http://www.cryptopro.ru/....aspx?g=posts&t=2079
выскакивает следующая ошибка
Please do not link directly to this resource. You must have a session in the forum.

Отредактировано пользователем 26 мая 2010 г. 16:47:10(UTC)  | Причина: Не указана

Offline Челпанов А.  
#2 Оставлено : 26 мая 2010 г. 16:50:03(UTC)
Челпанов А.

Статус: Активный участник

Группы: Участники
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 390
Мужчина
Откуда: КриптоПро

Поблагодарили: 2 раз в 2 постах
Ошибка на Вашей стороне.
Отправил на Ваш почтовый адрес StreamVerify.cs
С уважением, Александр.
Offline Jin  
#3 Оставлено : 26 мая 2010 г. 16:50:48(UTC)
Jin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.12.2009(UTC)
Сообщений: 119
Откуда: Moscow

Спасибо большое!!!
Offline Jin  
#4 Оставлено : 26 мая 2010 г. 17:41:14(UTC)
Jin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.12.2009(UTC)
Сообщений: 119
Откуда: Moscow

Подскажите , как правильно использовать StreamVerify.cs
не вижу никаких функций или свойст показывающи верна ли подпись, а в случае подмены исходного файла (т.е. некорректности подписи)
выдаётся ошибка, в блоке Catch, CryptMsgControl Error #-2146889721
Offline Jin  
#5 Оставлено : 26 мая 2010 г. 18:56:45(UTC)
Jin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.12.2009(UTC)
Сообщений: 119
Откуда: Moscow

Подскажите как в коде StreamVerify.cs возвращать Сертификат подписавшего?

Отредактировано пользователем 26 мая 2010 г. 22:49:12(UTC)  | Причина: Не указана

Offline Челпанов А.  
#6 Оставлено : 27 мая 2010 г. 15:36:58(UTC)
Челпанов А.

Статус: Активный участник

Группы: Участники
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 390
Мужчина
Откуда: КриптоПро

Поблагодарили: 2 раз в 2 постах
Цитата:
Подскажите , как правильно использовать StreamVerify.cs
не вижу никаких функций или свойст показывающи верна ли подпись, а в случае подмены исходного файла (т.е. некорректности подписи)
выдаётся ошибка, в блоке Catch, CryptMsgControl Error #-2146889721

Собственно проверка подписи осуществляет - CryptMsgControl. Код ошибки -2146889721 == 0x80091007L == CRYPT_E_HASH_VALUE, неокрректное значение хеш-функции. Для того, чтобы функция вернула строго значение подпись не верна, необходимо искажать саму подпись; Можно конечно менять и документ, но тогда придется пересчитывать и подменять хеш, что гораздо сложнее. В любом случае, и неправильное значение хеш-функции и невозможность декодировать документ, и собственно непроверившаяся подпись - "подпись не верна".
Цитата:
Подскажите как в коде StreamVerify.cs возвращать Сертификат подписавшего?

pSignerCertContext - контекст сертификата подписавшего. Если под "как в коде возвращать Сертификат подписавшего" Вы понимаете как его преобразовать в X509Certificate2, то есть конструктор X509Certificate2.X509Certificate2(IntPtr) от PCERT_CONTEXT
С уважением, Александр.
Offline Jin  
#7 Оставлено : 27 мая 2010 г. 18:44:38(UTC)
Jin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.12.2009(UTC)
Сообщений: 119
Откуда: Moscow

Спасибо что ответили,
Про CryptMsgControl ясно, получается если CryptMsgControl возвращает FALSE - то подпись неверна.

Да я подразумеваю преобразование в X509Certificate2. этот контсруктор я использую. и всё нормально , можно просмотреть сертификат. но
при закрытыии программы выскакивает ошибка. думаю этот происходит потомучто отправляется оригинал pSignerCertContext , который освобождается в блоке finally а также объект X509Certificate2 тоже его освобождать пытается.
Поэтому я импортировал Win32 API функцию CertDuplicateCertificateContext. и воспользовался ей получив из pSignerCertContext копию контекста, однако всё равно выскакивает ошибка в конце программы.
Думаю это потому что они пытаются освободить одну и туже память
Offline Челпанов А.  
#8 Оставлено : 28 мая 2010 г. 13:02:55(UTC)
Челпанов А.

Статус: Активный участник

Группы: Участники
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 390
Мужчина
Откуда: КриптоПро

Поблагодарили: 2 раз в 2 постах
В конструкторе X509Certificate2.X509Certificate2(IntPtr) есть дублирование контекста, поэтому его делать лишний раз не надо.
Цитата:
Думаю это потому что они пытаются освободить одну и туже память

скорее дело в порядке освобождения.
С уважением, Александр.
Offline Jin  
#9 Оставлено : 28 мая 2010 г. 15:31:52(UTC)
Jin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.12.2009(UTC)
Сообщений: 119
Откуда: Moscow

Ок. Но если он копирует сам, то он работает с дубликатом, тогда какая разница в каком порядке освобождать - ведь это разные контексты в памяти....
Offline Челпанов А.  
#10 Оставлено : 28 мая 2010 г. 15:34:09(UTC)
Челпанов А.

Статус: Активный участник

Группы: Участники
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 390
Мужчина
Откуда: КриптоПро

Поблагодарили: 2 раз в 2 постах
Есть разница, например, в порядке освобождения контекста сертификата и закрытия хранилища, из которого он получен.
С уважением, Александр.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (4)
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.