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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Климанов Евгений  
#1 Оставлено : 21 сентября 2010 г. 20:37:54(UTC)
Климанов Евгений

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

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

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

Стандартная ситуация - проверяю ЭЦП в XML файле. Помимо ЭЦП в файле находится сертификат в теге /KeyInfo/X509Data/X509Certificate. (Подписывал через парсер MSXML, который данный тег и заполнил).

Столкнулся со следующей проблемой. Никак не могу получить контекст сертификата PCCERT_CONTEXT из объекта IXMLDsigKey, в котором у меня находится ключ связанный с сертификатом.

ЭЦП проверяю при помощи парсера MSXML5.0

xmldoc->selectSingleNode
xmldsig->createKeyFromNode
xmldsig->verify

Проверка ЭЦП проходит успешно. Осталось проверить цепочку сертификатов и дело в шляпе.
И вот в этом месте я остановился и не могу пройти дальше.

В примерах которые я смотрел контекст получается либо при помощи CertCreateCertificateContext, либо при помощи CertFindCertificateInStore, что мне не совсем подходит, т.к.:
1) сертификата в хранилище может не быть. он может появится там позднее по бизнес-процессу, если пользователь примет такое решение.
2) сертификт уже лежит в подписанном XML. Его нужно только оттуда вытащить и все.

В примере для CSP 3.6 данный этап реализован через вызовы CAPICOM, но я хотел бы сделать это через вызовы CryptoAPI.

Подскажите можно ли в данном случае инициализировать PCCERT_CONTEXT? Если да, то в сторону каких функций мне посмотреть?
Offline Kirill Sobolev  
#2 Оставлено : 21 сентября 2010 г. 21:01:51(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Нужно у полученного из IXMLDsigKey сертификата запросить свойство CertContext интерфейса ICertContext - как раз PCERT_CONTEXT и получите.
Техническую поддержку оказываем тут
Наша база знаний
Offline Климанов Евгений  
#3 Оставлено : 21 сентября 2010 г. 21:49:23(UTC)
Климанов Евгений

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

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

Кирилл, я правильно понял, что получится следующая цепочка:
IXMLDsigKey - ICertContext (CAPICOM 2.0) - PCERT_CONTEXT ?
Offline Климанов Евгений  
#4 Оставлено : 22 сентября 2010 г. 15:27:08(UTC)
Климанов Евгений

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

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

Все-таки сделал через IChain2 (CAPICOM), поэтому вопрос снимается. Однако его решения в чистом виде на CryptoAPI я так и не нашел.
Offline Kirill Sobolev  
#5 Оставлено : 22 сентября 2010 г. 16:13:13(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Цитата:
IXMLDsigKey - ICertContext (CAPICOM 2.0) - PCERT_CONTEXT ?

Я бы даже сказал IXMLDsigKey - ICertificate(CAPICOM 2.0) - ICertContext (CAPICOM 2.0) - PCERT_CONTEXT
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.