Статус: Новичок
Группы: Участники
Зарегистрирован: 19.08.2008(UTC) Сообщений: 6 Откуда: Москва
|
Добрый день! Есть код: Код:
CspParameters par = new CspParameters(75, null, _SourceContainer);
Gost3410CryptoServiceProvider destCont = new Gost3410CryptoServiceProvider(par);
..........
_SourceContainer - это строка с именем ключевого контейнера. При запуске данного кода на Windows XP SP2 в виде исполняемого модуля (exe-шника) и в виде службы Windows все корректно обрабатывается. При запуске на Windows 2003 R2 SP2 в качестве исполняемого модуля все работает. Но если этот же код запустить в виде windows-службы, возникает исключение во второй строке "Неправильный параметр набора ключей". Подскажите в какую сторону копать. Спасибо.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.12.2007(UTC) Сообщений: 390 Откуда: КриптоПро Поблагодарили: 2 раз в 2 постах
|
Какой CSP используется? Сообщите пожалуйста полный номер версии. |
С уважением, Александр. |
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 19.08.2008(UTC) Сообщений: 6 Откуда: Москва
|
Крипто Про 3.0 SP3 (КС1 3.0.3300.3) версия Sharpei 1.0.3124.0
Ключевой контейнер прописан в реестре.
Сейчас был поставлен опыт - удаление из списка считывателей диска 3,5. Описание ошибки: Поставщик не смог выполнить действие, поскольку контекст был получен как "тихий".
После возвратили диск 3,5 и перепрописали ключевой контейнер на диск 3,5 и заново связали с сертификатом - ошибка вернулась: Неправильный параметр набора ключей
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.04.2008(UTC) Сообщений: 519 Откуда: Крипто-Про
|
Akinak написал:Неправильный параметр набора ключей Попробуйте установить сертификат с привязкой к контейнеру в локальное хранилище компьютера. Для этого: Сервис->Установить личный сертификат-> при выборе ключевого контейнера установите Введенное имя задает ключевой контейнер: -Компьютера. Отредактировано пользователем 9 сентября 2008 г. 14:18:41(UTC)
| Причина: Не указана
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 19.08.2008(UTC) Сообщений: 6 Откуда: Москва
|
Цитата:Попробуйте установить сертификат с привязкой к контейнеру в локальное хранилище компьютера. Для этого: Сервис->Установить личный сертификат-> при выборе ключевого контейнера установите Введенное имя задает ключевой контейнер: -Компьютера. Сертификат уже находится в локальном хранилище, в личных сертификатах и привязан к контейнеру.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.04.2008(UTC) Сообщений: 519 Откуда: Крипто-Про
|
В личном хранилище -Компьютера или -Пользователя? mmc->Консоль->Добавить или удалить остнастку->Сертификаты
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 19.08.2008(UTC) Сообщений: 6 Откуда: Москва
|
Цитата:В личном хранилище -Компьютера или -Пользователя? mmc->Консоль->Добавить или удалить остнастку->Сертификаты К сожалению попробовал и так и так. Эффект одинаковый. У меня подозрение, что возможно создается какая-нибудь форма, чего в службе делать нельзя. PS. Опыты на Windows XP показали, что там тожу служба не работает. Извините за ошибку в первом посте.
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 19.08.2008(UTC) Сообщений: 6 Откуда: Москва
|
Проблема частично решилась, если хранить сертификат и ключевой контейнер в хранилище пользователя и запускать службу от имени данного пользователя - то все работает. Теперь вопрос заключается в следующем, как считать ключевую информациюю из хранилища компьютера с помощью Sharpey? Код:
CspParameters par = new CspParameters(75, null, "Keys");
Gost3410CryptoServiceProvider.UseMachineKeyStore = true;
Gost3410CryptoServiceProvider destCont = new Gost3410CryptoServiceProvider(par);
Данный код, если ключи находятся в хранилище компьтера, никаких ключей не находит. Хотя в реестре есть ключи с таким именем. В хелпе было сказано, что еще можно указать тип хранилища с помощью класса CspParameters, но я не нашел как.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.12.2007(UTC) Сообщений: 390 Откуда: КриптоПро Поблагодарили: 2 раз в 2 постах
|
Установка статического флага MachineKeyStore Код:Gost3410CryptoServiceProvider.UseMachineKeyStore = true;
влияет только на загрузку контейнеров, для которых этот флаг не указан. Например в коде, Код:Gost3410CryptoServiceProvider gost = new Gost3410CryptoServiceProvider();
будет использовано значение статического флага UseMachineKeyStore. В случае, когда передается CspParameters явно, будет использовано значение флага из переданного класса. Так в коде Код:CspParameters par = new CspParameters(75, null, "Keys");
Gost3410CryptoServiceProvider destCont = new Gost3410CryptoServiceProvider(par);
при доступе к контейнеру, будет использовано значение флага из par, которое устанавливается в false в конструкторе, в не зависимости от значения статической переменной Gost3410CryptoServiceProvider.UseMachineKeyStore. Для того, чтобы обратится к ключам из локального хранилища, необходимо установить флаг CspProviderFlags.UseMachineKeyStore для CspParameters. Например в коде, Код:CspParameters par = new CspParameters(75, null, "Keys");
par.Flags |= CspProviderFlags.UseMachineKeyStore;
Gost3410CryptoServiceProvider destCont = new Gost3410CryptoServiceProvider(par);
будет получен контейнер из локального хранилища. |
С уважением, Александр. |
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 19.08.2008(UTC) Сообщений: 6 Откуда: Москва
|
Спасибо, все заработало!!!
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close