Статус: Участник
Группы: Участники
Зарегистрирован: 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, что у меня не так?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.09.2016(UTC) Сообщений: 23
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,399  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.09.2016(UTC) Сообщений: 23
|
а для .net планируются изменения? X509KeyStorageFlags.PersistKeySet?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.09.2016(UTC) Сообщений: 23
|
X509KeyStorageFlags.PersistKeySet - означает что ключ, связанный с PFX-файлом, сохраняется при импорте сертификата. источник https://msdn.microsoft.c...rageflags(v=vs.110).aspxPKCS12_NO_PERSIST_KEY - означает не сохранять ключи!!!! источник https://msdn.microsoft.c...p/aa387314(v=vs.85).aspxвы меня совсем запутали в общем итог таков что PKCS12_NO_PERSIST_KEY импортирует pfx в хранилище без ключей которые мы импортируем. окно запроса пароля убрано и сертификат в памяти есть. это исправлено. но результата нет, это не то, что нам нужно. нам нужно как в случае с X509KeyStorageFlags.PersistKeySet - сохранять ключ, но брать его из файла без окна запроса
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,399  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
Стоп, Persitkey будет запрашивать местоположение создаваемого контейнера и пароль на него. Первое можно отключить, оставив один считыватели ( реестр ). Второе - использовав silent режим. Я же предложил Вам импортировать ключ непосредственно перед работой с ним во временный контекст, а хранить в pfx. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.09.2016(UTC) Сообщений: 23
|
я не совсем понял, что вы сказали. можете привести пример как надо делать?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.09.2016(UTC) Сообщений: 23
|
вы говорили что нет тихого режима а то что вы предложили я вроде так и сделал
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.09.2016(UTC) Сообщений: 23
|
использовал PKCS12_IMPORT_SILENT. вроде все прошло хорошо. доработка получается была по тому флагу? Отредактировано пользователем 19 октября 2016 г. 16:17:27(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,399  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close