09.08.2005 17:49:39Список контейнеров Ответов: 5
Ирина
Мне необхоимо определить список контейнеров. Однако в вызове
CryptGetProvParam(hProv, PP_ENUMCONTAINERS, nil, @size, CRYPT_FIRST)
Присутствует параметр hProv, который определяется при вызове
CryptAcquireContext(@hProv, FContainer, ProvName, FProvider, CRYPT_NEWKEYSET)
Но ведь в этот момент я еще не знаю имени контейнера.
Как мне сначала синициализировать криптопровайдер не зная каким контейнером я буду пользоваться, а потом выбрать необходимый контейнер?
 
Ответы:
10.08.2005 11:49:05Kirill Sobolev
Инициализируйте с флагом CRYPT_VERIFYCONTEXT. Тогда имя контейнера не требуется.
10.08.2005 12:09:41Ирина
Однако последовательный вызов
CryptAcquireContext(@hProv, nil, ProvName, FProvider, CRYPT_VERIFYCONTEXT)
CryptGetProvParam(hProv, PP_ENUMCONTAINERS, nil, @size, 0)
Выдает ошибку ERROR_NO_MORE_ITEMS
То есть он не видит доступных контейнеров.
10.08.2005 12:23:15Kirill Sobolev
Конечно. Почему у CryptGetProvParam последний флаг 0 а не CRYPT_FIRST?
10.08.2005 12:41:03Ирина
С флагом CRYPT_FIRST помагло, но ведь он тогда возвращает длину первого контейнера, а не наибольшую длину среди всех контейнеров.
10.08.2005 12:57:29Kirill Sobolev
Да, все правильно. Надо перебирать все последовательными вызовами CryptGetProvParam.