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

Уведомление

Icon
Error

10 Страницы«<8910
Опции
К последнему сообщению К первому непрочитанному
Offline LFrolov  
#181 Оставлено : 6 декабря 2021 г. 19:28:51(UTC)
LFrolov

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

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

Сказал(а) «Спасибо»: 3 раз
Подскажите, пожайлуста, в чем может быть проблема с CMS подписью:

Код:

  public static string SignData(byte[] data, X509Certificate2 certificate)
        {
            ContentInfo contentInfo = new ContentInfo(data);
            SignedCms signedCms = new SignedCms(contentInfo, false);

            CmsSigner cmsSigner = new CmsSigner(certificate);
            cmsSigner.IncludeOption = X509IncludeOption.EndCertOnly;

            signedCms.ComputeSignature(cmsSigner);

            byte[] msgBytes = signedCms.Encode();
            return Convert.ToBase64String(msgBytes, Base64FormattingOptions.InsertLineBreaks);
        }


Выдается исключение:
Код:

Unhandled exception. Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: Keyset does not exist
   at Internal.NativeCrypto.CapiHelper.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer)
   at System.Security.Cryptography.Gost3410_2012_256CryptoServiceProvider.get_SafeProvHandle()
   at System.Security.Cryptography.Gost3410_2012_256CryptoServiceProvider.get_SafeKeyHandle()
   at System.Security.Cryptography.Gost3410_2012_256CryptoServiceProvider.GetKeyPair()
   at System.Security.Cryptography.Gost3410_2012_256CryptoServiceProvider..ctor(CspParameters parameters)
   at Internal.Cryptography.Pal.Windows.PkcsPalWindows.GetPrivateKey[T](X509Certificate2 certificate, Boolean silent, Boolean preferNCrypt) in C:\projects\corefx\src\System.Security.Cryptography.Pkcs\src\Internal\Cryptography\Pal\Windows\PkcsPalWindows.cs:line 285
   at Internal.Cryptography.Pal.Windows.PkcsPalWindows.GetPrivateKeyForSigning[T](X509Certificate2 certificate, Boolean silent) in C:\projects\corefx\src\System.Security.Cryptography.Pkcs\src\Internal\Cryptography\Pal\Windows\PkcsPalWindows.cs:line 181
   at System.Security.Cryptography.Pkcs.CmsSignature.Gost2012_256CmsSignature.Sign(ReadOnlySpan`1 dataHash, HashAlgorithmName hashAlgorithmName, X509Certificate2 certificate, AsymmetricAlgorithm key, Boolean silent, Oid& signatureAlgorithm, Byte[]& signatureValue) in C:\projects\corefx\src\System.Security.Cryptography.Pkcs\src\System\Security\Cryptography\Pkcs\CmsSignature.Gost2012_256.cs:line 71
   at System.Security.Cryptography.Pkcs.CmsSignature.Sign(ReadOnlySpan`1 dataHash, HashAlgorithmName hashAlgorithmName, X509Certificate2 certificate, AsymmetricAlgorithm key, Boolean silent, Oid& oid, ReadOnlyMemory`1& signatureValue) in C:\projects\corefx\src\System.Security.Cryptography.Pkcs\src\System\Security\Cryptography\Pkcs\CmsSignature.cs:line 104
   at System.Security.Cryptography.Pkcs.CmsSigner.Sign(ReadOnlyMemory`1 data, String contentTypeOid, Boolean silent, X509Certificate2Collection& chainCerts) in C:\projects\corefx\src\System.Security.Cryptography.Pkcs\src\System\Security\Cryptography\Pkcs\CmsSigner.cs:line 251
   at System.Security.Cryptography.Pkcs.SignedCms.ComputeSignature(CmsSigner signer, Boolean silent) in C:\projects\corefx\src\System.Security.Cryptography.Pkcs\src\System\Security\Cryptography\Pkcs\SignedCms.cs:line 323
   at System.Security.Cryptography.Pkcs.SignedCms.ComputeSignature(CmsSigner signer) in C:\projects\corefx\src\System.Security.Cryptography.Pkcs\src\System\Security\Cryptography\Pkcs\SignedCms.cs:line 274
   at DotnetSample.Program.SignData(Byte[] data, X509Certificate2 certificate) in D:\Projects\CryptoPro\DotnetCoreSampleProject\Program.cs:line 300
   at DotnetSample.Program.Main(String[] args) in D:\Projects\CryptoPro\DotnetCoreSampleProject\Program.cs:line 81


Xml подпись работает. Сертификат в хранилище Local Computer. Permission'ы на Private key даны.
С сертификатами установленными в польльзовательское хранилище работает, с сертификатам установленными в хранилище компьютера - вызывается исключение.

