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

Уведомление

Icon
Error

35 Страницы«<1819202122>»
Опции
К последнему сообщению К первому непрочитанному
Offline LFrolov  
#191 Оставлено : 17 декабря 2021 г. 19:45:49(UTC)
LFrolov

Статус: Новичок

Группы: Участники
Зарегистрирован: 21.08.2020(UTC)
Сообщений: 8
Российская Федерация

Сказал(а) «Спасибо»: 3 раз
Выдает тот же Exception.
А какие требования к клиентской машине?

Использутеся CP CSP 5.0.11455 КС1.
Netcore runtime 3.1.21.30622. Нужно переставлять на 3.1.4?
Debug/Release сборка не могут повлиять?

С сертификатом в хранилище пользователя, все работает. С компьютерным хранилищем проблема, получается:
Код:
cspParams = handle.GetProvParameters();

которое вызывает Advapi32.CryptGetProvParam.
В ms docs
пишут:
Цитата:
Important This API is deprecated. New and existing software should start using Cryptography Next Generation APIs. Microsoft may remove this API in future releases.


Спасибо.
Offline Артём Макаров  
#192 Оставлено : 20 декабря 2021 г. 7:47:41(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 54 раз в 53 постах
Автор: LFrolov Перейти к цитате
Выдает тот же Exception.
А какие требования к клиентской машине?

Использутеся CP CSP 5.0.11455 КС1.
Netcore runtime 3.1.21.30622. Нужно переставлять на 3.1.4?
Debug/Release сборка не могут повлиять?

С сертификатом в хранилище пользователя, все работает. С компьютерным хранилищем проблема, получается:
Код:
cspParams = handle.GetProvParameters();

которое вызывает Advapi32.CryptGetProvParam.
В ms docs
пишут:
Цитата:
Important This API is deprecated. New and existing software should start using Cryptography Next Generation APIs. Microsoft may remove this API in future releases.


Спасибо.


Версию CSP лучше использовать 5.0.11823 и старше, хотя для Windows это менее принципиально.

Требования по SDK описаны в тестовом проекте https://github.com/Crypt...b/master/docs/Windows.md
Если проект собирается, в нём используются классы Gost в main, и он не падает в начале запуска с ошибкой вида "не удаётся найти тип" - дело не в SDK.

Debug/Release не должно влиять.

Ошибка воспроизводится только на конкретном сертификате, или на всех сертификатах из хранилища компьютера? Можете поставить новый (например самоподписанный) сертификат из pfx в хранилище компьютера, выдать права на закрытый ключ и попробовать с ним?
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Артём Макаров за этот пост.
LFrolov оставлено 20.12.2021(UTC)
Offline ZiCold  
#193 Оставлено : 21 декабря 2021 г. 17:50:21(UTC)
ZiCold

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

Группы: Участники
Зарегистрирован: 16.09.2021(UTC)
Сообщений: 24
Российская Федерация

Добрый день!

Оба вопроса связаны с CoreFx. Сделаю их отдельными постами.

Первый вопрос.
Я успешно запустил проект https://github.com/Crypt...DotnetCoreSampleProject, сделав всё по инструкции.
Код выполнился. Показал, что свои же данные подписал.

Теперь я пытаюсь этот проект создать по-другому.
Создаю простое консольное приложение на .Net Core 3.1
Добавляю к нему обе необходимые .dll и устанавливаю тот же NetCoreApp проект. Вот весь текст файла .cproj:

Код:
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <PlatformTarget>x64</PlatformTarget>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.Private.CoreFx.NETCoreApp" Version="4.7.0-dev.21370.1" />
  </ItemGroup>

  <ItemGroup>
    <Reference Include="System.Security.Cryptography.Pkcs">
      <HintPath>E:\Development\C#.Net\Projects Work\CryptoProCoreFx\RunTimeLibs\System.Security.Cryptography.Pkcs.dll</HintPath>
    </Reference>
    <Reference Include="System.Security.Cryptography.Xml">
      <HintPath>E:\Development\C#.Net\Projects Work\CryptoProCoreFx\RunTimeLibs\System.Security.Cryptography.Xml.dll</HintPath>
    </Reference>
  </ItemGroup>

</Project>


И дальше полностью копирую код класса Program из DotNetSampleProject.
При запуске сразу же выдаётся ошибка:
Цитата:
System.TypeLoadException: 'Could not load type 'System.Security.Cryptography.Gost3410_2012_256CryptoServiceProvider' from assembly 'System.Security.Cryptography.Csp, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.'


Куда копать? Я читал в этой теме про замененные .Net Standard библиотеки, но я не вижу каким образом файлы проекта отличаются.

Для справки, файл проекта DotNetSampleProject:

