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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline mikelneo  
#1 Оставлено : 28 июля 2015 г. 16:31:51(UTC)
mikelneo

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

Группы: Участники
Зарегистрирован: 24.10.2011(UTC)
Сообщений: 40
Откуда: Moscow

Здравствуйте. Используем КриптоПро .Net для шифрования/дешифрования документов.
При дешифровании используется такой код:

var gostCert = (Gost3410CryptoServiceProvider) certificate.PrivateKey;
gostCert.SetContainerPassword(pwd);

// проверка пароля
var info = gostCert.CspKeyContainerInfo;
var cspParams = new CspParameters(info.ProviderType, info.ProviderName, info.KeyContainerName, info.CryptoKeySecurity, pwd);



При обращении к info.CryptoKeySecurity происходит ошибка:
Указан неправильный тип
в System.Security.Cryptography.Utils.GetKeySetSecurityInfo(SafeProvHandle hProv, AccessControlSections accessControlSections)
в System.Security.Cryptography.CspKeyContainerInfo.get_CryptoKeySecurity()


Проверили сертификат через CSP с ним все ок. С чем может быть связана такая ошибка?

Текущая версия КриптоПРО CSP:
версия ядра СКЗИ: 3.6.5365 КС1
версия продукта: 3.6.7777

Текущая версия КриптоПро Net сервер: 1.0.5425.0
Offline Максим Коллегин  
#2 Оставлено : 28 июля 2015 г. 18:55:16(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,433
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 38 раз
Поблагодарили: 737 раз в 634 постах
Значит не умеет с нашим провайдером работать CryptoKeySecurity. А зачем?
Проверить пин можно, выполнив операцию с секретным ключом, - подписать или расшифровать.

Отредактировано пользователем 28 июля 2015 г. 19:02:16(UTC)  | Причина: Не указана

Знания в базе знаний, поддержка в центре поддержки
Offline mikelneo  
#3 Оставлено : 29 июля 2015 г. 17:52:52(UTC)
mikelneo

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

Группы: Участники
Зарегистрирован: 24.10.2011(UTC)
Сообщений: 40
Откуда: Moscow

Приведу полный код проверки пароля. Обращение к CryptoKeySecurity необходимо для задания флага CspProviderFlags.NoPrompt, чтобы если пароль неверный вылетала ошибка, а не открывалась ui окошко с повторным вводом пароля.

Код:
var pwd = new SecureString();
foreach (var pwdChar in password)
pwd.AppendChar(pwdChar);

var gostCert = (Gost3410CryptoServiceProvider) certificate.PrivateKey;
gostCert.SetContainerPassword(pwd);

// проверка пароля
var info = gostCert.CspKeyContainerInfo;
var cspParams = new CspParameters(info.ProviderType, info.ProviderName,
info.KeyContainerName, info.CryptoKeySecurity, pwd);

// окошко с вводом пароля не показываем, так как некому его вводить
cspParams.Flags |= CspProviderFlags.NoPrompt;
using (var gost = new Gost3410CryptoServiceProvider(cspParams))
{
var dummyHash = new byte[32];
// если пароль неверный тут вылетим с ошибкой
gost.SignHash(dummyHash);
}


Если возможно это как-то сделать без обращения к CryptoKeySecurity, было бы отлично.
Offline Максим Коллегин  
#4 Оставлено : 29 июля 2015 г. 18:48:02(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,433
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 38 раз
Поблагодарили: 737 раз в 634 постах
При запуске без прав Администратор имеем, то есть путь в принципе странный.
Additional information: The process does not possess the 'SeSecurityPrivilege' privilege which is required for this operation.
Знания в базе знаний, поддержка в центре поддержки
Offline Максим Коллегин  
#5 Оставлено : 29 июля 2015 г. 19:53:06(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,433
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 38 раз
Поблагодарили: 737 раз в 634 постах
gostCert.SetContainerPassword(pwd) лишнее.
var cspParams = new CspParameters(info.ProviderType, info.ProviderName, info.KeyContainerName, null, pwd);
так вполне работает.
Знания в базе знаний, поддержка в центре поддержки
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.