Форум КриптоПро
»
Средства криптографической защиты информации
»
Встраивание
»
contextCert.pCertInfo.rgExtension все декодируем из сертификата
Статус: Активный участник
Группы: Участники
Зарегистрирован: 06.03.2012(UTC) Сообщений: 177
Сказал(а) «Спасибо»: 57 раз Поблагодарили: 11 раз в 8 постах
|
Давно в любимой ветке не было новых тем. Пора создать новую тему. Прошу помощи у Гуру в следующем вопросе. Задача: декодировать все расширения сертификата (именно сертификата, не запроса на сертификат). Что делаю: 1. Загружаю контекст из файла сертификата или из памяти. 2. Получаю Контекст сертификата. 3. Декодирую каждое из сExtension следующим образом. Цитата:CryptDecodeObject( contextCert.dwCertEncodingType, contextCert.pCertInfo.rgExtension[i].pszObjId, contextCert.pCertInfo.rgExtension[i].Value.pbData, contextCert.pCertInfo.rgExtension[i].Value.cbData, 0, 0, cbDecoded); Память выделяю и т.д. Но сталкиваюсь с такой проблемой. Допустим мы хотим декодировать расширение Extended Key Usage. Можем получить его так: Цитата:contextCert : PCCert_Context Usage : PCERT_ENHKEY_USAGE Size, cbDecoded : dword. pbDecoded : PVOID; usage : PCERT_ENHKEY_USAGE;
CertGetEnhancedKeyUsage(contextCert, 0, usage, size); Соответственно получаем size=72, usage=$773530. Декодируем потом расширения из массива успешно. Но если взять другую функцию и попробовать ей декодировать из контекста сертификата (не запроса на сертификат). Цитата:CryptDecodeObject(contextCert.dwCertEncodingType, szOID_ENHANCED_KEY_USAGE, contextCert.pCertInfo.rgExtension[i].Value.pbData, contextCert.pCertInfo.rgExtension[i].Value.cbData, CRYPT_DECODE_NOCOPY_FLAG, pbDecoded, cbDecoded); Привожу так: Цитата:PCERT_ENHKEY_USAGE (pbDecoded) То в pbDecoded будет лежать = $76C158, а размер будет cbDecoded=96 И соответственно преобразования не получаются. Там (CryptDecodeObject(..szOID_ENHANCED_KEY_USAGE..)) и там (CertGetEnhancedKeyUsage) должна же получаться одна структура на выходе? В первом случае даже оидов не видно ( Отредактировано пользователем 12 декабря 2012 г. 16:40:58(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
CryptDecodeObject для szOID_ENHANCED_KEY_USAGE 2 раза вызываете? |
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 06.03.2012(UTC) Сообщений: 177
Сказал(а) «Спасибо»: 57 раз Поблагодарили: 11 раз в 8 постах
|
Kirill Sobolev написал:CryptDecodeObject для szOID_ENHANCED_KEY_USAGE 2 раза вызываете? Да, Кирилл. В первый раз получаю размер. Второй раз значение. Без ex - просто CryptDecodeObject.
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
|
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 06.03.2012(UTC) Сообщений: 177
Сказал(а) «Спасибо»: 57 раз Поблагодарили: 11 раз в 8 постах
|
Kirill Sobolev написал:И индекс i правильный? Макс индекс contextCert.pCertInfo.cExtension-1. первый 0 В цикле выставлено условие сравнения с оидом. В этом случае с szOID_ENHANCED_KEY_USAGE. Даже более того вижу в обоих случаях: cUsageIdentifier=3 Только rgpszUsageIdentifier различны. Отредактировано пользователем 12 декабря 2012 г. 20:16:57(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Цитата:Только rgpszUsageIdentifier различны. Это указатели же, имеют право отличаться. Если cUsageIdentifier правильный, то что не работает? |
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 06.03.2012(UTC) Сообщений: 177
Сказал(а) «Спасибо»: 57 раз Поблагодарили: 11 раз в 8 постах
|
Kirill Sobolev написал:Цитата:Только rgpszUsageIdentifier различны. Это указатели же, имеют право отличаться. Если cUsageIdentifier правильный, то что не работает? Кирилл, большое Вам спасибо. Вы волшебник. Действительно увлекшись значениями указателей пропустил ошибку в преобразовании. Теперь расширения декодируются из тестового сертификата успешно. Кроме 1-ого расширения SubjectTool. Для функции CryptDecodeObject( contextUserCert.dwCertEncodingType, contextUserCert.pCertInfo.rgExtension[i].pszObjId, contextUserCert.pCertInfo.rgExtension[i].Value.pbData, contextUserCert.pCertInfo.rgExtension[i].Value.cbData, 0, 0, &cbDecoded); contextUserCert.pCertInfo.rgExtension[i].pszObjId = 1.2.643.100.111 Длина возвращается = 0. В WincryptEx нет описания этой структуры, хотя там лежит UTF8String, как и нет гуида для функции CryptDecodeObject. Это расширение нужно декодировать по особенному?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Цитата:В WincryptEx нет описания этой структуры, хотя там лежит UTF8String, как и нет гуида для функции CryptDecodeObject Так и используйте X509_NAME_VALUE, на выходе получится CERT_NAME_VALUE. |
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 06.03.2012(UTC) Сообщений: 177
Сказал(а) «Спасибо»: 57 раз Поблагодарили: 11 раз в 8 постах
|
Kirill Sobolev написал:Цитата:В WincryptEx нет описания этой структуры, хотя там лежит UTF8String, как и нет гуида для функции CryptDecodeObject Так и используйте X509_NAME_VALUE, на выходе получится CERT_NAME_VALUE. Еще раз, Спасибо, Кирилл. Декодирование по описанному Вами алгоритму проходит успешно. Отредактировано пользователем 14 декабря 2012 г. 12:44:07(UTC)
| Причина: Не указана
|
|
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
Встраивание
»
contextCert.pCertInfo.rgExtension все декодируем из сертификата
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close