17.01.2007 12:42:46 | CertOpenStore & eToken | | Ответов: 9 |
|
Buchos | | |
|
Прошу прощения, если обсуждалось, но возможно ли с помощью функций CertOpenStore и CertEnumCertificatesInStore прочитать сертификаты прямо с eToken R2? Ели да, то с какими параметрами вызывать CertOpenStore? |
|
Ответы:
|
17.01.2007 14:11:09 | Kirill Sobolev |
|
А разве eToken реализует функциональность хранилища сертификатов? Это же ключевой носитель, на котором хранят контейнеры, в которых могут быть (а могут и не быть) сертификаты. Поэтому, CertOpenStore тут не подойдет, если, конечно, нет специального ПО которое при подключении еTokena создает временное хранилище куда помещает все сертификаты с eTokena. |
|
17.01.2007 15:34:27 | Buchos |
|
Т.е. скредствами Crypto API сертификат с eToken R2 не прочитать? |
|
17.01.2007 16:57:52 | Kirill Sobolev |
|
Как раз можно - сначала перечислить контейнеры, которые лежат на eTokene а потом оттуда вытащить сертификаты. |
|
17.01.2007 17:14:23 | Buchos |
|
Если Вас не задруднит... можно подробней? |
|
17.01.2007 17:48:54 | Kirill Sobolev |
|
Вот тут похожее обсуждалось
http://www.cryptopro.ru/cryptopro/forum/view.asp?q=2456 |
|
18.01.2007 13:22:47 | Buchos |
|
К сожалению, не подходит. Вопрос все еще открыт. Требуется аналог того, что происходит при нажатии кнопки "Посмотреть сертификаты в контейнере..." |
|
18.01.2007 13:50:38 | Kirill Sobolev |
|
Если Вы про панель управления КриптоПро CSP то там это и происходит - перечисление всех контейнеров для выбранного провайдера а потом уже просмотр сертификата для выбранного контейнера. |
|
18.01.2007 14:26:58 | Buchos |
|
Kirill Sobolev, я Вам очень признателен за Ваши комментарии.
Да, так и делаю:
HCRYPTPROV hсProv;
containerName - строка - имя ключевого контейнера
вызываю CryptAcquireContext(&hсProv, containerName, NULL, 75, 0)
что указывать параметрам CertOpenStore()? ясно, что hCryptProv будет указателем на полученный hсProv?
PCCERT_CONTEXT certContext = NULL;
while ((certContext = CertEnumCertificatesInStore(hCertStore, certContext)) != NULL) {
...
}
что бы я ни пробовал подставлять в CertOpenStore(), certContext всегда NULL |
|
18.01.2007 15:10:58 | Kirill Sobolev |
|
Вам не надо открывать контейнер как хранилище, а надо получить свойство ключа CryptGetKeyParam(KP_CERTIFICATE) |
|