Ключевое слово в защите информации
ключевое слово
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Sirius  
#1 Оставлено : 22 июня 2012 г. 18:40:22(UTC)
Sirius

Статус: Участник

Группы: Участники
Зарегистрирован: 22.06.2012(UTC)
Сообщений: 13

Подскажите, как можно проверить существование ruToken-а в считывателе. С помощью Crypto API удалось получить список доступных считывателей, но нужно явно проверить наличие ruToken-а ?
Offline Sirius  
#2 Оставлено : 23 июня 2012 г. 18:03:24(UTC)
Sirius

Статус: Участник

Группы: Участники
Зарегистрирован: 22.06.2012(UTC)
Сообщений: 13

Придумал, след. реализацию:
1. с помощью P/Invoke получаю список доступных ридеров и контейнеров, далее отбираю ридеры, в кот. нет ни одного контейнера, следовательно они потенциально м.б. пустыми
2. пытаюсь обратиться к контенейру (с произвольным имененем VirtualContainer):
string containerName = @"\\.\" + readerName + @"\VirtualContainer";
CspParameters cspParameters = new CspParameters(75) { KeyPassword = GetSecureString("12345678"), KeyContainerName = containerName, Flags = CspProviderFlags.NoPrompt|CspProviderFlags.UseExistingKey };
provider = GetServiceProvider(cspParameters);
В случае отсутствия руТокена вываливается эксепшен "Смарт-карта извлечена", если руТокен присутствует - эксепшен "Не обнаружены ключи". Таким образом, получается отфильтровать ридеры по наличию в них вставленных руТокенов.

Как можно решить эту задачу более элегантно? Насколько я понял, есть возможность использовать CSP самого руТокена и соответственно перечисления физических контейнеров, но вызов функции CryptAcquireContext("Aktiv Rutoken CSP v1.0",...) дает ошибку...


Offline khomenko  
#3 Оставлено : 25 июня 2012 г. 12:40:15(UTC)
Михаил Хоменко

Статус: Активный участник

Группы: Администраторы, Участники
Зарегистрирован: 28.04.2010(UTC)
Сообщений: 141
Мужчина
Откуда: Крипто-Про

Поблагодарили: 16 раз в 15 постах
Добрый день,
При перечислении ридеров через CryptGetProvParam(..PP_ENUMREADERS...) можно указать флаг 32, тогда для каждого считывателя дополнительно будет проверяться наличие карточки в нем.
Offline Sirius  
#4 Оставлено : 25 июня 2012 г. 13:05:54(UTC)
Sirius

Статус: Участник

Группы: Участники
Зарегистрирован: 22.06.2012(UTC)
Сообщений: 13

Попробовал PP_ENUMREADERS | 32 - тоже самое, и отдельно 32 - вернул ноль считывателей. В чем м.б. проблема ?
Offline khomenko  
#5 Оставлено : 25 июня 2012 г. 15:16:53(UTC)
Михаил Хоменко

Статус: Активный участник

Группы: Администраторы, Участники
Зарегистрирован: 28.04.2010(UTC)
Сообщений: 141
Мужчина
Откуда: Крипто-Про

Поблагодарили: 16 раз в 15 постах
PP_ENUMREADERS - параметр
32 - значение флага.
CryptGetProvParam(hProv, PP_ENUMREADERS, pbData, pdwDataLen, 32);
Offline Sirius  
#6 Оставлено : 25 июня 2012 г. 18:02:25(UTC)
Sirius

Статус: Участник

Группы: Участники
Зарегистрирован: 22.06.2012(UTC)
Сообщений: 13

