Статус: Активный участник
Группы: Участники
Зарегистрирован: 21.12.2011(UTC) Сообщений: 45  Откуда: Москва
|
Здравствуйте!
У меня очередной не очень умный вопрос. Подскажите пожалуйста!
Есть некая цепочка сертификатов, которые лежат в файлах. Как для создания ЭЦП загрузить всю цепочку сертификатов?
Большое спасибо.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,773   Сказал «Спасибо»: 581 раз Поблагодарили: 2308 раз в 1807 постах
|
andreyxvo написал:Здравствуйте!
У меня очередной не очень умный вопрос. Подскажите пожалуйста!
Есть некая цепочка сертификатов, которые лежат в файлах. Как для создания ЭЦП загрузить всю цепочку сертификатов?
Большое спасибо. Цитата:Есть некая цепочка сертификатов, которые лежат в файлах в каком формате, pkcs7? |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,773   Сказал «Спасибо»: 581 раз Поблагодарили: 2308 раз в 1807 постах
|
например, так: из файла p7b (или с ЭЦП) с несколькими сертификатами: CryptQueryObject( CERT_QUERY_OBJECT_FILE, File_p7b , CERT_QUERY_CONTENT_FLAG_ALL, CERT_QUERY_FORMAT_FLAG_ALL, ... ) CryptMsgGetParam(hMsg, CMSG_CERT_COUNT_PARAM.. выделяем память... CryptMsgGetParam(hMsg, CMSG_CERT_COUNT_PARAM...pdwCount ..) pdwCount- кол-во сертификатов достаем I-сертификат CryptMsgGetParam(hMsg, CMSG_CERT_PARAM, I, nil, dwSize) выделяем память pbData CryptMsgGetParam(hMsg, CMSG_CERT_PARAM, I, pbData, dwSize) контекст сертификата pCertContext:= CertCreateCertificateContext(MY_ENCODING_TYPE ... память, размер) что-то еще делаем... .. (анализируем, добавляем в массив сертификатов для ЭЦП ... ) Отредактировано пользователем 11 марта 2012 г. 12:59:24(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 21.12.2011(UTC) Сообщений: 45  Откуда: Москва
|
"в каком формате, pkcs7?" Да, pkcs7.
Если я правильно понял, представленный пример берет цепочку сертификатов из готовой подписи.
У меня задачка создать подпись, на основе пользовательского сертификата ".cer", который лежит в некой папке. Рядом с ним есть прочие сертификаты вплоть до корневого. Вопрос собственно в том как выстроить всю эту цепочку?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,773   Сказал «Спасибо»: 581 раз Поблагодарили: 2308 раз в 1807 постах
|
Цитата:пример берет цепочку сертификатов из готовой подписи. да или из p7b andreyxvo написал:"в каком формате, pkcs7?" Да, pkcs7.
Если я правильно понял, представленный пример берет цепочку сертификатов из готовой подписи.
У меня задачка создать подпись, на основе пользовательского сертификата ".cer", который лежит в некой папке. Рядом с ним есть прочие сертификаты вплоть до корневого. Вопрос собственно в том как выстроить всю эту цепочку? тогда загружай каждый сертификат в массив, анализируй сертификаты по: "идентификатор ключа субъекта" и "идентификатор ключа ЦС" можно и по владельцу\кто выдал ... конечно Цитата:Вопрос собственно в том как выстроить всю эту цепочку? так бы сразу и спросил Отредактировано пользователем 11 марта 2012 г. 13:38:51(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 21.12.2011(UTC) Сообщений: 45  Откуда: Москва
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,773   Сказал «Спасибо»: 581 раз Поблагодарили: 2308 раз в 1807 постах
|
например: 1.cer ИД ключа владельца: 952284E2162164BD9C7C7C033243420E1E09F3F6 ИД ключа ЦС: ECBB214BBE2666AD35C581D1844AD3FCD9817A332.cer ИД ключа владельца: 9C7C7C033243420E1E09F3F6952284E2162164BD ИД ключа ЦС: 9C7C7C033243420E1E09F3F6952284E2162164BD 3.cer ИД ключа владельца: ECBB214BBE2666AD35C581D1844AD3FCD9817A33 ИД ключа ЦС: 9C7C7C033243420E1E09F3F6952284E2162164BD Цепочка: root: 2.cer ЦС: 3.cer пользователь: 1.cer Отредактировано пользователем 11 марта 2012 г. 13:37:41(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 21.12.2011(UTC) Сообщений: 45  Откуда: Москва
|
Для упрощения задачи, для начала, решил что знаю имена файлов сертификатов (.cer), от пользовательского до корневого и их порядок в цепочке.
При создании подписи я создаю контекст серификата следующими функциями: hStore = CertOpenStore(CERT_STORE_PROV_FILENAME..."Имя файла"); CertFindCertificateInStore(hStore,.....);
Если правильно понимаю, так я создаю контекст пользовательского сертификата (последнего в цепочке).
Но ни как не пойму в какой момент и как мне подгрузить остальные сертификаты из цепочки.
В качестве гипотезы, предполагаю совершенно другой подход: остальные сертификаты можно/нужно добавить, уже в готовую подпись, созданную с помощью пользовательского сертификата по след. алгоритму.
Создаю для каждого сертификата контекст вышеуказанным способом, и добавляю сертификат в готовую подпись: CryptMsgControl(... CMSG_CTRL_ADD_CERT,...)
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,773   Сказал «Спасибо»: 581 раз Поблагодарили: 2308 раз в 1807 постах
|
andreyxvo написал:Для упрощения задачи, для начала, решил что знаю имена файлов сертификатов (.cer), от пользовательского до корневого и их порядок в цепочке.
При создании подписи я создаю контекст серификата следующими функциями: hStore = CertOpenStore(CERT_STORE_PROV_FILENAME..."Имя файла"); CertFindCertificateInStore(hStore,.....);
Если правильно понимаю, так я создаю контекст пользовательского сертификата (последнего в цепочке).
Но ни как не пойму в какой момент и как мне подгрузить остальные сертификаты из цепочки.
В качестве гипотезы, предполагаю совершенно другой подход: остальные сертификаты можно/нужно добавить, уже в готовую подпись, созданную с помощью пользовательского сертификата по след. алгоритму.
Создаю для каждого сертификата контекст вышеуказанным способом, и добавляю сертификат в готовую подпись: CryptMsgControl(... CMSG_CTRL_ADD_CERT,...)
порядок следования в массиве - не важен, важны верные сертификаты (которые нужно вложить) - как их собрать по цепочке - я предложил что мешает использовать: SignedMsgEncodeInfo.cCertEncoded - кол-во сертификатов SignedMsgEncodeInfo.rgCertEncoded := @SignerCertBlobArray ( сертификаты ) ? можно и так CryptMsgControl(... CMSG_CTRL_ADD_CERT,...) Отредактировано пользователем 11 марта 2012 г. 17:48:12(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 21.12.2011(UTC) Сообщений: 45  Откуда: Москва
|
Мешает не уверенное знание материала.
Глупый вопрос, если я SignerCertBlobArray засуну все сертификаты, то все будет правильно работать?
И еще один глупый вопрос.... Если я сертификат экспортирую в p7b, то полученный файл будет содержать всю цепочку сертификатов. Открыв его ф-ей CertOpenStore(CERT_STORE_PROV_FILENAME..."Имя файла"). Создав подпись я получу подпись со вложенной цепочкой сертификатов?
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close