Jump to content

Recommended Posts

Коллеги, доброго дня.

Имеется следующая конфигурация:

1. RuToken, на нём - ключ Vipnet.

2. Vipnet CSP. В его GUI виден RuToken, и виден на нём ключевой контейнер.

3. Приложение: использует Vipnet CSP через MS crypto API, хочет подписать ключевой парой, находящейся на токене.

Проблема:

Чтобы в MS crypto API создать контекст криптопровайдера, нужно передать полный путь к ключевому контейнеру.

Вопрос:

Как, имея данные ключевого контейнера из UI Vipnet CSP, скомпоновать путь, по которому контейнер будет найден випнетом, обёрнутым в MS crypto API?

Дополнительные данные:

Випнет показывает "путь": Rutoken/Rutoken S(2ee8742b ), "имя контейнера": eds_for_vipnetcsp, но попытки из этого что-то скомпоновать пока к успеху не привели. Например,

Rutoken/Rutoken S(2ee8742b )/eds_for_vipnetcsp не работает.

Share this post


Link to post
Share on other sites
Guest cjsbox

Здравствуйте!

У нас точно такая же задача. Можете ли скинуть пример обращения к контейнеру(VipNet) на РуТокене для подписания и проверки сообщения с помощью MS crypto API? Или ссылку где про это можно почитать.

Заранее большое спасибо.

Share this post


Link to post
Share on other sites
Guest GoshaSH

Тогда следующий вопрос. Ситуация подобная, но используется одновременно несколько Рутокенов. Как программно определить полный путь до контейнера в удобоваримом представлении (что-то типа \\!\Rutoken/Rutoken S\\<имя контейнера>)? Для этих целей в крипто про есть ключ CRYPT_FQCN. Есть ли что нить подобное в ВипНет? SDK замусолил до дыр. Там ничего нет. Но апплет ВипНет это делать умеет. Как?

P.S. Win XP SP3

Share this post


Link to post
Share on other sites
Guest GoshaSH

Здравствуйте!

У нас точно такая же задача. Можете ли скинуть пример обращения к контейнеру(VipNet) на РуТокене для подписания и проверки сообщения с помощью MS crypto API? Или ссылку где про это можно почитать.

Заранее большое спасибо.

Если делать это, как написано MSDN, т.е.

CryptAcquireContext(,CRYPT_VERIFYCONTEXT)

CryptGetProvParam(,PP_ENUMCONTAINERS,,CRYPT_FIRST)

...

CryptGetProvParam(,PP_ENUMCONTAINERS,,,CRYPT_NEXT)

то получишь список всех контейнеров. Где они находятся неизвестно. При попытке обращения к любому найденному, кроме тех которые находятся на HDD, вылезает противное окошко с предложением самостоятельно выбрать токен где находится контейнер. Т.е. ВипНет выдавая список доступных контейнеров, сам потом не может их найти ))). Частично можно упростить задачу используя недокуменнтированный ключ CRYPT_UNIQUE (наткнулся случайно).

Т.е.

CryptAcquireContext(,CRYPT_VERIFYCONTEXT)

CryptGetProvParam(,PP_ENUMCONTAINERS,,CRYPT_FIRST or CRYPT_UNIQUE)

...

CryptGetProvParam(,PP_ENUMCONTAINERS,,,CRYPT_NEXT or CRYPT_UNIQUE)

Тогда выдаст список уникальных путей до контейнера, что то в виде 1|2\5|300\17|00a2d83e \8|sgn-4e20-6af0-95af-5fdb.

С этим еще можно хоть как то работать.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site, you agree to our Terms of Use.