Спасибо за замечание, но все-равно не пашет (использую след. код для обхода считывателей на C#, dwFlags = KeyPal.CRYPT_FIRST | 32, enumFalgs = PP_ENUMREADERS):
StringBuilder sb = null;
Win32.CryptGetProvParam(hProv, enumflags, sb, ref pcbData, dwFlags);
BUFFSIZE = (int)(2 * pcbData);
sb = new StringBuilder(BUFFSIZE);

/* ---------- Get KeyContainer Names ------------- */
dwFlags = iterFlags; //CRYPT_FIRST; //required initalization
while (Win32.CryptGetProvParam(hProv, enumflags, sb, ref pcbData, dwFlags))
{
dwFlags = 0; //required to continue entire enumeration
containernames.Add(sb.ToString());
}
Offline khomenko  
#7 Оставлено : 25 июня 2012 г. 18:17:18(UTC)
Михаил Хоменко

Статус: Активный участник

Группы: Администраторы, Участники
Зарегистрирован: 28.04.2010(UTC)
Сообщений: 141
Мужчина
Откуда: Крипто-Про

Поблагодарили: 16 раз в 15 постах
А что за ошибку получаете ?
Признак завершения операции, "ошибка" ERROR_NO_MORE_ITEMS
Внутри цикла нужно снять только флаг CRYPT_FIRST, 32 нужно оставить.
Offline Ахат  
#8 Оставлено : 10 сентября 2014 г. 19:25:46(UTC)
Ахат

Статус: Участник

Группы: Участники
Зарегистрирован: 18.02.2011(UTC)
Сообщений: 11

Сказал(а) «Спасибо»: 5 раз
Здравствуйте, у меня близкий к данной теме вопрос.
Какие флаги (Flags) можно получить в CRYPT_ENUMREADER_INFO_MEDIA при PP_ENUMREADERS и что они означают?
Это не описано в http://cpdn.cryptopro.ru...i_n_f_o___m_e_d_i_a.html и WinCryptEx.h, на форуме тоже не нашел.
Вообще, задача разделять usb токены (рутокен, етокен, ...) и смарткарты от обычных флеш накопителей. Не хотелось бы это делать по szMedia или szName.
Offline Максим Коллегин  
#9 Оставлено : 10 сентября 2014 г. 20:01:19(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,433
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 38 раз
Поблагодарили: 737 раз в 634 постах
Флаги из модуля считывателя RDR_FLAG_BLOCK_RDR.
У pcsc такие:
Код:
static const unsigned char PCSC_RDR_FLAGS[] = 
{
    0 << 7 /* RDR_FLAG_RDR_LONG_NAMES */
    | 1 << 6 /* RDR_FLAG_RDR_REMOVABLE */
    | 1 << 5 /* RDR_FLAG_RDR_UNIQUE */
    | 1 << 4 /* RDR_FLAG_RDR_FOLDERS */
    | 0 << 3, /* RDR_FLAG_RDR_FOLDER_ROOT */
};

у fat12:
Код:
static const unsigned char FAT12_FLAGS_RDR[] = 
{
      0 << 7 /* RDR_FLAG_RDR_LONG_NAMES */
    | 1 << 6 /* RDR_FLAG_RDR_REMOVABLE */
#ifdef UNIX
    | 0 << 5 /* RDR_FLAG_RDR_UNIQUE */
#else /* UNIX */
    | 1 << 5 /* RDR_FLAG_RDR_UNIQUE */
#endif /* UNIX */
    | 1 << 4 /* RDR_FLAG_RDR_FOLDERS */
    | 1 << 3, /* RDR_FLAG_RDR_FOLDER_ROOT */
};

Можно различать по последнему флагу.
Знания в базе знаний, поддержка в центре поддержки
thanks 2 пользователей поблагодарили Максим Коллегин за этот пост.
Андрей * оставлено 10.09.2014(UTC), Ахат оставлено 11.09.2014(UTC)
Offline Ахат  
#10 Оставлено : 11 сентября 2014 г. 11:54:51(UTC)
Ахат

Статус: Участник

Группы: Участники
Зарегистрирован: 18.02.2011(UTC)
Сообщений: 11

Сказал(а) «Спасибо»: 5 раз
На имеющихся рутокенах и етокенах получаю Flags=0x72. Что означает флаг "1 << 1"? Не ФКН ли устройство?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.