Atom Лента - Форум КриптоПро - Тема:Окно ввода пароля на ключевой контейнер - 10Форум КриптоПро - Atom Лентаurn:https:--www-cryptopro-ru:AtomLenta:ForumKriptoPro:Tema:Oknovvodaparoljanakljuchevojjkontejjner-10:1Copyright 2024 Форум КриптоПро2024-03-28T21:28:37Zhttps://www.cryptopro.ru/forum2/Images/YAFLogo.pngForum Adminhttps://www.cryptopro.ruforum@cryptopro.ruЧелпанов А.https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=26&name=Челпанов А.Челпанов А.https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=26&name=Челпанов А.mrkodhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=2024&name=mrkodЧелпанов А.https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=26&name=Челпанов А.mrkodhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=2024&name=mrkodYetAnotherForum.NETurn:https:--www-cryptopro-ru:ftPosts:st1:meid10165:1Окно ввода пароля на ключевой контейнер<table class="content postContainer_Alt" width="100%"><tr><td><div class="quote"><span class="quotetitle">Цитата:</span><blockquote>1. Да, этот пост читал, собственно по 3-ему варианту и пошел. В новой версии Sharpei SDK (от 5 ноября) нашел функцию SetContainerPassword у класса Gost3410CryptoServiceProvider. Можно маленький примерчик её использования?</div></div>Именно маленький примерчик на 4 строки там есть. Напишите что не понятно.</td></tr></table>2009-11-27T15:48:51+03:002009-11-27T15:48:51+03:00Челпанов А.<table class="content postContainer_Alt" width="100%"><tr><td><div class="quote"><span class="quotetitle">Цитата:</span><blockquote>1. Да, этот пост читал, собственно по 3-ему варианту и пошел. В новой версии Sharpei SDK (от 5 ноября) нашел функцию SetContainerPassword у класса Gost3410CryptoServiceProvider. Можно маленький примерчик её использования?</div></div>Именно маленький примерчик на 4 строки там есть. Напишите что не понятно.</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid10156:1Окно ввода пароля на ключевой контейнер<table class="content postContainer" width="100%"><tr><td>1. Да, этот пост читал, собственно по 3-ему варианту и пошел. В новой версии Sharpei SDK (от 5 ноября) нашел функцию SetContainerPassword у класса Gost3410CryptoServiceProvider. Можно маленький примерчик её использования?<br />2. Спасибо, проверю )</td></tr></table>2009-11-26T21:14:43+03:002009-11-26T21:14:43+03:00mrkod<table class="content postContainer" width="100%"><tr><td>1. Да, этот пост читал, собственно по 3-ему варианту и пошел. В новой версии Sharpei SDK (от 5 ноября) нашел функцию SetContainerPassword у класса Gost3410CryptoServiceProvider. Можно маленький примерчик её использования?<br />2. Спасибо, проверю )</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid10155:1Окно ввода пароля на ключевой контейнер<table class="content postContainer_Alt" width="100%"><tr><td>1. О различных вариантах "тихого" ввода пароля можно почитать <a rel="nofollow" href="http://www.cryptopro.ru/cryptopro/forum2/default.aspx?g=posts&t=1840" title="http://www.cryptopro.ru/cryptopro/forum2/default.aspx?g=posts&t=1840">в моем посте</a> от 29 октября 2009 г. 17:00:10 <br />2. Для того, чтобы не появлялось окно "Обращение выполнено успешно", при генерации ключа не устанавливайте галочку "Включить усиленную защиту закрытого ключа".</td></tr></table>2009-11-26T20:46:44+03:002009-11-26T20:46:44+03:00Челпанов А.<table class="content postContainer_Alt" width="100%"><tr><td>1. О различных вариантах "тихого" ввода пароля можно почитать <a rel="nofollow" href="http://www.cryptopro.ru/cryptopro/forum2/default.aspx?g=posts&t=1840" title="http://www.cryptopro.ru/cryptopro/forum2/default.aspx?g=posts&t=1840">в моем посте</a> от 29 октября 2009 г. 17:00:10 <br />2. Для того, чтобы не появлялось окно "Обращение выполнено успешно", при генерации ключа не устанавливайте галочку "Включить усиленную защиту закрытого ключа".</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid10153:1Окно ввода пароля на ключевой контейнер<table class="content postContainer" width="100%"><tr><td>Я провожу подпись данных электронной подписью с использованием сертификата на стороне сервера. Для этого испобльзую классы .Net Framework CmsSigner и SignerInfo. Пример моего кода ниже:<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-markup">
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];
}
}
</code></pre>
</div></div><br /><br />Для хранения приватного ключа сертификата в качестве ключевого контейнера используется реестр. Версия КриптоПро CSP 3.6. Версия Sharpei 1.0.3518.00<br /><br />Данный код выполяется от имени пользователя Network Service и при выполнении на ос win2003 окно пароль доступа к ключевому контейнеру кэшируется и подпись производится нормально.<br /><br />Если код выполнять на машине с ос win2008 окно ввода пароля появляется и по истечении времени ожидания получаем ошибку подписи.<br /><br />Собственно вопросов 2:<br />1. Что сделать чтобы на win2008 пользователь окно пароля не видел?<br />2. После успешного обращения к ключевому контейнеру так же выводится оконко "Обращение выполнено успешно" и висит заданное время ожидания, что не есть гуд. Есть ли способ отключить пользовательский интерфейс при программном обращении к ключевому контейнеру?</td></tr></table>2009-11-26T20:37:20+03:002009-11-26T20:37:20+03:00mrkod<table class="content postContainer" width="100%"><tr><td>Я провожу подпись данных электронной подписью с использованием сертификата на стороне сервера. Для этого испобльзую классы .Net Framework CmsSigner и SignerInfo. Пример моего кода ниже:<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-markup">
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];
}
}
</code></pre>
</div></div><br /><br />Для хранения приватного ключа сертификата в качестве ключевого контейнера используется реестр. Версия КриптоПро CSP 3.6. Версия Sharpei 1.0.3518.00<br /><br />Данный код выполяется от имени пользователя Network Service и при выполнении на ос win2003 окно пароль доступа к ключевому контейнеру кэшируется и подпись производится нормально.<br /><br />Если код выполнять на машине с ос win2008 окно ввода пароля появляется и по истечении времени ожидания получаем ошибку подписи.<br /><br />Собственно вопросов 2:<br />1. Что сделать чтобы на win2008 пользователь окно пароля не видел?<br />2. После успешного обращения к ключевому контейнеру так же выводится оконко "Обращение выполнено успешно" и висит заданное время ожидания, что не есть гуд. Есть ли способ отключить пользовательский интерфейс при программном обращении к ключевому контейнеру?</td></tr></table>