Форум КриптоПро
»
Общие вопросы
»
Общие вопросы
»
подскажите по проблеме импорта сертификата в браузер
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.06.2012(UTC) Сообщений: 65 Откуда: Almaty, KZ
|
знаю я про фильтр... по фильтру и смотрел... их мнооооого, даже с фильтром. ну вот... в процессе отладки опять косяки полезли: hStoreHandle = CertOpenStore_(#CERT_STORE_PROV_PHYSICAL, 0, 0, #CERT_SYSTEM_STORE_CURRENT_USER, mem) hStoreHandle возвращает, то есть функция как бы работает, но если сделать сразу проверку на GetLastError, то выдаст ошибку - Объект или свойство не найдено. опять тоже недразумение - то есть вроде и работает, и в тоже время пишет ошибку какую-то... ага! в описании приписка: Note CreateFile, ReadFile, or registry errors might be propagated and their error codes returned. CertOpenStore has a single error code of its own, the ERROR_FILE_NOT_FOUND code, which indicates that the function was unable to find the provider specified by the lpszStoreProvider parameter. то есть ничего страшного? и это вылазит не совсем правильный GetLastError, правильный же GetLastError следует ставить только если hStoreHandle будет null? Отредактировано пользователем 6 августа 2012 г. 2:00:56(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,847   Сказал «Спасибо»: 584 раз Поблагодарили: 2320 раз в 1818 постах
|
SeregaZ написал:знаю я про фильтр... по фильтру и смотрел... их мнооооого, даже с фильтром.
ну вот... в процессе отладки опять косяки полезли: hStoreHandle = CertOpenStore_(#CERT_STORE_PROV_PHYSICAL, 0, 0, #CERT_SYSTEM_STORE_CURRENT_USER, mem) hStoreHandle возвращает, то есть функция как бы работает, но если сделать сразу проверку на GetLastError, то выдаст ошибку - Объект или свойство не найдено. опять тоже недразумение - то есть вроде и работает, и в тоже время пишет ошибку какую-то...
ага! в описании приписка: Note CreateFile, ReadFile, or registry errors might be propagated and their error codes returned. CertOpenStore has a single error code of its own, the ERROR_FILE_NOT_FOUND code, which indicates that the function was unable to find the provider specified by the lpszStoreProvider parameter. то есть ничего страшного? и это вылазит не совсем правильный GetLastError, правильный же GetLastError следует ставить только если hStoreHandle будет null? в mem - там что "лежит" у тебя ? путь в Unicode ? Отредактировано пользователем 6 августа 2012 г. 2:36:29(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.06.2012(UTC) Сообщений: 65 Откуда: Almaty, KZ
|
да юникод. пришлось заметно потрахаца чтобы перевести кучу уже написаного кода в unicodный вариант, а еще в процессе были найдены кучи мелких недочетов в дополнительной библиотеке для PureBasica в юникодных вариантах дополнительных функций, которые потом поправили :) SeregaZ написал: mem это что-то типа указателя, в котором хитрым мне не понятным образом записано MY_STORE.s = "My\.Default" mem = @MY_STORE
попробую просто "My" указать... тож самое.
насчет ошибки все дело в приписке к описанию функции что GetLastError вернет ошибки, которые напрямую не связаны с работой CertOpenStore. их я полагаю можно будет увидеть в procmon, например:  то есть функции предписано проверить эти ветки, она проверяет, не находит, GetLastError ругается... но ошибка не критическая и процессу открытия не мешает. я так понял что если функция возвращает положительный результат, значит в этом случае у нее приоритет перед GetLastError, и тогда на GetLastError можно не обращать внимание. я делал как: функция GetLastError другая функция GetLastError а надо было так: если функция сработала, то ничего если же не сработала, то GetLastError если вторая функция сработала, то ничего если не сработала, то GetLastError а поскольку одна функция перетекает из другой, то даже надо было сделать так: если функция сработала, то переходим ко второй если несработала, то GetLastError и перехода на вторую нет. Отредактировано пользователем 6 августа 2012 г. 5:43:54(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.06.2012(UTC) Сообщений: 65 Откуда: Almaty, KZ
|
решил я свою программу немного проапгрейдить. дело в том, что один тип сертификатов моя программа читает, а вот второй несколько другой и четкого алгоритма чтения его я пока не представляю. точнее я вообще не представляю как эти сертификаты читаются и тому подобное... в моем случае программа читает все файлы в папки виндовс, где лежат мои сертификаты и как только в одном из файлов попались, друг за другом, 12 цифр - значит это рнн и дальше файл можно не читать :) я конечно понимаю что система просто ужасна - однако она работает и я понимаю как она работает. изучать же всякие криптоапи просто боюсь... однако со вторым типом сертификатов такого не получится и придется засесть за штудирование материалов.
посему задача: прочитать все "мои" сертификаты с помощью криптоапи, а не чтением физического файла как я сейчас делаю. чтение из этих сертификатов каких-то данных - например "понятное имя", и также чтения срока годности такого сертификата. что вбивать в графу поиск я не представляю, посему был бы рад правильным ссылкам по моей задаче.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,847   Сказал «Спасибо»: 584 раз Поблагодарили: 2320 раз в 1818 постах
|
загрузить в память, воспользоваться несколькими функциями... CertGetNameString ( ..CERT_NAME_ATTR_TYPE...) CertGetCertificateContextProperty pCertContext->pCertInfo ... еще можно SDK посмотеть... |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.06.2012(UTC) Сообщений: 65 Откуда: Almaty, KZ
|
"загрузить в память" - это имеется ввиду загрузка файла сертификата? это не совсем то - я об уже установленных в виндовсе "моих" сертификатах, то есть мне нужно что-то типа certmgr.msc - там читает и имя и срок годности, точнее даже не имя - а поле "кому выдан". имя там порой абру кадабру пишет... Отредактировано пользователем 30 августа 2013 г. 14:55:17(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,847   Сказал «Спасибо»: 584 раз Поблагодарили: 2320 раз в 1818 постах
|
Автор: SeregaZ  "загрузить в память" - это имеется ввиду загрузка файла сертификата? это не совсем то - я об уже установленных в виндовсе "моих" сертификатах, то есть мне нужно что-то типа certmgr.msc - там читает и имя и срок годности, точнее даже не имя - а поле "кому выдан". имя там порой абру кадабру пишет... Автор: SeregaZ  в моем случае программа читает все файлы в папки виндовс, где лежат мои сертификаты и как только в одном из файлов попались, друг за другом, 12 цифр - значит это рнн и дальше файл можно не читать :) ответил дословно, если Вы имели ввиду стиль визуализации информации о сертификатах в ПО от MS тогда: открыть нужное хранилище сертификатов (MY) перечисляя все сертификаты, получать контекст каждого и прочитать свойства... |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.06.2012(UTC) Сообщений: 65 Откуда: Almaty, KZ
|
это я таким образом пытаюсь получить рнны уже установленных сертификатов - когда сертификат установлен, то в особой служебной папке, в моих документах, создается файл с длинным аброкадабрным названием без расширения. то есть это не оригинальный rsa.p12, а уже его установленная часть. и этот механизм работает, ошибок еще не было - но теоретическая возможность ошибки определения рнн там есть. поэтому я хотел бы переделать свою систему вместо чтения этих файлов на чтение средствами крипто апи - там возможность ошибки гораздо меньше, то есть точность гораздо выше. особенно со вторым типом сертификатов, которые я не могу прочитать тем моим топорным методом. и можно пример? Отредактировано пользователем 30 августа 2013 г. 15:05:55(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,847   Сказал «Спасибо»: 584 раз Поблагодарили: 2320 раз в 1818 постах
|
Пример?
CertOpenSystemStore CertEnumCertificatesInStore pCertContext - получили и читаем информацию... Какую информацию и как декодировать - следующий пункт.
Напомните OID РНН?
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,847   Сказал «Спасибо»: 584 раз Поблагодарили: 2320 раз в 1818 постах
|
У нас аналог ИНН=1.2.643.3.131.1.1
Извлекается так: CertGetNameString ( ... CERT_NAME_ATTR_TYPE,.., '1.2.643.3.131.1.1' ..) |
|
|
|
|
Форум КриптоПро
»
Общие вопросы
»
Общие вопросы
»
подскажите по проблеме импорта сертификата в браузер
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close