Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline mrkod  
#1 Оставлено : 26 ноября 2009 г. 20:37:20(UTC)
mrkod

Статус: Новичок

Группы: Участники
Зарегистрирован: 26.11.2009(UTC)
Сообщений: 2

Я провожу подпись данных электронной подписью с использованием сертификата на стороне сервера. Для этого испобльзую классы .Net Framework CmsSigner и SignerInfo. Пример моего кода ниже:
Код:

        public void ServerSign(Certificate aCertificate)
        {
            CspKeyContainerInfo info = ((ICspAsymmetricAlgorithm)aCertificate.PrivateKey).CspKeyContainerInfo;

            SecureString securePass = new SecureString();
            String pass = "def";
            for (int i = 0; i < pass.Length; i++)
            {
                securePass.AppendChar(pass[i]);
            }

            CspParameters pars = new CspParameters(info.ProviderType, info.ProviderName, info.KeyContainerName); 

            pars.Flags = CspProviderFlags.NoPrompt;
            pars.KeyPassword = securePass;

            Gost3410CryptoServiceProvider prov = new Gost3410CryptoServiceProvider(pars);

            CmsSigner cmsSigner = new CmsSigner(aCertificate.CertificateHolder);
            if (null == _userSign)
            {
                throw new ApplicationException("Отсутствует подпись пользователя");
            }

            //  _userSign - объект SignerInfo

            _userSign.ComputeCounterSignature(cmsSigner);  // Тут появляется окно ввода пароля доступа к ключевому контейнеру
           

            // После подписи со стороны сервера переопределяем объект подпись пользователя
            _userSign = _cms.SignerInfos[0];
            if (_userSign.CounterSignerInfos.Count > 0)
            {
                _serverSign = _cms.SignerInfos[0].CounterSignerInfos[0];
            }

        }


Для хранения приватного ключа сертификата в качестве ключевого контейнера используется реестр. Версия КриптоПро CSP 3.6. Версия Sharpei 1.0.3518.00

Данный код выполяется от имени пользователя Network Service и при выполнении на ос win2003 окно пароль доступа к ключевому контейнеру кэшируется и подпись производится нормально.

Если код выполнять на машине с ос win2008 окно ввода пароля появляется и по истечении времени ожидания получаем ошибку подписи.

Собственно вопросов 2:
1. Что сделать чтобы на win2008 пользователь окно пароля не видел?
2. После успешного обращения к ключевому контейнеру так же выводится оконко "Обращение выполнено успешно" и висит заданное время ожидания, что не есть гуд. Есть ли способ отключить пользовательский интерфейс при программном обращении к ключевому контейнеру?
Offline Челпанов А.  
#2 Оставлено : 26 ноября 2009 г. 20:46:44(UTC)
Челпанов А.

Статус: Активный участник

Группы готовые для захвата: Участники
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 390
Мужчина
Откуда: КриптоПро

Поблагодарили: 2 раз в 2 постах
1. О различных вариантах "тихого" ввода пароля можно почитать в моем посте от 29 октября 2009 г. 17:00:10
2. Для того, чтобы не появлялось окно "Обращение выполнено успешно", при генерации ключа не устанавливайте галочку "Включить усиленную защиту закрытого ключа".
С уважением, Александр.
Offline mrkod  
#3 Оставлено : 26 ноября 2009 г. 21:14:43(UTC)
mrkod

Статус: Новичок

Группы: Участники
Зарегистрирован: 26.11.2009(UTC)
Сообщений: 2

1. Да, этот пост читал, собственно по 3-ему варианту и пошел. В новой версии Sharpei SDK (от 5 ноября) нашел функцию SetContainerPassword у класса Gost3410CryptoServiceProvider. Можно маленький примерчик её использования?
2. Спасибо, проверю )
Offline Челпанов А.  
#4 Оставлено : 27 ноября 2009 г. 15:48:51(UTC)
Челпанов А.

Статус: Активный участник

Группы готовые для захвата: Участники
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 390
Мужчина
Откуда: КриптоПро

Поблагодарили: 2 раз в 2 постах
Цитата:
1. Да, этот пост читал, собственно по 3-ему варианту и пошел. В новой версии Sharpei SDK (от 5 ноября) нашел функцию SetContainerPassword у класса Gost3410CryptoServiceProvider. Можно маленький примерчик её использования?
Именно маленький примерчик на 4 строки там есть. Напишите что не понятно.
С уважением, Александр.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.