Код:
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
	<RuntimeFrameworkVersion>3.1.3</RuntimeFrameworkVersion>
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
    <!--<RuntimeIdentifier>linux-x64</RuntimeIdentifier>-->
    <!-- make self-contained -->
    <PackageConflictPreferredPackages>Microsoft.Private.CoreFx.NETCoreApp;runtime.win-x64.Microsoft.Private.CoreFx.NETCoreApp;runtime.linux-x64.Microsoft.Private.CoreFx.NETCoreApp;$(PackageConflictPreferredPackages)</PackageConflictPreferredPackages>
  </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="Microsoft.Private.CoreFx.NETCoreApp" Version="4.7.0-dev.20465.1" />
    </ItemGroup>
    <ItemGroup>
      <Reference Include="System.Security.Cryptography.Pkcs">
        <HintPath>E:\Development\C#.Net\Projects Work\CryptoProCoreFx\RunTimeLibs\System.Security.Cryptography.Pkcs.dll</HintPath>
      </Reference>
      <Reference Include="System.Security.Cryptography.Xml">
        <HintPath>E:\Development\C#.Net\Projects Work\CryptoProCoreFx\RunTimeLibs\System.Security.Cryptography.Xml.dll</HintPath>
      </Reference>
    </ItemGroup>
</Project>
Offline ZiCold  
#194 Оставлено : 21 декабря 2021 г. 17:56:21(UTC)
ZiCold

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

Группы: Участники
Зарегистрирован: 16.09.2021(UTC)
Сообщений: 24
Российская Федерация

Второй вопрос.
Он связан с подписями.

У меня есть файлы, которые были подписаны утилитой cryptcp при помощи команды:
Цитата:
cryptcp.x64.exe -signf -f "Шудро_СТК_2022.04.08_(омнис).cer" "Doc_MsgId_13054510_SignedByCryptoPro_CertIncluded"


Проверочная команда
Цитата:
cryptcp.x64.exe -vsignf -f "Шудро_СТК_2022.04.08_(омнис).cer" "Doc_MsgId_13054510_SignedByCryptoPro_CertIncluded"

Показывает верификацию.

Более того, у меня есть подпись этого же файла, созданная при помощи библиотеки Диадока (их реализация документооборота на .Net).
И она тоже проходит проверку утилитой.

А вот DontNetSampleProject напрочь отвергает обе подписи. Проверка производится этим кодом:
Код:
var dir = @"C:\Temp\SignedDocuments";
var file = File.ReadAllBytes(Path.Combine(dir, "Doc_MsgId_13054510_SignedByDiadoc.pdf"));
var sign = File.ReadAllBytes(Path.Combine(dir, "Doc_MsgId_13054510_SignedByDiadoc.pdf.sgn"));
var cert = new X509Certificate2(Path.Combine(dir, "Шудро_СТК_2022.04.08_(омнис).cer"));
var certGostPk = cert.GetGost3410_2012_256PublicKey();
var result = certGostPk.VerifyData(file, sign, HashAlgorithmName.Gost3411_2012_256);


В чем может быть проблема?
Offline two_oceans  
#195 Оставлено : 22 декабря 2021 г. 6:55:12(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Автор: ZiCold Перейти к цитате
В чем может быть проблема?
Скорее всего либо не тот формат подписи (то есть надо проверять другой функцией семейства Verify) либо не тот объект (тут лучше всего отталкиваться от рабочих примеров) либо в подписи нет сертификата (судя по CertIncluded, он все же есть).
Offline Артём Макаров  
#196 Оставлено : 22 декабря 2021 г. 8:28:23(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 54 раз в 53 постах
Автор: ZiCold Перейти к цитате
Второй вопрос.

В чем может быть проблема?


Скорее всего у вас Cms подпись. Смотрите в сторону класса SignedCms.

Цитата:
не вижу каким образом файлы проекта отличаются


Отличаются ровно в строчках с 5 по 9 (строки csproj DotNetSampleProject). В вашем проекте, как видно, эти строки отсутствуют.

Техническую поддержку оказываем тут
Наша база знаний
Offline ZiCold  
#197 Оставлено : 24 декабря 2021 г. 11:24:24(UTC)
ZiCold

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

Группы: Участники
Зарегистрирован: 16.09.2021(UTC)
Сообщений: 24
Российская Федерация

Автор: Артём Макаров Перейти к цитате
Скорее всего у вас Cms подпись. Смотрите в сторону класса SignedCms.

Использовал класс signedCms и всё отработало верно.

Автор: Артём Макаров Перейти к цитате
Отличаются ровно в строчках с 5 по 9 (строки csproj DotNetSampleProject). В вашем проекте, как видно, эти строки отсутствуют.


Действительно, сплоховал я. Нужно было указать проекту на Runtime версии.

Код:
<RuntimeFrameworkVersion>3.1.3</RuntimeFrameworkVersion>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>


