Для извлечения сертификата незаконно требуется PIN-код
Добрый день. Мы разрабатываем ПО, использующее связку КриптоПро + Rutoken. Столкнулись со следующей проблемой: для некоторых моделей Rutoken извлечение сертификата из контейнера ключа почему-то требует ввод PIN-кода. Секретный ключ нам не нужен, а сертификат - открытая часть и извлекаться должен свободно.
Выяснилось, что к требованию пин-кода приводит вызов метода CryptGetUserKey. В то же время MSDN чётко говорит о неправомерности такого поведения:
A common mistake in CSPs is to require the PIN during CryptGetUserKey. CryptGetUserKey should succeed without the PIN. However, some operations (such as writing to the smart card and private key operations) using the handle will require the PIN later on and some won't (CryptGetKeyParam with KP_CERTIFICATE).
http://msdn.microsoft.com/en-us/library/ms953432.aspx
Отказ от ввода пин-кода завершает функцию неудачей. Но самое неприятное для нас то, что наше ПО извлекает сертификаты в автоматическом режиме молча, работая с криптопровайдером под флагом CRYPT_SILENT. В "тихом" режиме метод CryptGetUserKey сразу завершается ошибкой.
Повторяется не для всех рутокенов, пример конкретной модели с проблемой: 16k200Z 0757749568, но он далеко не единственный. Драйвера Рутокен 2.86.00.0460, КриптоПро 3.6 R2
Прошу подсказать, что можно предпринять, чтобы извлечь сертификат без ввода пин-кода.