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

Уведомление

Icon
Error

36 Страницы«<3031323334>»
Опции
К последнему сообщению К первому непрочитанному
Offline Dmitriy_Zh  
#311 Оставлено : 25 января 2023 г. 12:30:58(UTC)
Dmitriy_Zh

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

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

Автор: Артём Макаров Перейти к цитате
Автор: Dmitriy_Zh Перейти к цитате
Добрый день! Коллеги, пытаемся использовать LibCore для подписания данных.
Наш стенд:
redos 7.3
CSP (Type:80) v5.0.10011 KC1 Release Ver:5.0.12600 OS:Linux CPU:AMD64 FastCode:READY:AVX. DISABLED:RSA;
Версия библиотеки:
LibCore.Linux 2023.1.11.1
Сертификат:
Тестовый сертификат Крипто про УЦ (сгенерированный через утилиту)


Метод подписи:

Код:

using var currentUserStore = new CpX509Store(StoreLocation.CurrentUser);
            currentUserStore.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadOnly);

X509Certificate2Collection found = currentUserStore.Certificates.Find(X509FindType.FindBySerialNumber,
                prepearedSerialNumber, false);            

var contentInfo = new ContentInfo(data);
var signedCms = new SignedCms(contentInfo, detached);
var cmsSigner = new CmsSigner(found[0]) {IncludeOption = X509IncludeOption.EndCertOnly};
signedCms.ComputeSignature(cmsSigner, false);


