Кирилл Мещеряков пишет:Если Вы хотите решить задачу определить наличие контейнера КриптоПро CSP более конкретно, то не обойтись без написания кода.
Мы для этого используем интерфейс ISO 7816, алгоритм можем подсказать.
Подскажите, пожалуйста, можно на мою почту архив с близкими примерами и документацией.
Вообще, способы решения задачи определения наличия пользовательских данных (точнее любых не pkcs#11 пользовательских объектов, например, ключевых контейнеров КриптоПро) на рутокене вижу такие:
1. Ориентироваться на общую и свободную память рутокена. Но этот способ не точный, зависит от конкретного устройства. Нужен способ, годный и для будущих ваших устройств. Но это самый простой способ, годный как временное решение. Поэтому скажите, пожалуйста, каков размер на служебные данные в зависимости от токенов, выпускаемых сейчас и раньше? Это 4*1024 байт или 4*1000 байт для всех ваших токенов? Если занятый объем больше, значит там есть пользовательские данные?
2. Использовать криптопровайдер. Но тут надо использовать именно тот криптопровайдер, чьи контейнеры могут быть на токене, а этого мы не знаем заранее. Но пусть знаем, например, КриптоПро. Тут еще проблема: как через криптографические функции WinAPI получить серийный номер устройства (нам он нужен)? Можно конечно получить полное имя ключевого контейнера CryptGetProvParam(...PP_UNIQUE_CONTAINER...), но там нет серийного номера.
3. Низкоуровневый подход (ISO 7816, APDU команды). Пришлите, пожалуйста, на мою почту архив с близкими к этой задаче примерами и документацией, например APDU команд, поддерживаемых всеми рутокенами.