Статус: Новичок
Группы: Участники
Зарегистрирован: 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. После успешного обращения к ключевому контейнеру так же выводится оконко "Обращение выполнено успешно" и висит заданное время ожидания, что не есть гуд. Есть ли способ отключить пользовательский интерфейс при программном обращении к ключевому контейнеру?
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.12.2007(UTC) Сообщений: 390 Откуда: КриптоПро Поблагодарили: 2 раз в 2 постах
|
1. О различных вариантах "тихого" ввода пароля можно почитать в моем посте от 29 октября 2009 г. 17:00:10 2. Для того, чтобы не появлялось окно "Обращение выполнено успешно", при генерации ключа не устанавливайте галочку "Включить усиленную защиту закрытого ключа". |
С уважением, Александр. |
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 26.11.2009(UTC) Сообщений: 2
|
1. Да, этот пост читал, собственно по 3-ему варианту и пошел. В новой версии Sharpei SDK (от 5 ноября) нашел функцию SetContainerPassword у класса Gost3410CryptoServiceProvider. Можно маленький примерчик её использования? 2. Спасибо, проверю )
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.12.2007(UTC) Сообщений: 390 Откуда: КриптоПро Поблагодарили: 2 раз в 2 постах
|
Цитата:1. Да, этот пост читал, собственно по 3-ему варианту и пошел. В новой версии Sharpei SDK (от 5 ноября) нашел функцию SetContainerPassword у класса Gost3410CryptoServiceProvider. Можно маленький примерчик её использования? Именно маленький примерчик на 4 строки там есть. Напишите что не понятно. |
С уважением, Александр. |
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close