30.10.2006 8:43:25Дополнительный поиск секретного ключа в реестре. Ответов: 8
AleKo
Добрый день.

Когда устанавливал сертификат то указывал контейнер на дискете. Далее мной контейнер был скопирован в реестр средствами КриптоПРО CSP 2.0. При попытке расшифровать сообщение функцией CryptDecryptMessage появляется интерфейс для выбора контейнера на дискете и только.

Каким образом можно задать место поиска секретного ключа в реестре?

Если связать контейнер в реестре и сертификат в хранилище такой ситуации не возникает.
 
Ответы:
30.10.2006 10:44:56Kirill Sobolev
CryptDecryptMessage работает не с контейнерами а с сертификатами. Соответственно, контейнер будет использован тот на который ссылается найденный сертификат. Если Вам нужно работать именно с контейнерами, то используйте функции более низкого уровня.
30.10.2006 11:12:04AleKo
А такой вариант.

При вызове CryptAcquireContext я укажу контейнер в реестре. При дешифровании это ключ сработает с найденным сертификатом?
30.10.2006 11:21:58Kirill Sobolev
Нет - как Вы укажете CryptDecryptMessage что надо использовать именно этот контейнер?
30.10.2006 14:02:27AleKo
Сначало получаем кортекст криптопровайдера с указанем контейнера, затем получаем контекст хранилища где искать сертификаты с использованием контекста провайдера, контекст хранилища ставим в структуру которая подставляется в CryptDecryptMessage, кажется первый параметр.
30.10.2006 14:35:46Kirill Sobolev
Нет, хэндл переданный в CertOpenSystemStore на это не повлияет.
31.10.2006 1:53:25AleKo
А могу я ручками поменять связку криптоконтейнер - сертификат (место расположения Private Key), и какими средствами она меняется?
31.10.2006 10:03:31Kirill Sobolev
Конечно
http://www.cryptopro.ru/cryptopro/forum/view.asp?q=81
31.10.2006 10:22:48AleKo
Ок. Спасибо. Схема понятна.