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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline rfigurin  
#1 Оставлено : 17 января 2014 г. 11:25:48(UTC)
rfigurin

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

Группы: Участники
Зарегистрирован: 10.07.2013(UTC)
Сообщений: 42
Российская Федерация
Откуда: Нижний Новгород

Сказал(а) «Спасибо»: 2 раз
Здравствуйте,

Есть 2 проблемы, вопрос - можно ли как-то оптимизировать или ускорить эти куски приложения.

1) Получение списка контейнеров со смарт-карты.
Алгоритм такой - получили дескриптор криптопровайдера, затем в цикле вызываем CryptGetProvParam(_hCryptProv, PP_ENUMCONTAINERS, …). Тут такая особенность - если CryptGetProvParam вернет имя контейнера, то эта функция отрабатывает довольно быстро (максимум - 1 секунда), если же CryptGetProvParam возвращает ошибку ERROR_NO_MORE_ITEMS (окончание списка контейнеров), то времени уже требуется больше - от 8 до 12 секунд. Можно ли как-то оптимизировать это, может быть, есть какая-то возможность получить количество контейнеров и затем вызвать CryptGetProvParam в цикле определенное количество раз.

2) Получение common name (CN поле сертификата) по имени контейнера на смарт-карте.
Мой алгоритм отрабатывает за 8-12 секунд, подскажите, существует ли более оптимальный.
CryptAcquireContext(с именем контейнера)
CryptGetUserKey (получим ключ для "открытого" контейнера) - съедает примерно половину всего времени работы функции.
CryptGetKeyParam(с параметром KP_CERTIFICATE)
CertCreateCertificateContext(создаем контекст сертификата из полученных данных)
CertNameToStr(X509_ASN_ENCODING, &pCertContext->pCertInfo->Subject, CERT_OID_NAME_STR) - получили строку "Subject", которая содержит нужные нам данные.
Offline Татьяна  
#2 Оставлено : 27 января 2014 г. 16:59:44(UTC)
Татьяна

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

Группы: Участники
Зарегистрирован: 06.02.2008(UTC)
Сообщений: 1,491
Откуда: Крипто-Про

Поблагодарили: 40 раз в 37 постах
Здравствуйте.
Последовательность вызовов функций правильная.
Быстродействие этих частей приложения зависит от быстродействия смарт-карт. Для сравнения, можете сделать те же действия с контейнером на жестком диске -- там никаких задержек по 8-12 секунд не будет.
У разных смарт-карт разная производительность на разных операциях. Какие-то долго создают контейнеры, какие-то долго удаляют и тп.
Татьяна
ООО Крипто-Про
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.