Форум КриптоПро
»
Средства криптографической защиты информации
»
Встраивание
»
Как преобразовать уникальное (FQCN) имя контейнера к сокращённому?
Статус: Активный участник
Группы: Участники
Зарегистрирован: 19.02.2008(UTC) Сообщений: 66 Откуда: Москва
|
В приложении использую сокращённые дружественные имена контейнеров сертификатов, а там где надо ввести пин-код за пользователя получаю список уникальных названий контейнеров.
Как можно преобразовать одно название к другому? FQCN -> Frendly.
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.12.2007(UTC) Сообщений: 390  Откуда: КриптоПро Поблагодарили: 2 раз в 2 постах
|
Существуют 4 имени контейнера - Дружественное - Уникальное - FQCN дружественно - FQCN уникальное
(FQCN дружественное)==\\.\(Имя считывателя)\(Дружественное имя) (FQCN уникальное)==\\.\(Имя считывателя)\(уникальное имя) Имя считывателя не содержит символов \
В общем случае функции преобразования из дружественного в уникальное и из уникального в дружественное не существует. Для реестра (Уникальное имя)==REGISTRY\\(Дружественное имя). Для остальных считывателей, пользоваться такими преобразованиями я бы не рекомендовал, но, для примера, приведу для дискеты (Уникальное имя)==FAT12\[SERIAL]_[VOLUME]\(8 первых символов имени контейнера).(NNN)\(CRC дружественного имени). Подробное описание полей, а так же описание уникального имени для части других носителей есть в CSP SDK.
Есть два основных способа преобразовать имя контейнера в уникальное имя и обратно. Оба этих способа требуют наличия вставленного ключевого носителя. 1. CryptAcquireContext(одно из известных имен), CryptGetProvParam(PP_CONTAINER, PP_UNIQUE_CONTAINER, PP_FQCN ) 2. CryptAcquireContext(CRYPT_VERIFYCONTEXT), CryptGetProvParam(PP_ENUMCONTAINERS) при указании флага CRYPT_UNIQUE в CryptGetProvParam будут возвращаться пары (уникальное имя)(дружественное имя) разделенные символов \0. Кроме того, при добавлении флага CRYPT_FQCN будут возвращаться пары FQCN имен
поэксперементировать с переименованием можно при помощи утилиты csptest csptest -keyset -enum_containers -verifycontext -unique csptest -keyset -enum_containers -verifycontext -unique -fqcn |
С уважением, Александр. |
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 19.02.2008(UTC) Сообщений: 66 Откуда: Москва
|
Спасибо большое за оперативный, исчерпывающий и бесплатный ответ!
Благодаря указанным сведениям получилось сделать то, что нужно. Замечу следующее: 1. В CSP 2.0 вызов CryptAcquireContext с флагом CRYPT_SILENT работает одинаково успешно с любым из возможных типов FQCN-имени контейнера; 2. В общем случае, чтобы провести аутентификацию пользователей, приходится обращаться к контейнеру (в моём случае, токену) 3 раза: 2.1. Перечисление контейнеров с флагом CRYPT_FQCN (как вы сказали, если нет флага CRYPT_UNIQUE, то будут возвращаться дружественные имена); 2.2. Открытие контекста для каждого контейнера из полученного списка для получения дружественного имени; 2.3. Обращение к содержимому выбранного контейнера. Обращение с помощью FQCN-имени и флага CRYPT_SILENT, чтобы отображать собственное окно ввода пароля. При этом, показ пользователю дружественного имени.
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.12.2007(UTC) Сообщений: 390  Откуда: КриптоПро Поблагодарили: 2 раз в 2 постах
|
Цитата:2.1. Перечисление контейнеров с флагом CRYPT_FQCN (как вы сказали, если нет флага CRYPT_UNIQUE, то будут возвращаться дружественные имена); 2.2. Открытие контекста для каждого контейнера из полученного списка для получения дружественного имени;
Не понял зачем пункт 2.2, повторю Цитата:при указании флага CRYPT_UNIQUE в CryptGetProvParam будут возвращаться пары (уникальное имя)(дружественное имя) разделенные символов \0 То есть сразу за строкой уникального имени следует строка дружественного имени. Оба имени соответствую одному и тому же контейнеру. |
С уважением, Александр. |
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 19.02.2008(UTC) Сообщений: 66 Откуда: Москва
|
Понял. Достаточно одного вызова и разбора строки. Так как ключи CRYPT_UNIQUE и CRYPT_FQCN определены в модуле Крипто-Про, подобного поведения не стоит ожидать при использовании других криптопровайдеров, да? Ещё небольшой вопрос: возможно ли избежать показа окна с доступными носителями при создании контейнера (CryptAcquireContext с флагом CRYPT_NEWKEYSET), если передать в качестве названия FQCN-имя нового контейнера? Отредактировано пользователем 23 апреля 2010 г. 20:17:33(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.12.2007(UTC) Сообщений: 390  Откуда: КриптоПро Поблагодарили: 2 раз в 2 постах
|
Цитата:Так как ключи CRYPT_UNIQUE и CRYPT_FQCN определены в модуле Крипто-Про, подобного поведения не стоит ожидать при использовании других криптопровайдеров, да? Уникальные имена контейнеров и FQCN имена контейнеров изобретение не наше, а Microsoft. Но различий много. 1. У microsoft FQCN имена существуют только для смарт-карт, по этим именам можно и открывать контейнер. 2. У microsoft получить FQCN имя нельзя ни перечислением, ни с помощью CryptGetProvParam (и ключи CRYPT_UNIQUE и CRYPT_FQCN не поддерживаются) 3. Формат уиникального имени и FQCN имени у microsoft не специфицирован. Это не полный список. Цитата:Ещё небольшой вопрос: возможно ли избежать показа окна с доступными носителями при создании контейнера (CryptAcquireContext с флагом CRYPT_NEWKEYSET), если передать в качестве названия FQCN-имя нового контейнера? Да. Передавать лучше FQCN дружественное имя, FQCN уникальное будет сгенерировано. |
С уважением, Александр. |
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.11.2011(UTC) Сообщений: 35 Откуда: Екатеринбург
|
Добрый день. Не подскажите, есть ли форма записи, чтобы результат работы CryptGetProvParam(PP_ENUMCONTAINERS)был похож на результат работы утилиты csptest с параметрами -keyset -enum_containers -verifycontext -unique -fqcn. Например вот так: mail CryptoPro | SCARD\ETOKEN_PRO_27cca10d351b\CC00\A29B или \\.\AKS ifdh 0\mail CryptoPro | \\.\AKS ifdh 0\SCARD\ETOKEN_PRO_27cca10d351b\CC00\A29B Я как не пытал CryptGetProvParam () выдает только: \\.\AKS ifdh 0\SCARD\ETOKEN_PRO_27cca10d351b\CC00\A29B не могу понять как вывести пару (уникальное имя)(дружественное имя) Пишу на C# Последняя испробованная форма записи функции: CryptGetProvParam(hProv, PP_ENUMCONTAINERS, sb, ref pdwDataLen, dwFlags | CRYPT_UNIQUE | CRYPT_FQCN)) Автор: Челпанов А.  Существуют 4 имени контейнера 2. CryptAcquireContext(CRYPT_VERIFYCONTEXT), CryptGetProvParam(PP_ENUMCONTAINERS) при указании флага CRYPT_UNIQUE в CryptGetProvParam будут возвращаться пары (уникальное имя)(дружественное имя) разделенные символов \0. Кроме того, при добавлении флага CRYPT_FQCN будут возвращаться пары FQCN имен
поэксперементировать с переименованием можно при помощи утилиты csptest csptest -keyset -enum_containers -verifycontext -unique csptest -keyset -enum_containers -verifycontext -unique -fqcn Отредактировано пользователем 16 января 2013 г. 14:21:11(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,457  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 39 раз Поблагодарили: 750 раз в 645 постах
|
|
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.11.2011(UTC) Сообщений: 35 Откуда: Екатеринбург
|
Добрый день. Автор: maxdm  Код:| CRYPT_UNIQUE | CRYPT_FQCN
используется в csptest Не совсем понял, что вы хотели этим сказать. В нескольких темах на форуме написано, что с помощью CryptGetProvParam(...,PP_ENUMCONTAINERS,...,...,CRYPT_FIRST|CRYPT_UNIQUE ) можно получить связку (дружественное имя)(уникальное имя) контейнера, но у меня выдает только уникальное. Может я не правильно толку смысл подобных фраз? Челпанов А. написал: Если добавить к CRYPT_FIRST еще и CRYPT_UNIQUE(0x08) будем получать, кроме имен контейнеров, еще и уникальные имена контейнеров (они будут возвращаться второй строкой внутри возвращаемых данных) и сможем отфильтровать те имена, которые содержат "SCARD\rutoken_"
|
|
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
Встраивание
»
Как преобразовать уникальное (FQCN) имя контейнера к сокращённому?
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close