Дмитрий, если, быть точным, в The Smart Card CSP Cookbook (http://msdn.microsoft.com/en-us/library/ms953432.aspx) не сказано должен ли кэшироваться PIN после CryptReleaseContext.
И честно, говоря мало сказано про логику работу этой функции в принципе.
Сказано другое, что PIN должен сохраняться при вызове функции CryptSetProvParam с флагом PP_KEYEXCHANGE_PIN с параметром pbData != NULL, и сбрасываться с параметром pbData == NULL.
Дмитрий, хочу оговориться, CSP у нас был написан довольно давно, и долгое время не перерабатывался.
На данный момент есть проблема при аутентификации по сертификату на терминальном сервере на базе Windows Server 2008. И по всей видимости именно из-за некорректной работы с PIN-кодом.
У нас до этого PIN-код сохранялся только для контейнера по-умолчанию, этого хватало для локального логона и аутентификации на терминальном сервере по средствам RDP клиента версии младше, чем 6.1.
Получается, что задача с кэшированием PIN'а приоритетная. Без этого функционала не работает аутентификация на терминальном сервере. А этой проблемой мы занимаемся на данный момент.
Думаю, в ближашей бета-версии мы сможем выпустить CSP с этим функционалом.
На сколько я понимаю, на данный момент у Вас идет либо исследование перед разработкой ПО, либо разработка ПО, с использованием Aktiv Rutoken CSP v1.0. Т.е. Вы можете вести разработку, при условии того, что PIN будет запрашиваться повторно из CSP. А мы же в свою очередь, произведем доработку CSP, с тем чтобы кэширование работало корректно.
Михаил Курский
Руководитель отдела разработки прикладного ПО Rutoken, Компания "Актив"