В итоге получаем вот такую ошибку:
Код:
LibCore.Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: Cryptography error
   at LibCore.Internal.NativeCrypto.CapiHelper.SignValue(SafeProvHandle hProv, SafeKeyHandle hKey, Int32 keyNumber, Int32 calgKey, Int32 calgHash, Byte[] hash)
   at LibCore.Security.Cryptography.Gost3410_2012_256CryptoServiceProvider.SignHash(Byte[] rgbHash)
   at LibCore.Security.Cryptography.Gost3410_2012_256CryptoServiceProvider.SignHash(Byte[] rgbHash, HashAlgorithmName hashAlgName)
   at LibCore.Security.Cryptography.Gost3410_2012_256.TrySignHash(ReadOnlySpan`1 hash, Span`1 destination, HashAlgorithmName hashAlgorithm, Int32& bytesWritten)
   at LibCore.Security.Cryptography.GostCmsSignature.Gost2012_256CmsSignature.Sign(ReadOnlySpan`1 dataHash, HashAlgorithmName hashAlgorithmName, X509Certificate2 certificate, AsymmetricAlgorithm key, Boolean silent, String& signatureAlgorithm, Byte[]& signatureValue)
   at LibCore.Security.Cryptography.GostCmsSignature.Sign(ReadOnlySpan`1 dataHash, HashAlgorithmName hashAlgorithmName, X509Certificate2 certificate, AsymmetricAlgorithm key, Boolean silent, String& oid, ReadOnlyMemory`1& signatureValue)
   at LibCore.Security.Cryptography.Pkcs.Detours.CmsSignerDetour.Prefix(ReadOnlyMemory`1 data, String contentTypeOid, Boolean silent, X509Certificate2Collection& chainCerts, CmsSigner __instance, Object& __result)
   at System.Security.Cryptography.Pkcs.CmsSigner.Sign_Patch1(CmsSigner this, IntPtr retbuf, ReadOnlyMemory`1 data, String contentTypeOid, Boolean silent, X509Certificate2Collection& chainCerts)
   at System.Security.Cryptography.Pkcs.SignedCms.ComputeSignature(CmsSigner signer, Boolean silent)


Подскажите пожалуйста, в какую сторону копать. Спасибо :)


Добрый день.

С большой вероятностью что то не так с контейнером ключа. Среди возможных причин - истечение срока действия закрытого ключа, отсутствие прав на контейнер для пользователя, неверный тип ключа. Начать лучше с проверки контейнера.

Можно посмотреть на свойство HResult у возникающего исключения. Там должен быть код ошибки от csp.

Падает именно на методе SignHash, т.е. проблема не в Cms, а именно в ключе.

Для тестов можно попробовать позвать данный метод у закрытого ключа сертификата.

Для госта 2012 256:

Код:
var key = found[0].GetGost3410_2012_256PrivateKey();
key.SignHash(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7 });


На проблемном контейнере ошибку будет и в данном коде.


Коллеги, проблема была в установленном пароле на контейнере
csptest -passwd -change '' -cont pma6nfdl -passwd 123456
сбросили пароль и всё заработало

Offline IronWoodman  
#312 Оставлено : 4 февраля 2023 г. 11:14:18(UTC)
IronWoodman

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

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

Не получается запустить DotnetSampleProject под Windows.
Сделал всё по инструкции, упрощенный вариант, без сборки corefx.

Unhandled exception. Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: Не удается найти указанный файл.
at Internal.Cryptography.Pal.CertificatePal.FilterPFXStore(Byte[] rawData, SafePasswordHandle password, PfxCertStoreFlags pfxCertStoreFlags)
at Internal.Cryptography.Pal.CertificatePal.FromBlobOrFile(Byte[] rawData, String fileName, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags)
at Internal.Cryptography.Pal.CertificatePal.FromBlob(Byte[] rawData, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags)
at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(Byte[] rawData, String password, X509KeyStorageFlags keyStorageFlags)
at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData, String password, X509KeyStorageFlags keyStorageFlags)
at DotnetSample.Program.Main(String[] args) in C:\Work\Vostok.EPGU\DotnetCoreSampleProject\Program.cs:line 63

Продебажил до этого места в CertificatePal. После
hCertStore = Interop.crypt32.PFXImportCertStore(ref pPFX, password, pfxCertStoreFlags); (466 строка)
Выбрасывается исключение потому, что hCertStore.isInvalid = true.

Подскажите пожалуйста куда копать?

Конечная цель: научить серверное приложение, крутящееся в линуксовом докере, подписывать по ГОСТ Р 34.11-2012.
Offline Максим Коллегин  
#313 Оставлено : 4 февраля 2023 г. 11:22:44(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 37 раз
Поблагодарили: 715 раз в 620 постах
КриптоПро CSP последней версии установлен?
Знания в базе знаний, поддержка в техподдержке
Offline IronWoodman  
#314 Оставлено : 4 февраля 2023 г. 11:30:20(UTC)
IronWoodman

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

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

Обновил КриптоПро и ошибка пропала. Спасибо, Максим!
Offline Aifar  
#315 Оставлено : 8 февраля 2023 г. 13:24:27(UTC)
Aifar

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

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

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 1 раз в 1 постах
Автор: Артём Макаров Перейти к цитате

Добрый день. Выпустили пре-релизную демку для dotnet 6 -
https://github.com/CryptoPro/libcore

Добрый день
А есть пример(шаблон) .csproj файла, как было с .net core 3.1?

Мы попытались собрать проект с таким:
Код:
<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
	  <OutputType>Exe</OutputType>
	  <TargetFramework>net6.0</TargetFramework>
	  <RuntimeIdentifier>win-x64</RuntimeIdentifier>  <!--win-x64 linux-x64 -->	
  </PropertyGroup>


<ItemGroup>
		<PackageReference Include="LibCore.Windows" Version="2023.1.23.1" />
	</ItemGroup>
		
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>	

  <ItemGroup>
    <PackageReference Include="EntityFramework" Version="6.4.4" />
    <!-- куча других пакетов приложения -->
    <PackageReference Include="VueCliMiddleware" Version="3.1.1" />
  </ItemGroup>
 </Project>


но при сборке ругается и не находит вот это:
Ошибка CS0103 Имя "GostNonPersistCmsTests" не существует в текущем контексте

Пример взяли из Readme.md
Offline Артём Макаров  
#316 Оставлено : 8 февраля 2023 г. 14:25:24(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 62 раз в 58 постах
Автор: Aifar Перейти к цитате
Автор: Артём Макаров Перейти к цитате

Добрый день. Выпустили пре-релизную демку для dotnet 6 -
https://github.com/CryptoPro/libcore

Добрый день
А есть пример(шаблон) .csproj файла, как было с .net core 3.1?

Мы попытались собрать проект с таким:
Код:
<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
	  <OutputType>Exe</OutputType>
	  <TargetFramework>net6.0</TargetFramework>
	  <RuntimeIdentifier>win-x64</RuntimeIdentifier>  <!--win-x64 linux-x64 -->	
  </PropertyGroup>


<ItemGroup>
		<PackageReference Include="LibCore.Windows" Version="2023.1.23.1" />
	</ItemGroup>
		
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>	

  <ItemGroup>
    <PackageReference Include="EntityFramework" Version="6.4.4" />
    <!-- куча других пакетов приложения -->
    <PackageReference Include="VueCliMiddleware" Version="3.1.1" />
  </ItemGroup>
 </Project>


но при сборке ругается и не находит вот это:
Ошибка CS0103 Имя "GostNonPersistCmsTests" не существует в текущем контексте

Пример взяли из Readme.md


Добрый день. Весьма странно. csproj у вас корректный.
Попробуйте указать версию последнего релиза. Если проблема не уйдёт - приложите пожалуйста архив с вашим проектом.
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Артём Макаров за этот пост.
Aifar оставлено 14.02.2023(UTC)
Offline Aifar  
#317 Оставлено : 14 февраля 2023 г. 10:31:19(UTC)
Aifar

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

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

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 1 раз в 1 постах
Автор: Артём Макаров Перейти к цитате


Добрый день. Весьма странно. csproj у вас корректный.
Попробуйте указать версию последнего релиза. Если проблема не уйдёт - приложите пожалуйста архив с вашим проектом.


все работает, спасибо

Offline emejibka  
#318 Оставлено : 6 марта 2023 г. 12:12:12(UTC)
emejibka

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

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

Сказал(а) «Спасибо»: 2 раз
Здравствуйте, коллеги.

Где найти пример или документацию по созданию откреплённой подписи по ХЕШУ файла?
У нас клиент-серверное приложение, ключи на сервере, файлы на клиенте, хотелось бы сделать так что бы не передавать весь файл целиком с клиента, а посчитать его хеш, передать на сервер и по хешу файла вычислить его откреплённую подпись.
Offline Артём Макаров  
#319 Оставлено : 6 марта 2023 г. 13:03:42(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 62 раз в 58 постах
Автор: emejibka Перейти к цитате
Здравствуйте, коллеги.

Где найти пример или документацию по созданию откреплённой подписи по ХЕШУ файла?
У нас клиент-серверное приложение, ключи на сервере, файлы на клиенте, хотелось бы сделать так что бы не передавать весь файл целиком с клиента, а посчитать его хеш, передать на сервер и по хешу файла вычислить его откреплённую подпись.


Добрый день.

К сожалению, создание откреплённой CMS подписи по хэшу в рамках существующего интерфейса SignedCms невозможно. Сам интерфейс нами никак не расширялся, кроме поддержки ГОСТа.

Если у вас стоит такая задача - то нужно воспользоваться cades интерфейсами, функция CadesSignHash, http://cpdn.cryptopro.ru...dc0c5f0d36671569b96.html

На windows можно воспользоваться Cades.COM, на linux нужно будет воспользоваться P\Invoke.

Пример формирование CMS подписи по хэшу можно найти в документации, например тут - http://cpdn.cryptopro.ru...mplifiedapihashsign.html
Само вычисление хэша можно сделать в c# через Gost3411_XXXX_CryptoServiceProvider.
Техническую поддержку оказываем тут
Наша база знаний
Offline Minin  
#320 Оставлено : 23 марта 2023 г. 0:18:55(UTC)
Minin

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

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

Сказал(а) «Спасибо»: 3 раз
Цитата:

все работает, спасибо


Здравствуйте. Столкнулся с такой же проблемой. Пробовал версии 2023.2.14.1 и 2023.3.16.1, но в каждой не видит имя "GostNonPersistCmsTests".
Целевая платформа совпадает с вашей net6.0.
Подскажите, как обошли данную ошибку?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
36 Страницы«<3031323334>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.