Отредактировано пользователем 7 декабря 2021 г. 11:27:19(UTC)  | Причина: Не указана

Offline Максим Коллегин  
#182 Оставлено : 7 декабря 2021 г. 12:22:52(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 19 раз
Поблагодарили: 615 раз в 548 постах
Приложению не хватает прав на доступ к контейнеру? Нужны права на запись.
Знания в базе знаний, поддержка в техподдержке
Offline LFrolov  
#183 Оставлено : 9 декабря 2021 г. 17:33:42(UTC)
LFrolov

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

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

Сказал(а) «Спасибо»: 3 раз
Цитата:
Приложению не хватает прав на доступ к контейнеру? Нужны права на запись.


Все таки кажется дело не в правах.


PkcsPalWindows.GetPrivateKey:

Код:

// The key handle is for CAPI.
                // Our CAPI types don't allow usage from a handle, so we have a few choices:
                // 1) Extract the information we need to re-open the key handle.
                // 2) Re-implement {R|D}SACryptoServiceProvider
                // 3) PNSE.
                // 4) Defer to cert.Get{R|D}SAPrivateKey if not silent, throw otherwise.
                CspParameters cspParams;

                try
                {
                    cspParams = handle.GetProvParameters();
                }


Возвращает:
Код:
cspParams: {"Flags":"UseExistingKey","KeyPassword":null,"ParentWindowHandle":{}}


А в конструкторе Gost3410_2012_256CryptoServiceProvider явно указано, что должен быть установлен флаг CspProviderFlags.UseMachineKeyStore:
Код:

/// <summary>
        /// Конструктор алгоритма подписи по ГОСТ Р 34.10-2012 256.
        /// </summary>
        /// 
        /// <param name="parameters">Параметры алгоритма.</param>
        /// 
        /// <remarks><para>При создании контейнера без заданного имени
        /// контейнера и без указания флага использования контейнера по 
        /// умолчанию будет создано случайное имя, а создание ключей
        /// будет отложено, до его первого обращения.
        /// </para>
        /// 
        /// <para>При инициализации объекта через данный конструктор 
        /// будут использованы именно эти параметры, в независимости от
        /// флага <see cref="UseMachineKeyStore"/>. По умолчанию значение
        /// флага из 
        /// <see cref="Gost3410_2012_256CryptoServiceProvider(CspParameters)"/>
        /// устанавливется в использование ключей из хранилищи пользователя.
        /// Для использования ключей из хранилища компьютера 
        /// необходимо установить флаг <see cref="CspParameters.Flags"/>:
        /// <see cref="CspProviderFlags.UseMachineKeyStore"/>.
        /// </para>
        /// </remarks>
        /// 
        /// <containerperm flag="Open">Для открытия существующего 
        /// контейнера.</containerperm>
        /// <containerperm flag="Create">Для создания контейнера с заданным
        /// (не случайным именем).</containerperm>
        [SecuritySafeCritical]
        public Gost3410_2012_256CryptoServiceProvider(CspParameters parameters)


Если флаг туда явно добавить, то по signedCms.ComputeSignature успешно отрабатывает.

Код:

cspParams.Flags |= CspProviderFlags.UseMachineKeyStore;


Может быть добавить UseMachineKeyStore как параметр, так же как silent?

Отредактировано пользователем 9 декабря 2021 г. 17:51:56(UTC)  | Причина: Не указана

Offline Максим Коллегин  
#184 Оставлено : 9 декабря 2021 г. 17:36:51(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 19 раз
Поблагодарили: 615 раз в 548 постах
То есть вы используете сертификат из хранилища компьютера, а контейнер пользователя? Очень странная конфигурация, лучше так не делать.
Знания в базе знаний, поддержка в техподдержке
Offline LFrolov  
#185 Оставлено : 9 декабря 2021 г. 17:56:16(UTC)
LFrolov

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

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

Сказал(а) «Спасибо»: 3 раз
Автор: Максим Коллегин Перейти к цитате
То есть вы используете сертификат из хранилища компьютера, а контейнер пользователя? Очень странная конфигурация, лучше так не делать.


И сертификат в хранилище компьютера и контейнер компьютерный.

CP.PNG (32kb) загружен 11 раз(а).
Offline Артём Макаров  
#186 Оставлено : 13 декабря 2021 г. 8:34:06(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 35 раз в 35 постах
Автор: LFrolov Перейти к цитате
Автор: Максим Коллегин Перейти к цитате
То есть вы используете сертификат из хранилища компьютера, а контейнер пользователя? Очень странная конфигурация, лучше так не делать.


