01.06.2005 12:44:51createkeyfromcsp и хранилище локальной машины Ответов: 9
Виталий
msxml5, метод createkeyfromcsp, при работе с сертификатом в хранилище LocalMachine и ключом в реестре - выскакивает окно типа "отсутствует носитель в приводе Registry" ?! - соответственно доступа к ключу не происходит. Есть предположения, тестировался ли такой вариант?
Заранее спасибо!
 
Ответы:
01.06.2005 18:13:14maxdm
Вроде проблем быть не должно. Можно взглянуть на кусочек кода?
02.06.2005 11:59:08Виталий
pKey = xmldsig.createKeyFromCSP(csProvider/*75*/, "", cert.PrivateKey.ContainerName, 0);
cert - из локального хранилища машины
02.06.2005 13:44:16maxdm
createKeyFromCertContext в случае правильно установленной сслыки на ключ предпочтительнее, да и проще.
А в createKeyFromCSP есть параметр flags, и что-то мне подсказывает, что если передать в нем CRYPT_MACHINE_KEYSET, то должно заработать.
02.06.2005 13:56:56maxdm
Хотя, возможно, что MSXML вообще не умеет работать с хранилищем локальной машины.
02.06.2005 14:07:02maxdm
Проверил - не умеет.
02.06.2005 17:21:02Виталий
резюме какое - поставить xml-подпись невозможно, используя локальное хранилище машины?
02.06.2005 19:19:18maxdm
Средствами MSXML - ДА.
02.06.2005 22:52:21Виталий
Стандартный провайдер (ms rsa) работает... Наверное в случае с cryptopro достойная альтернатива брать сертификат (и ключ) из файла. Посоветуйте "правильный" пример плиз (хранилище пользователя не подходит)!
03.06.2005 11:49:27maxdm
В моих примерах MS Base провайдер также не работает из LOCAL_MACHINE. Во всяком случае этот вызов возвращает NULL: pKey = xmldsig->createKeyFromCertContext ((void *)pContext);