Форум КриптоПро
»
Устаревшие продукты
»
КриптоПро CSP 3.0
»
// Диалог "вставьте ключевой носитель" появляется на 2-3 секунды при работе с Etoken
Статус: Участник
Группы: Участники
Зарегистрирован: 15.04.2009(UTC) Сообщений: 10
|
Коллеги, 1) использую cryptopro CSP 3.0 2) при вызове функиции CryptAcquireContext получаю диалог(см аттач) на две-три секунды, затем диалог пропадает сам-собой и проблем при работе с контекстом нет. 3) если в системе оставить только один считыватель eToken - проблем нет. Диалог не показывается 4) Если при вызове CryptAcquireContext указать CRYPT_SILENT диалог не показывается, но и получение контекста заканчивается ошибкой. 5) Пробовал задавать в качестве имени контейнера задавать FQCN имя (предварительно получив его с помощью PP_ENUMCONTAINERS и FQCN флага) + CRYPT_SILENT - тоже получаю ошибку. 6) Устройство на котором лежит контейнер - [Athena ASEDrive IIIe USB] Скажите, можно ли сделать так, чтобы диалог не показывался. Диалог какой-то странный да и зачем он нужен ведь выбрать в нем все равно ничего нельзя. Есть только кнопки "отмена" и "сведения". К тому же появляется на пару секунд, а потом исчезает Пользователь Polox прикрепил следующие файлы:  Диалог.PNG (10kb) загружен 564 раз(а).У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
|
|
|
|
Статус: Администратор
Группы: Администраторы, Участники Зарегистрирован: 28.12.2007(UTC) Сообщений: 350 Откуда: ООО "КРИПТО-ПРО"
Поблагодарили: 6 раз в 5 постах
|
Да, для CSP 3.0 при чтении контейнера показывается диалог выбора носителя. При этом, если считыватель реально подключен - то он будет найден и окно пропадёт.
Если считыватель в CSP настроен единственный - то, конечно, выбора нет и окна не будет. Чтобы окна не было - рекомендуется использовать уникальное имя контейнера (флажок CRYPT_UNIQUE).
В CSP 3.6 окно не будет показано, если носитель реально подключен.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 15.04.2009(UTC) Сообщений: 10
|
Я не написал к сожалению, но я как-раз и использую этот флажок. Я и с ним проверял и с CRYPT_FQCN. Получаю имя контейнера так
HCRYPTPROV cryptProv = NULL; BOOL res = ::CryptAcquireContext(&cryptProv, NULL, CP_GR3410_2001_PROV, PROV_GOST_2001_DH, CRYPT_VERIFYCONTEXT);
if(res) { DWORD len = 0; res = CryptGetProvParam(cryptProv, PP_ENUMCONTAINERS, NULL, &len, CRYPT_FIRST | CRYPT_UNIQUE); DWORD last_error = GetLastError();
if(last_error == ERROR_NO_MORE_ITEMS) { return(result); // There is no any entry }
if(res) { char* container = new char[len + 1]; memset(container, 0x0, len + 1); res = CryptGetProvParam(cryptProv, PP_ENUMCONTAINERS, (BYTE*)container, &len, CRYPT_FIRST | CRYPT_UNIQUE); if(res) { result->push_back(container);
do { res = CryptGetProvParam(cryptProv, PP_ENUMCONTAINERS, NULL, &len, CRYPT_UNIQUE); if(!res) { break; }
char* container = new char[len + 1];
res = CryptGetProvParam(cryptProv, PP_ENUMCONTAINERS,(BYTE*)container, &len, CRYPT_UNIQUE); if(res) { result->push_back(container); } else { delete[] container; } }while(res); } else { delete[] container; } } итд
потом его использую.
Я ведь верно понял, что под использованием флажка CRYPT_UNIQUE вы имели ввиду его использование совместно с CryptGetProvParam(cryptProv, PP_ENUMCONTAINERS, NULL, &len, CRYPT_UNIQUE); или есть еще место где его нужно поставить ?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 15.04.2009(UTC) Сообщений: 10
|
Висилий(Дементьев), простите за назойливость, но куда можно капать далее ? Я использую имя полученное с помощью флага CRYPT_UNIQUE. Мы не могли бы помочь(если это вообще можно сделать для 3.0) ?
|
|
|
|
Статус: Администратор
Группы: Администраторы, Участники Зарегистрирован: 28.12.2007(UTC) Сообщений: 350 Откуда: ООО "КРИПТО-ПРО"
Поблагодарили: 6 раз в 5 постах
|
А можете привести, что возвращается в качестве имён контейнеров?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 15.04.2009(UTC) Сообщений: 10
|
Конечно, вот такое например
SCARD\ETOKEN_PRO32_2533c7011a19\CC00\BD9A
или такое
SCARD\ETOKEN_PRO32_268979183006\CC00\2EF8
|
|
|
|
Статус: Администратор
Группы: Администраторы, Участники Зарегистрирован: 28.12.2007(UTC) Сообщений: 350 Откуда: ООО "КРИПТО-ПРО"
Поблагодарили: 6 раз в 5 постах
|
Ясно. Тогда окошка не будет, если в CSP настроен только один считыватель смарткарт. Если таких больше (например. кроме упоминаемого вами Athena имеется ещё "AKS ifdh 0" или другие), то можно использовать флажок CRYPT_FQCN - тогда будет добавлен префикс конкретного считывателя.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 15.04.2009(UTC) Сообщений: 10
|
Василий,
я в первом посте писал : "5) Пробовал задавать в качестве имени контейнера задавать FQCN имя (предварительно получив его с помощью PP_ENUMCONTAINERS и FQCN флага) + CRYPT_SILENT - тоже получаю ошибку." (c).
Без CRYPT_SILENT и с FQCN именем я по-моему не пробовал получать контекст, но с CRYPT_SILENT флагом и FQCN именем я получаю ошибку при получении контекста. Могу попробовать сделать тест с FQCN именем и без SILENT флага. Когда будут готовы результаты напишу что получилось.
Скажите, а для чего понадобилось делать три разных типа для имен контейнеров в cryptopro? Я имею ввиду CRYPT_UNIQUE,CRYPT_FQCN и без этих флагов. Если скажем мое приложение должно быть абстрагировано от физической природы считывателя какой флаг я должен использовать при этом ?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 15.04.2009(UTC) Сообщений: 10
|
Василий, я попробовал получить имя контейнера с флагом CRYPT_FQCN. Получается такое имя \\.\Athena ASEDrive IIIe USB 0\RaUser-5a8178bd-d0fe-4e0b-a6f7-9435582f5c75 или например такое \\.\Athena ASEDrive IIIe USB 0\RaUser-9dca2db9-945b-41ea-be58-4d9cd91434fe
Далее по этому имени я пытаюсь получить контекст провайдера вот так
HCRYPTPROV cryptProv = NULL;
BOOL res = ::CryptAcquireContext(&cryptProv, container_name, CP_GR3410_2001_PROV, PROV_GOST_2001_DH, 0);
и получаю ошибку.
Итого имеет: 1) при получении контекста по имени контейнера, полученного с флагом CRYPT_UNIQUE получаю диалог на пару секунд если CRYPT_SILENT не указан. 2) при получении контекста по имени контейнера, полученного с флагом CRYPT_UNIQUE получаю ошибку(CryptAcquireContext возвращает false) если CRYPT_SILENT указан. 3) при получении контекста по имени контейнера, полученного с флагом CRYPT_FQCN получаю ошибку(CryptAcquireContext возвращает false) в любом случае(и в случае если CRYPT_SILENT указан и в случае если нет).
Что еще посоветуете ?
|
|
|
|
Статус: Администратор
Группы: Администраторы, Участники Зарегистрирован: 28.12.2007(UTC) Сообщений: 350 Откуда: ООО "КРИПТО-ПРО"
Поблагодарили: 6 раз в 5 постах
|
Ага, вот оно в чём дело. Суммарная длина FQCN-имени больше 64 байт. А в CSP 3.0 допускается не более 64 байт (просто стоит проверка в ф-и CryptAcquireContext). Варианты: 1) сократить имя контейнера 2) сократить имя считывателя Проще сделать второе, т.к. контейнер, по-видимому, делается с автоматически сделанным случайным именем. Для этого нужно переименовать два раздела реестра: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Calais\Readers\Athena ASEDrive IIIe USB 0 и аналогичный раздел в HKEY_LOCAL_MACHINE\SOFTWARE\Crypto Pro\Cryptography\CurrentVersion\KeyDevices\PCSC В качестве имени раздела можете оставить просто Athena Кстати, в CSP 3.6 такого ограничения нет. Отредактировано пользователем 29 июня 2009 г. 17:10:29(UTC)
| Причина: Не указана
|
|
|
|
Форум КриптоПро
»
Устаревшие продукты
»
КриптоПро CSP 3.0
»
// Диалог "вставьте ключевой носитель" появляется на 2-3 секунды при работе с Etoken
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close