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

Уведомление

Icon
Error

4 Страницы<1234>
Опции
К последнему сообщению К первому непрочитанному
Offline amars  
#21 Оставлено : 17 октября 2016 г. 12:04:16(UTC)
amars

Статус: Участник

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

а под .net нет исправлений я так понял...

у меня есть такой код:

......
const int PKCS12_NO_PERSIST_KEY = 0x00008000;
......
public static X509Certificate2[] Read(string filename, string password)
{

FileStream stream = new FileStream(filename, FileMode.Open);
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, buffer.Length);
stream.Close();


CRYPT_DATA_BLOB cryptdata = new CRYPT_DATA_BLOB();
cryptdata.cbData = buffer.Length;
cryptdata.pbData = Marshal.AllocHGlobal(cryptdata.cbData);
Marshal.Copy(buffer, 0, cryptdata.pbData, buffer.Length);

IntPtr hMemStore = PFXImportCertStore(ref cryptdata, password, PKCS12_NO_PERSIST_KEY);
Marshal.FreeHGlobal(cryptdata.pbData);

uint provinfosize = 0;

List<X509Certificate2> certs = new List<X509Certificate2>();

IntPtr certHandle = IntPtr.Zero;
while ((certHandle = CryptoApi.CertEnumCertificatesInStore(hMemStore, certHandle)) != IntPtr.Zero)
{

if (CertGetCertificateContextProperty(certHandle, CERT_KEY_PROV_INFO_PROP_ID, IntPtr.Zero, ref provinfosize))
{

IntPtr info = Marshal.AllocHGlobal((int)provinfosize);

if (CertGetCertificateContextProperty(certHandle, CERT_KEY_PROV_INFO_PROP_ID, info, ref provinfosize))
{
var certData = new X509Certificate2(certHandle).Export(X509ContentType.SerializedCert);
certs.Add(new X509Certificate2(certData));
}
Marshal.FreeHGlobal(info);

}
}

Marshal.FreeHGlobal(hMemStore);
return certs.ToArray();

}

у меня hmemstore == 0,
что у меня не так?
Offline amars  
#22 Оставлено : 17 октября 2016 г. 12:05:59(UTC)
amars

Статус: Участник

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

версия 3.9.8481
Offline Максим Коллегин  
#23 Оставлено : 18 октября 2016 г. 14:00:36(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 32 раз
Поблагодарили: 706 раз в 614 постах
Изменения по PKCS12_NO_PERSIST_KEY не успели войти в эту сборку.
Выложил новую.

Отредактировано пользователем 18 октября 2016 г. 14:01:28(UTC)  | Причина: Не указана

Знания в базе знаний, поддержка в техподдержке
Offline amars  
#24 Оставлено : 19 октября 2016 г. 11:31:07(UTC)
amars

Статус: Участник

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

а для .net планируются изменения? X509KeyStorageFlags.PersistKeySet?
Offline amars  
#25 Оставлено : 19 октября 2016 г. 13:14:37(UTC)
amars

Статус: Участник

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

X509KeyStorageFlags.PersistKeySet - означает что ключ, связанный с PFX-файлом, сохраняется при импорте сертификата.
источник
https://msdn.microsoft.c...rageflags(v=vs.110).aspx


PKCS12_NO_PERSIST_KEY - означает не сохранять ключи!!!!
источник
https://msdn.microsoft.c...p/aa387314(v=vs.85).aspx

вы меня совсем запутали

в общем итог таков что PKCS12_NO_PERSIST_KEY импортирует pfx в хранилище без ключей которые мы импортируем.

окно запроса пароля убрано и сертификат в памяти есть. это исправлено.

но результата нет, это не то, что нам нужно.

нам нужно как в случае с X509KeyStorageFlags.PersistKeySet - сохранять ключ, но брать его из файла без окна запроса

Offline Максим Коллегин  
#26 Оставлено : 19 октября 2016 г. 13:31:48(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 32 раз
Поблагодарили: 706 раз в 614 постах
Стоп, Persitkey будет запрашивать местоположение создаваемого контейнера и пароль на него. Первое можно отключить, оставив один считыватели ( реестр ). Второе - использовав silent режим.
Я же предложил Вам импортировать ключ непосредственно перед работой с ним во временный контекст, а хранить в pfx.
Знания в базе знаний, поддержка в техподдержке
Offline amars  
#27 Оставлено : 19 октября 2016 г. 15:03:02(UTC)
amars

Статус: Участник

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

я не совсем понял, что вы сказали.
можете привести пример как надо делать?
Offline amars  
#28 Оставлено : 19 октября 2016 г. 15:56:17(UTC)
amars

Статус: Участник

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

вы говорили что нет тихого режима
а то что вы предложили я вроде так и сделал
Offline amars  
#29 Оставлено : 19 октября 2016 г. 16:16:57(UTC)
amars

Статус: Участник

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

использовал PKCS12_IMPORT_SILENT. вроде все прошло хорошо. доработка получается была по тому флагу?

Отредактировано пользователем 19 октября 2016 г. 16:17:27(UTC)  | Причина: Не указана

Offline Максим Коллегин  
#30 Оставлено : 20 октября 2016 г. 0:15:36(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 32 раз
Поблагодарили: 706 раз в 614 постах
По флагу not persist
Знания в базе знаний, поддержка в техподдержке
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
4 Страницы<1234>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.