Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ 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 (2)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.