Статус: Активный участник
Группы: Участники
Зарегистрирован: 03.05.2012(UTC) Сообщений: 171 Откуда: Екатеринбург
Сказал(а) «Спасибо»: 46 раз Поблагодарили: 23 раз в 19 постах
|
Добрый день. Проблема следующая. Есть код, выполняющийся на сервере, обращается к контейнеру Криптопро, на токене или в регистри-на результат не влияет там присутствует вызов CertSetCertificateContextProperty(CERT_KEY_PROV_INFO_PROP_ID) Все прекрасно работает в среде .Net framework 4.6 (4.7 тоже проверено) Портировали код на .Net Core 2. все прекрасно работает до некоторых пор, затем с носителя бесследно исчезает ключевой контейнер. Проблема была локализована - вызов этой функции, ориентировочно на 900-й раз. Происходит удаление контейнера с носителя. Написан код (в аттаче), который 100% воспроизводит проблему как на серверных платформах, так и на 7/8/10. Проверено на CSP 4.0 R3,R4 Просьба по возможности помочь разобраться, что мы делаем не так.  csp-error-projects.zip (8kb) загружен 14 раз(а).
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,399  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,399  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
Попробовал 5.0 R0 и 4.0 R4 на Windows 10 - не воспроизводится. Какие еще криптографические приложения установлены? Отредактировано пользователем 15 июля 2019 г. 13:03:36(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,399  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,399  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
Это проделки .NET Core: https://github.com/dotne...ws/Native/SafeHandles.csКод:
internal sealed class SafeCertContextHandleWithKeyContainerDeletion : SafeCertContextHandle
{
protected sealed override bool ReleaseHandle()
{
using (SafeCertContextHandle certContext = Interop.crypt32.CertDuplicateCertificateContext(handle))
{
DeleteKeyContainer(certContext);
}
base.ReleaseHandle();
return true;
}
Отредактировано пользователем 15 июля 2019 г. 13:30:39(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,399  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
К этому вызову приводит уродливый конструктор Код: public X509Certificate(byte[] data)
{
if (data != null && data.Length != 0)
{
// For compat reasons, this constructor treats passing a null or empty data set as the same as calling the nullary constructor.
using (var safePasswordHandle = new SafePasswordHandle((string)null))
{
Pal = CertificatePal.FromBlob(data, safePasswordHandle, X509KeyStorageFlags.DefaultKeySet);
}
}
}
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,399  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
Проблему можно обойти, вызвав конструктор вот так: Код:var certificate = new X509Certificate2(certResult, new System.Security.SecureString(), X509KeyStorageFlags.PersistKeySet);
Отредактировано пользователем 15 июля 2019 г. 13:44:59(UTC)
| Причина: Не указана |
|
 1 пользователь поблагодарил Максим Коллегин за этот пост.
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 03.05.2012(UTC) Сообщений: 171 Откуда: Екатеринбург
Сказал(а) «Спасибо»: 46 раз Поблагодарили: 23 раз в 19 постах
|
Автор: Максим Коллегин  Проблему можно обойти, вызвав конструктор вот так: Код:var certificate = new X509Certificate2(certResult, new System.Security.SecureString(), X509KeyStorageFlags.PersistKeySet);
Спасибо! Сохраним в нашу базу знаний :)
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 01.08.2019(UTC) Сообщений: 2
Сказал(а) «Спасибо»: 1 раз
|
Автор: cross  у вас случайно нет какой-то хотя бы минимальной инфы как поднять ваш форк чтобы потестировать?
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close