Огромное спасибо за ответы!
Offline ZiCold  
#198 Оставлено : 12 января 2022 г. 6:53:51(UTC)
ZiCold

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

Группы: Участники
Зарегистрирован: 16.09.2021(UTC)
Сообщений: 24
Российская Федерация

Добрый день!
Планируется ли переход библиотеки на .Net 5 (или 6 уже)?

Ситуация. Использую функцию
Код:
ContentInfo contentInfo = new ContentInfo(msg);
SignedCms signedCms = new SignedCms(contentInfo, true);
signedCms.CheckSignature(true);

Если использовать библиотеку на .Net 3.1 и запускать её через консольное приложение также 3.1, то всё в порядке.
Если использовать ту же библиотеку, но запускать её с .Net 5, то выдаётся ошибка "signedCms.CheckSignature(true);"
Offline Максим Коллегин  
#199 Оставлено : 12 января 2022 г. 8:20:01(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 31 раз
Поблагодарили: 702 раз в 611 постах
Добрый день. Планируем поддержать .NET 6
Знания в базе знаний, поддержка в техподдержке
Offline ZiCold  
#200 Оставлено : 22 января 2022 г. 17:28:12(UTC)
ZiCold

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

Группы: Участники
Зарегистрирован: 16.09.2021(UTC)
Сообщений: 24
Российская Федерация

Добрый день! Возникла ошибка при попытке запустить приложение WebApi с CoreFx на сервере.

Код:
 System.MissingMethodException: Method not found: 'System.Security.Cryptography.HashAlgorithmName System.Security.Cryptography.HashAlgorithmName.get_Gost3411_2012_256()'.\r\n 
  at Internal.Cryptography.PkcsHelpers.GetDigestAlgorithm(String oidValue, Boolean forVerification)\r\n   at System.Security.Cryptography.Pkcs.SignerInfo.GetDigestAlgorithm() in C:\\projects\\corefx\\src\\System.Security.Cryptography.Pkcs\\src\\System\\Security\\Cryptography\\Pkcs\\SignerInfo.cs:line 737\r\n  
 at System.Security.Cryptography.Pkcs.SignerInfo.PrepareDigest(Boolean compatMode) in C:\\projects\\corefx\\src\\System.Security.Cryptography.Pkcs\\src\\System\\Security\\Cryptography\\Pkcs\\SignerInfo.cs:line 510\r\n 
  at System.Security.Cryptography.Pkcs.SignerInfo.VerifySignature(CmsSignature signatureProcessor, X509Certificate2 certificate, Boolean compatMode) in C:\\projects\\corefx\\src\\System.Security.Cryptography.Pkcs\\src\\System\\Security\\Cryptography\\Pkcs\\SignerInfo.cs:line 698\r\n  
 at System.Security.Cryptography.Pkcs.SignerInfo.Verify(X509Certificate2Collection extraStore, X509Certificate2 certificate, Boolean verifySignatureOnly) in C:\\projects\\corefx\\src\\System.Security.Cryptography.Pkcs\\src\\System\\Security\\Cryptography\\Pkcs\\SignerInfo.cs:line 647\r\n
  at System.Security.Cryptography.Pkcs.SignerInfo.CheckSignature(X509Certificate2Collection extraStore, Boolean verifySignatureOnly) in C:\\projects\\corefx\\src\\System.Security.Cryptography.Pkcs\\src\\System\\Security\\Cryptography\\Pkcs\\SignerInfo.cs:line 415\r\n 
  at System.Security.Cryptography.Pkcs.SignedCms.CheckSignatures(SignerInfoCollection signers, X509Certificate2Collection extraStore, Boolean verifySignatureOnly) in C:\\projects\\corefx\\src\\System.Security.Cryptography.Pkcs\\src\\System\\Security\\Cryptography\\Pkcs\\SignedCms.cs:line 595\r\n 
  at System.Security.Cryptography.Pkcs.SignedCms.CheckSignature(X509Certificate2Collection extraStore, Boolean verifySignatureOnly) in C:\\projects\\corefx\\src\\System.Security.Cryptography.Pkcs\\src\\System\\Security\\Cryptography\\Pkcs\\SignedCms.cs:line 578\r\n  
 at System.Security.Cryptography.Pkcs.SignedCms.CheckSignature(Boolean verifySignatureOnly) in C:\\projects\\corefx\\src\\System.Security.Cryptography.Pkcs\\src\\System\\Security\\Cryptography\\Pkcs\\SignedCms.cs:line 569\r\n  


Сам проект WebApi собирал согласно инструкции CoreFX инструкции. Всё на локальное машине работает.
На сервере устанавливал SDK и Hosting пакеты - не помогло. Даже полностью вычищал все установленные версии Net Core.
Что еще можно сделать?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
35 Страницы«<1819202122>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.