И сертификат в хранилище компьютера и контейнер компьютерный.

CP.PNG (32kb) загружен 11 раз(а).


Воспроизвести пока не удалось.

Сертификат и контейнер в хранилище контейнера, получен через x509Store. Получен закрытый ключ, произведена CMS подпись.

Код:
 using (var store = new X509Store(StoreName.My, StoreLocation.LocalMachine))
            {
                store.Open(OpenFlags.ReadOnly);
                var certG = store.Certificates.Find(X509FindType.FindBySubjectName, "CliServ 2001 256", false)[0];

                var gost1 = (Gost3410)certG.PrivateKey;

                ContentInfo contentInfo1 = new ContentInfo(new byte[] { 0 });
                SignedCms signedCms = new SignedCms(contentInfo1, false);

                CmsSigner cmsSigner = new CmsSigner(certG);
                cmsSigner.IncludeOption = X509IncludeOption.EndCertOnly;

                var signature = signedCms.ComputeSignature(cmsSigner);
}


Флаг UseMachineKeyStore в параметры контейнера попадает корректно (вложение)

Snimok.PNG (13kb) загружен 8 раз(а)..
Техническую поддержку оказываем тут
Наша база знаний
Offline LFrolov  
#187 Оставлено : 15 декабря 2021 г. 11:48:13(UTC)
LFrolov

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

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

Сказал(а) «Спасибо»: 3 раз
Цитата:
Получен закрытый ключ, произведена CMS подпись.

У меня сертификат подписан алгоритмом GOST R 34.11-2012 256 bit.

А вы не могли бы прикрепить весь тестовый проект c bin папкой?
Offline Артём Макаров  
#188 Оставлено : 15 декабря 2021 г. 12:17:14(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 35 раз в 35 постах
Автор: LFrolov Перейти к цитате
Цитата:
Получен закрытый ключ, произведена CMS подпись.

У меня сертификат подписан алгоритмом GOST R 34.11-2012 256 bit.

А вы не могли бы прикрепить весь тестовый проект c bin папкой?


34.11-2012 256 определяет алгоритм хэширования, не подписи. Предположу, что речь идёт о том, что в качестве алгоритма ключа сертификата используется 34.10-2012 256.

Собрал пример, форум не даёт прикрепить большой архив, ссылка на облако - https://drive.google.com...gusRKMb/view?usp=sharing

Пример создаёт cms подпись на основе сертификата, загруженного из хранилища my-localmachine.

Поиск сертификата происходит по имени, сам сертификат не включен в архив, необходимо заменить на ваш.

Контейнер ключа, соответствующий сертификату, должен быть установлен в хранилище компьютера + выданы права на закрытый ключ (https://support.cryptopro.ru/index.php?/Knowledgebase/Article/View/112/14/ispolzovnie-sekretnykh-kljuchejj-v-sluzhbkh-windows-iis-etc).

Для сборки на вашей машине, возможно, понадобится изменить версию Microsoft.Private.CoreFx.NETCoreApp в csproj на используемую вами.
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Артём Макаров за этот пост.
LFrolov оставлено 16.12.2021(UTC)
Offline LFrolov  
#189 Оставлено : 16 декабря 2021 г. 15:30:51(UTC)
LFrolov

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

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

Сказал(а) «Спасибо»: 3 раз
Цитата:
Собрал пример, форум не даёт прикрепить большой архив, ссылка на облако


Просит пароль на архив.
Offline Артём Макаров  
#190 Оставлено : 16 декабря 2021 г. 15:32:13(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 35 раз в 35 постах
Автор: LFrolov Перейти к цитате
Цитата:
Собрал пример, форум не даёт прикрепить большой архив, ссылка на облако


Просит пароль на архив.


Пароль - 1
Техническую поддержку оказываем тут
Наша база знаний
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)
Сообщений: 147

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 35 раз в 35 постах
Автор: 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)
Сообщений: 7
Российская Федерация

Добрый день!

Оба вопроса связаны с 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)
Сообщений: 7
Российская Федерация

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

У меня есть файлы, которые были подписаны утилитой 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,403
Российская Федерация
Откуда: Иркутская область

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

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

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

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

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


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

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


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

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

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

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

Автор: Артём Макаров Перейти к цитате
Скорее всего у вас 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)
Сообщений: 7
Российская Федерация

Добрый день!
Планируется ли переход библиотеки на .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,103
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 19 раз
Поблагодарили: 615 раз в 548 постах
Добрый день. Планируем поддержать .NET 6
Знания в базе знаний, поддержка в техподдержке
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
10 Страницы«<8910
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.