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

Уведомление

Icon
Error

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

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

Группы: Участники
Зарегистрирован: 01.06.2009(UTC)
Сообщений: 13
Откуда: Каширское шоссе, 13б

Проблема в следующем:

Был зарегистрирован пользователь по запросу на регистрацию.
Одновременно с регистрацией пользователя был обработан запрос на сертификат.
Далее запрос на сертификат был одобрен.

С помощью функции CertRequestSoapPort.GetRequestInfo был получен запрос на сертификат.
Проблема в том, что я не могу его распарсить (Вытащить сам запрос), чтобы получить
открытый ключ для корректировки неких данных в своем приложении.

Использовал CryptDecodeObject с параметром PKCS_CONTENT_INFO_SEQUENCE_OF_ANY.
Получил пять блобов в структуре CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY, а что делать
с ними понятия не имею.

Нельзя ли выложить пример работы с этим запросом с помощью Crypto API.
Offline Kirill Sobolev  
#2 Оставлено : 1 июня 2009 г. 21:00:22(UTC)
Кирилл Соболев

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

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

Поблагодарили: 177 раз в 168 постах
PKCS#10 можно проще разобрать с помощью CryptDecodeObject, в 2 вызова
1) CryptDecodeObject(.., X509_CERT, ..) - получите структуру CERT_SIGNED_CONTENT_INFO
2) CryptDecodeObject(.., X509_CERT_REQUEST_TO_BE_SIGNED, ..) для CERT_SIGNED_CONTENT_INFO::ToBeSignedd - получите CERT_REQUEST_INFO
а после этого уже открытый ключ будет легко достать.
Техническую поддержку оказываем тут
Наша база знаний
Offline invomik  
#3 Оставлено : 1 июня 2009 г. 21:23:17(UTC)
invomik

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

Группы: Участники
Зарегистрирован: 01.06.2009(UTC)
Сообщений: 13
Откуда: Каширское шоссе, 13б

Это был мой первый вариант.
но вызов функции
CryptDecodeObject(PKCS_7_ASN_ENCODING | X509_ASN_ENCODING,X509_CERT,pReqDer,dwReqSize,0,NULL,&dw)
возвращает ошибку 0x8009310b. Поэтому я подумал, что это немножко не PKCS10 формат и попробовал
PKCS_CONTENT_INFO_SEQUENCE_OF_ANY
Offline Kirill Sobolev  
#4 Оставлено : 1 июня 2009 г. 22:08:48(UTC)
Кирилл Соболев

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

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

Поблагодарили: 177 раз в 168 постах
Если Вы подаете в CryptDecodeObject непосредственно то, что возвращает GetRequestInfo - то да, это не PKCS#10.
Для одобренных запросов это PKCS#7, внутри которого лежит PKCS#10.
Техническую поддержку оказываем тут
Наша база знаний
Offline invomik  
#5 Оставлено : 1 июня 2009 г. 22:13:39(UTC)
invomik

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

Группы: Участники
Зарегистрирован: 01.06.2009(UTC)
Сообщений: 13
Откуда: Каширское шоссе, 13б

Поэтому я еще раз осмелюсь спросить, как с этим запросом поступать.
Запрос одобрен.
Offline Kirill Sobolev  
#6 Оставлено : 2 июня 2009 г. 14:55:40(UTC)
Кирилл Соболев

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

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

Поблагодарили: 177 раз в 168 постах
Вытащить из PKCS#7 вложенный PKCS#10 и потом уже разобрать с помощью CryptDecodeObject.
Техническую поддержку оказываем тут
Наша база знаний
Offline invomik  
#7 Оставлено : 2 июня 2009 г. 16:09:37(UTC)
invomik

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

Группы: Участники
Зарегистрирован: 01.06.2009(UTC)
Сообщений: 13
Откуда: Каширское шоссе, 13б

Спасибо за ответ. Это я все понимаю. Но мне нужен хотя бы первый шаг.
Как вытащить. Потому что, если честно, я мало представляю отличие
pkcs7 и pkcs10.
Offline Kirill Sobolev  
#8 Оставлено : 2 июня 2009 г. 19:01:20(UTC)
Кирилл Соболев

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

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

Поблагодарили: 177 раз в 168 постах
Посмотрите пример использования функций CryptMsg* в signlo.c http://www.cryptopro.ru/...ts/csp/20/sample-2-0.zip
Техническую поддержку оказываем тут
Наша база знаний
Offline invomik  
#9 Оставлено : 2 июня 2009 г. 21:58:48(UTC)
invomik

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

Группы: Участники
Зарегистрирован: 01.06.2009(UTC)
Сообщений: 13
Откуда: Каширское шоссе, 13б

Громное спасибо! Получилось.
Использовал функцию CryptVerifyMessageSignature(...) для
получения подписанных данных.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.