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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline AmDr  
#1 Оставлено : 7 июня 2013 г. 13:23:22(UTC)
AmDr

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

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

Подобная тема на форуме есть, но ответа в ней я не нашел.
В общем проверяю заверяющую подпись как в примере на msdn, но проблема в том, что в примере в функции CryptMsgVerifyCountersignatureEncoded используется сертификат из хранилища. Естественно, что в реальной ситуации мы так поступить не можем. Отсюда вопрос, как достать CERT_INFO, для проверки заверяющей подписи.

Я начал разбираться в вопросе и пока застрял на одном месте. Из неподписанных атрибутов достаем CMSG_SIGNER_INFO.
В ней хранится подписанный атрибут с оидом "1.2.840.113549.1.9.16.2.47" что соответствует ESS signing-certificate-v2 и вот на этом моменте я застрял.
Offline Юрий  
#2 Оставлено : 7 июня 2013 г. 14:27:57(UTC)
Юрий

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

Группы: Участники
Зарегистрирован: 22.01.2008(UTC)
Сообщений: 675
Мужчина
Российская Федерация
Откуда: Йошкар-Ола

Сказал «Спасибо»: 3 раз
Поблагодарили: 95 раз в 68 постах
CryptMsgGetParam( ...CMSG_CERT_PARAM.. )
Дальше, надеюсь, разберетесь сами.
С уважением,
Юрий Строжевский
Offline AmDr  
#3 Оставлено : 7 июня 2013 г. 14:42:53(UTC)
AmDr

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

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

Не понятно как определить индекс нужного нам сертификата. Вот допустим у нас файл содержит 3 подписи и одна из них заверена, как определить какой именно сертификат относится к заверенной подписи?
Offline Юрий  
#4 Оставлено : 7 июня 2013 г. 14:48:57(UTC)
Юрий

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

Группы: Участники
Зарегистрирован: 22.01.2008(UTC)
Сообщений: 675
Мужчина
Российская Федерация
Откуда: Йошкар-Ола

Сказал «Спасибо»: 3 раз
Поблагодарили: 95 раз в 68 постах
Можно вот так:
1) Определить номер SIGNER_INFO для заверенной подписи;
2) CryptMsgGetParam( ...CMSG_SIGNER_CERT_INFO_PARAM.. )
С уважением,
Юрий Строжевский
Offline AmDr  
#5 Оставлено : 7 июня 2013 г. 15:33:22(UTC)
AmDr

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

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

Но ведь у заверенной подписи нет номера, она хранится в неподписанных атрибутах подписи, которую заверяют.
Переработав ваше предложение можно сделать так:
1. Достать заверяющую подпись
2. Сравнивать поля Issuer и Serial Number в сертификатах и искать нужный
Offline Юрий  
#6 Оставлено : 7 июня 2013 г. 15:37:56(UTC)
Юрий

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

Группы: Участники
Зарегистрирован: 22.01.2008(UTC)
Сообщений: 675
Мужчина
Российская Федерация
Откуда: Йошкар-Ола

Сказал «Спасибо»: 3 раз
Поблагодарили: 95 раз в 68 постах
Автор: AmDr Перейти к цитате
Но ведь у заверенной подписи нет номера, она хранится в неподписанных атрибутах подписи, которую заверяют.
Переработав ваше предложение можно сделать так:
1. Достать заверяющую подпись
2. Сравнивать поля Issuer и Serial Number в сертификатах и искать нужный

Отлично - сами вопрос задали, сами и ответили :) Так держать!
С уважением,
Юрий Строжевский
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.