Atom Лента - Форум КриптоПро - Тема:вызов CertSetCertificateContextProperty в .NET Core 2 - 10Форум КриптоПро - Atom Лентаurn:https:--www-cryptopro-ru:AtomLenta:ForumKriptoPro:Tema:vyzovCertSetCertificateContextPropertyv.NETCore2-10:1Copyright 2024 Форум КриптоПро2024-03-29T01:29:33Zhttps://www.cryptopro.ru/forum2/Images/YAFLogo.pngForum Adminhttps://www.cryptopro.ruforum@cryptopro.ruАнатолий Беляевhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=2008&name=Анатолий БеляевАнатолий Беляевhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=2008&name=Анатолий Беляевgolinskihttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=53633&name=golinskiЕвгений Пономаренкоhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=22787&name=Евгений ПономаренкоАнатолий Беляевhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=2008&name=Анатолий БеляевМаксим Коллегинhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=3&name=Максим КоллегинМаксим Коллегинhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=3&name=Максим КоллегинМаксим Коллегинhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=3&name=Максим КоллегинМаксим Коллегинhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=3&name=Максим КоллегинМаксим Коллегинhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=3&name=Максим КоллегинМаксим Коллегинhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=3&name=Максим КоллегинYetAnotherForum.NETurn:https:--www-cryptopro-ru:ftPosts:st1:meid105530:1вызов CertSetCertificateContextProperty в .NET Core 2<table class="content postContainer_Alt" width="100%"><tr><td>Пока только через сборку у вас на машине. <br />1. Собираете форк согласно инструкции указанной на github<br />2. Узнаете версию пакета которую он выставил у вас при сборке - (лежит по пути ./artifacts/packages/Debug/runtime.osx-x64.Microsoft.Private.CoreFx.NETCoreApp.4.6.0-dev.19372.1.nupkg )<br />3. в proj файле пишите (путь к рантайму согласно вашей платформе)<br /><div class="quote"><span class="quotetitle">Цитата:</span><blockquote><br /><Project Sdk="Microsoft.NET.Sdk"><br /><br /><ItemGroup><br /> <PackageReference Include="Microsoft.Private.CoreFx.NETCoreApp" Version="4.6.0-dev.19372.1" /><br /></ItemGroup><br /> <PropertyGroup><br /> <OutputType>Exe</OutputType><br /> <PackageConflictPreferredPackages><br /> Microsoft.Private.CoreFx.NETCoreApp;runtime.osx-x64.Microsoft.Private.CoreFx.NETCoreApp;$(PackageConflictPreferredPackages)<br /> </PackageConflictPreferredPackages><br /> <TargetFramework>netcoreapp3.0</TargetFramework><br /> <RuntimeFrameworkVersion>3.0.0-preview5-27626-15</RuntimeFrameworkVersion><br /> <RuntimeIdentifier>osx-x64</RuntimeIdentifier> <!-- make self-contained --><br /> </PropertyGroup><br /></Project><br /></div></div><br /><br />4. Если хотите использовать PKCS то нужно включить штатный пакет от nuget и скопировать ему в кеш вместо его либы ту что собралась у вас<br /><div class="quote"><span class="quotetitle">Цитата:</span><blockquote>cp ./artifacts/bin/runtime/netcoreapp-OSX-Debug-x64/System.Security.Cryptography.Pkcs.dll /Users/cross/.nuget/packages/system.security.cryptography.pkcs/4.6.0-preview6.19303.8/lib/netcoreapp3.0/System.Security.Cryptography.Pkcs.dll</div></div><br /><br />5. После этого dotnet restore, dotnet build. </td></tr></table>2019-08-02T15:05:46+03:002019-08-02T15:05:46+03:00Анатолий Беляев<table class="content postContainer_Alt" width="100%"><tr><td>Пока только через сборку у вас на машине. <br />1. Собираете форк согласно инструкции указанной на github<br />2. Узнаете версию пакета которую он выставил у вас при сборке - (лежит по пути ./artifacts/packages/Debug/runtime.osx-x64.Microsoft.Private.CoreFx.NETCoreApp.4.6.0-dev.19372.1.nupkg )<br />3. в proj файле пишите (путь к рантайму согласно вашей платформе)<br /><div class="quote"><span class="quotetitle">Цитата:</span><blockquote><br /><Project Sdk="Microsoft.NET.Sdk"><br /><br /><ItemGroup><br /> <PackageReference Include="Microsoft.Private.CoreFx.NETCoreApp" Version="4.6.0-dev.19372.1" /><br /></ItemGroup><br /> <PropertyGroup><br /> <OutputType>Exe</OutputType><br /> <PackageConflictPreferredPackages><br /> Microsoft.Private.CoreFx.NETCoreApp;runtime.osx-x64.Microsoft.Private.CoreFx.NETCoreApp;$(PackageConflictPreferredPackages)<br /> </PackageConflictPreferredPackages><br /> <TargetFramework>netcoreapp3.0</TargetFramework><br /> <RuntimeFrameworkVersion>3.0.0-preview5-27626-15</RuntimeFrameworkVersion><br /> <RuntimeIdentifier>osx-x64</RuntimeIdentifier> <!-- make self-contained --><br /> </PropertyGroup><br /></Project><br /></div></div><br /><br />4. Если хотите использовать PKCS то нужно включить штатный пакет от nuget и скопировать ему в кеш вместо его либы ту что собралась у вас<br /><div class="quote"><span class="quotetitle">Цитата:</span><blockquote>cp ./artifacts/bin/runtime/netcoreapp-OSX-Debug-x64/System.Security.Cryptography.Pkcs.dll /Users/cross/.nuget/packages/system.security.cryptography.pkcs/4.6.0-preview6.19303.8/lib/netcoreapp3.0/System.Security.Cryptography.Pkcs.dll</div></div><br /><br />5. После этого dotnet restore, dotnet build. </td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid105503:1вызов CertSetCertificateContextProperty в .NET Core 2<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: cross <a href="/forum2/default.aspx?g=posts&m=104963#post104963"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Еще можно посмотреть на наш форк CoreFx c поддержкой ГОСТ уже на уровне .NET кода. <a rel="nofollow" href="https://github.com/CryptoProLLC/corefx" title="https://github.com/CryptoProLLC/corefx">https://github.com/CryptoProLLC/corefx</a></div></div><br />у вас случайно нет какой-то хотя бы минимальной инфы как поднять ваш форк чтобы потестировать?</td></tr></table>2019-08-01T17:40:11+03:002019-08-01T17:40:11+03:00golinski<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: cross <a href="/forum2/default.aspx?g=posts&m=104963#post104963"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Еще можно посмотреть на наш форк CoreFx c поддержкой ГОСТ уже на уровне .NET кода. <a rel="nofollow" href="https://github.com/CryptoProLLC/corefx" title="https://github.com/CryptoProLLC/corefx">https://github.com/CryptoProLLC/corefx</a></div></div><br />у вас случайно нет какой-то хотя бы минимальной инфы как поднять ваш форк чтобы потестировать?</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid105241:1вызов CertSetCertificateContextProperty в .NET Core 2<table class="content postContainer_Alt" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Максим Коллегин <a href="/forum2/default.aspx?g=posts&m=104935#post104935"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Проблему можно обойти, вызвав конструктор вот так:<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-csharp">var certificate = new X509Certificate2(certResult, new System.Security.SecureString(), X509KeyStorageFlags.PersistKeySet);</code></pre>
</div></div></div></div><br /><br />Спасибо! Сохраним в нашу базу знаний :)</td></tr></table>2019-07-24T07:36:00+03:002019-07-24T07:36:00+03:00Евгений Пономаренко<table class="content postContainer_Alt" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Максим Коллегин <a href="/forum2/default.aspx?g=posts&m=104935#post104935"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Проблему можно обойти, вызвав конструктор вот так:<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-csharp">var certificate = new X509Certificate2(certResult, new System.Security.SecureString(), X509KeyStorageFlags.PersistKeySet);</code></pre>
</div></div></div></div><br /><br />Спасибо! Сохраним в нашу базу знаний :)</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid104963:1вызов CertSetCertificateContextProperty в .NET Core 2<table class="content postContainer" width="100%"><tr><td>Еще можно посмотреть на наш форк CoreFx c поддержкой ГОСТ уже на уровне .NET кода. <a rel="nofollow" href="https://github.com/CryptoProLLC/corefx" title="https://github.com/CryptoProLLC/corefx">https://github.com/CryptoProLLC/corefx</a></td></tr></table>2019-07-16T10:58:42+03:002019-07-16T10:58:42+03:00Анатолий Беляев<table class="content postContainer" width="100%"><tr><td>Еще можно посмотреть на наш форк CoreFx c поддержкой ГОСТ уже на уровне .NET кода. <a rel="nofollow" href="https://github.com/CryptoProLLC/corefx" title="https://github.com/CryptoProLLC/corefx">https://github.com/CryptoProLLC/corefx</a></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid104935:1вызов CertSetCertificateContextProperty в .NET Core 2<table class="content postContainer_Alt" width="100%"><tr><td>Проблему можно обойти, вызвав конструктор вот так:<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-csharp">var certificate = new X509Certificate2(certResult, new System.Security.SecureString(), X509KeyStorageFlags.PersistKeySet);</code></pre>
</div></div></td></tr></table>2019-07-15T13:44:59+03:002019-07-15T13:44:59+03:00Максим Коллегин<table class="content postContainer_Alt" width="100%"><tr><td>Проблему можно обойти, вызвав конструктор вот так:<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-csharp">var certificate = new X509Certificate2(certResult, new System.Security.SecureString(), X509KeyStorageFlags.PersistKeySet);</code></pre>
</div></div></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid104934:1вызов CertSetCertificateContextProperty в .NET Core 2<table class="content postContainer" width="100%"><tr><td>К этому вызову приводит уродливый конструктор<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-csharp"> 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);
}
}
}</code></pre>
</div></div></td></tr></table>2019-07-15T13:40:20+03:002019-07-15T13:40:20+03:00Максим Коллегин<table class="content postContainer" width="100%"><tr><td>К этому вызову приводит уродливый конструктор<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-csharp"> 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);
}
}
}</code></pre>
</div></div></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid104933:1вызов CertSetCertificateContextProperty в .NET Core 2<table class="content postContainer_Alt" width="100%"><tr><td>Это проделки .NET Core:<br /><a rel="nofollow" href="https://github.com/dotnet/corefx/blob/96f782f1cededf1528510f4ddfb5721a056d68b5/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Windows/Native/SafeHandles.cs" title="https://github.com/dotnet/corefx/blob/96f782f1cededf1528510f4ddfb5721a056d68b5/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Windows/Native/SafeHandles.cs">https://github.com/dotne...ws/Native/SafeHandles.cs</a><br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-csharp">
internal sealed class SafeCertContextHandleWithKeyContainerDeletion : SafeCertContextHandle
{
protected sealed override bool ReleaseHandle()
{
using (SafeCertContextHandle certContext = Interop.crypt32.CertDuplicateCertificateContext(handle))
{
DeleteKeyContainer(certContext);
}
base.ReleaseHandle();
return true;
}
</code></pre>
</div></div></td></tr></table>2019-07-15T13:30:39+03:002019-07-15T13:30:39+03:00Максим Коллегин<table class="content postContainer_Alt" width="100%"><tr><td>Это проделки .NET Core:<br /><a rel="nofollow" href="https://github.com/dotnet/corefx/blob/96f782f1cededf1528510f4ddfb5721a056d68b5/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Windows/Native/SafeHandles.cs" title="https://github.com/dotnet/corefx/blob/96f782f1cededf1528510f4ddfb5721a056d68b5/src/System.Security.Cryptography.X509Certificates/src/Internal/Cryptography/Pal.Windows/Native/SafeHandles.cs">https://github.com/dotne...ws/Native/SafeHandles.cs</a><br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-csharp">
internal sealed class SafeCertContextHandleWithKeyContainerDeletion : SafeCertContextHandle
{
protected sealed override bool ReleaseHandle()
{
using (SafeCertContextHandle certContext = Interop.crypt32.CertDuplicateCertificateContext(handle))
{
DeleteKeyContainer(certContext);
}
base.ReleaseHandle();
return true;
}
</code></pre>
</div></div></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid104932:1вызов CertSetCertificateContextProperty в .NET Core 2<table class="content postContainer" width="100%"><tr><td>Поторопился, на 1856 итерации исчез.</td></tr></table>2019-07-15T13:06:38+03:002019-07-15T13:06:38+03:00Максим Коллегин<table class="content postContainer" width="100%"><tr><td>Поторопился, на 1856 итерации исчез.</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid104931:1вызов CertSetCertificateContextProperty в .NET Core 2<table class="content postContainer_Alt" width="100%"><tr><td>Попробовал 5.0 R0 и 4.0 R4 на Windows 10 - не воспроизводится.<br />Какие еще криптографические приложения установлены?</td></tr></table>2019-07-15T13:03:36+03:002019-07-15T13:03:36+03:00Максим Коллегин<table class="content postContainer_Alt" width="100%"><tr><td>Попробовал 5.0 R0 и 4.0 R4 на Windows 10 - не воспроизводится.<br />Какие еще криптографические приложения установлены?</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid104929:1вызов CertSetCertificateContextProperty в .NET Core 2<table class="content postContainer" width="100%"><tr><td> Постараемся разобраться.</td></tr></table>2019-07-15T12:52:44+03:002019-07-15T12:52:44+03:00Максим Коллегин<table class="content postContainer" width="100%"><tr><td> Постараемся разобраться.</td></tr></table>