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

Уведомление

Icon
Error

36 Страницы«<2930313233>»
Опции
К последнему сообщению К первому непрочитанному
Offline Артём Макаров  
#301 Оставлено : 17 ноября 2022 г. 9:32:33(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 62 раз в 58 постах
Автор: VitalyKrasovsky Перейти к цитате
Коллеги из КриптоПро, подскажите куда конкретно в linux (ubuntu 20.04) устанавливается сертификат, импортированный в систему из pfx-файла штатной утилитой Инструменты КриптоПро (cptools) и как его получить в .net core под linux?

Подробнее:
В ubuntu 20.04 установлен КриптоПро CSP 5.0 R2 по инструкции отсюда (https://support.cryptopro.ru/index.php?/Knowledgebase/Article/View/390/0/rbot-s-kriptopro-csp-v-linux-n-primere-debian-11).
В системе также стоят .net core 3.1 (sdk и runtime), как этого требует ваше тестовое приложение (https://github.com/CryptoPro/DotnetCoreSampleProject/blob/master/docs/Linux.md).
В систему также импортирован сертификат штатной утилитой Инструменты КриптоПро (Вкладка Сертификаты -> Импортировать ключи -> Указан pfx-файл и задан пароль). Сертификат отображается в "Личное", а на вкладке Контейнеры сказано, что считывателем является HDIMAGE. Тестирование контейнер проходит.

В вашем тестовом приложении DotnetCoreSampleProject сертификат для теста добавлен прямо в код в виде массива байтов. Далее он у вас загружается в in-memory store:
Код:

var gostCert = new X509Certificate2(Gost2012_256Pfx, "1", X509KeyStorageFlags.CspNoPersistKeySet)

Нам такой вариант создания сертификата не подходит. Мы бы хотели его получать из хранилища, как это делалось в Windows. В windows этот код упрощенно выглядит примерно так:
Код:

public static X509Certificate2 GetCertificate(Credentials credentials)
{
    var storeNameTag = (StoreName)Enum.Parse(typeof(StoreName), credentials.CertificateStoreName);
    var storeLocationTag = (StoreLocation)Enum.Parse(typeof(StoreLocation), credentials.CertificateStoreLocation);
    var certificateStore = new X509Store(storeNameTag, storeLocationTag);

    certificateStore.Open(OpenFlags.ReadOnly);

    var findByTag = (X509FindType)Enum.Parse(typeof(X509FindType), "FindByThumbprint");
    var certificateCollection = certificateStore.Certificates.Find(findByTag, credentials.CertificateThumbprint, false);
    return certificateCollection.Count != 0 ? certificateCollection[0] : null;
}

В ubuntu же с какими бы мы параметрами не открывали хранилище X509Store, оно ни в одном из вариантов не содержит нужного нам сертификата, добавленного штатной утилитой Инструменты КриптоПро, всегда хранилище не содержит ни одного сертификата. Подскажите пожалуйста как его можно получить из кода?

В ходе экспериментов мы выявили следующую интересную особенность:
Если хотя бы 1 раз в коде выполнить вот такую строчку:
Код:

var cert = new X509Certificate2(File.ReadAllBytes("test.pfx"), "SomePassword");

то выскакивает окошко КриптоПро, в котором требуется задать новый пароль для контейнера, после чего открытие хранилища без параметров, как показано ниже, начинает видеть и возвращать нужный сертификат:
Код:

var store = new X509Store();
store.Open(OpenFlags.ReadOnly);

С найденным сертификатом все хорошо, с его помощью можно выполнять подпись, все работает, но на поверку оказалось, что это другой сертификат (точнее его копия, но отпечаток другой). В итоге получается, что по сути один и тот же сертификат у нас в двух хранилищах: один сертификат КриптоПро куда-то запрятал и доступ к нему из кода мы получить не можем, а второй по всей видимости добавляется куда-то в хранилище .net и из кода виден. Нам бы все же хотелось добавлять сертификат штатной утилитой Инструменты КриптоПро и иметь доступ к нему из кода. Просим подсказать с примером кода как это можно осуществить.


Как минимум следующий код должен работать.
Код:
 using (var store = new X509Store(
    StoreName.My,
    StoreLocation.CurrentUser))
{
    store.Open(OpenFlags.ReadOnly);
    var cert = store.Certificates.Find(X509FindType.FindByThumbprint, "5cc5be3498288fad3962eabceaf8e14a65e257ff", false)[0];
}


Убедитесь, что используется именно рантайм форка (например вы можете использовать классы Gost3410_2012_256), а также, что выполняете код от имени того же пользователя, для которого устанавливали сертификаты в хранилище My, CurrentUser.
Техническую поддержку оказываем тут
Наша база знаний
Offline inkind  
#302 Оставлено : 25 ноября 2022 г. 17:46:45(UTC)
inkind

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

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

Подскажите, планируется ли поддержка .net 6 версии или вы остановитесь на .net core 3.1.
Если планируется, то когда ожидать релиз или пре-релиз, что бы пощупать руками.
Offline Stibrus  
#303 Оставлено : 28 ноября 2022 г. 12:18:54(UTC)
Stibrus

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

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

Коллеги, добрый день!

Не удается сформировать электронную подпись для ГИИС ДМДК, использую такой код (согласно правилам ГИИС ДМДК, подпись помещается в элемент ns:CallerSignature)


Цитата:

public static MemoryStream SignXml(Stream xmlData, X509Certificate2 certificate, Encoding resultEncoding)
{
var key = certificate.PrivateKey as Gost3410_2012_256CryptoServiceProvider;
if (key == null)
throw new CryptographicException("Сертификат не содержит секретный ключ");

// Создаем новый XML документ.
XmlDocument doc = new XmlDocument();

// Пробельные символы участвуют в вычислении подписи?
doc.PreserveWhitespace = true;

// Читаем документ из файла.
doc.Load(new XmlTextReader(xmlData));

// Ищем тэг CallerSignature
XmlNodeList callerSignatureNodes = doc.GetElementsByTagName("ns:CallerSignature");
if (callerSignatureNodes.Count == 0)
throw new ArgumentException("Тэг ns:CallerSignature не найден");
if (callerSignatureNodes.Count > 1)
throw new ArgumentException("Тэг ns:CallerSignature встречается более 1 раза");

// Ищем тэг ns:RequestData
XmlNodeList requestDataNodes = doc.GetElementsByTagName("ns:RequestData");
if (requestDataNodes.Count == 0)
throw new ArgumentException("Тэг ns:RequestData не найден");
if (requestDataNodes.Count > 1)
throw new ArgumentException("Тэг ns:RequestData встречается более 1 раза");

// Создаем объект SignedXml по XML элементу
XmlElement requestData = requestDataNodes[0] as XmlElement;
SignedXml signedXml = new SignedXml(requestData);

// Добавляем ключ в SignedXml документ.
signedXml.SigningKey = key;

// Создаем ссылку на node для подписи.
var reference = new Reference();
reference.Uri = "#" + requestData.Attributes[0].Value;
reference.DigestMethod = SignedXml.XmlDsigGost3411_2012_256Url;

// Метод преобразования, применяемый к данным перед их подписью (в соответствии с методическими рекомендациями СМЭВ)
reference.AddTransform(new XmlDsigExcC14NTransform());
reference.AddTransform(new XmlDsigSmevTransform());

//signedXml.SafeCanonicalizationMethods.Clear();
signedXml.SafeCanonicalizationMethods.Add("urn://smev-gov-ru/xmldsig/transform");

// Добавляем ссылку на подписываемые данные
signedXml.AddReference(reference);

// Создаем объект KeyInfo.
KeyInfo keyInfo = new KeyInfo();
keyInfo.AddClause(new KeyInfoX509Data(certificate));
signedXml.KeyInfo = keyInfo;

// Вычисляем подпись
signedXml.ComputeSignature();

// Получаем XML представление подписи и сохраняем его в узле CallerSignature
XmlElement xmlDigitalSignature = signedXml.GetXml();
SetPrefix("ds", xmlDigitalSignature);

// Добавляем подпись в узел CallerSignature документа
callerSignatureNodes[0].RemoveAll();
callerSignatureNodes[0].AppendChild(doc.ImportNode(xmlDigitalSignature, true));

// Сохраняем подписанный документ в поток
MemoryStream result = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(result, resultEncoding);
doc.WriteTo(writer);
writer.Flush();
result.Seek(0, SeekOrigin.Begin);
return result;
}

private static void SetPrefix(string prefix, XmlNode node)
{
foreach (XmlNode n in node.ChildNodes)
SetPrefix(prefix, n);
node.Prefix = prefix;
}


Полученный XML не проходит проверку: "System.Security.Cryptography.CryptographicException: 'Malformed element Signature.'"
Как проверяю:

Цитата:


/// <summary>
/// Проверка xml файла
/// </summary>
/// <param name="path"></param>
public static void ValidateXml(Stream xmlData)
{
// Создаем новый XML документ в памяти.
XmlDocument xmlDocument = new XmlDocument();

// Сохраняем все пробельные символы, они важны при проверке
// подписи.
xmlDocument.PreserveWhitespace = true;

// Загружаем подписанный документ из файла.
xmlDocument.Load(new XmlTextReader(xmlData));

// Ищем тэг CallerSignature
XmlNodeList callerSignatureNodes = xmlDocument.GetElementsByTagName("ns:CallerSignature");

Console.WriteLine("Найдено:{0} подпис(ей).", callerSignatureNodes.Count);

// Проверяем все подписи.
for (int i = 0; i < callerSignatureNodes.Count; i++)
{
// Создаем объект SignedXml для проверки подписи документа.
SignedXml signedXml = new SignedXml(xmlDocument);

// начиная с .NET 4.5.1 для проверки подписи, необходимо добавить СМЭВ transform в довернные:

signedXml.SafeCanonicalizationMethods.Add("urn://smev-gov-ru/xmldsig/transform");

// Загружаем узел с подписью.
signedXml.LoadXml((XmlElement)callerSignatureNodes[i]);

// Проверяем подпись и выводим результат.
bool result = signedXml.CheckSignature();

// Выводим результат проверки подписи в консоль.
if (result)
{
Console.WriteLine("XML подпись[{0}] верна.", i + 1);
}
else
{
Console.WriteLine("XML подпись[{0}] не верна.", i + 1);
}
}
}



XML:

Цитата:


<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="urn://xsd.dmdk.goznak.ru/exchange/3.0">
<soapenv:Header />
<soapenv:Body>
<ns:CheckBatchRequest>
<ns:CallerSignature>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
<ds:SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256" />
<ds:Reference URI="#data">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<ds:Transform Algorithm="urn://smev-gov-ru/xmldsig/transform" />
</ds:Transforms>
<ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256" />
<ds:DigestValue>2uxb0O2nFbuH09Znov77q4wi3Iu/RB+lzWnrUYmXpkY=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>vjUZF92uHq9zoJfcjTGJNO2Imz+IKo5Rau6/BOBlcZPT9l6GTGfRmySSFefTLAK2LSkgsyFh6YyTdHzNNYGOXw==</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>...........сертификат..................</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
</ns:CallerSignature>
<ns:RequestData id="data">
<ns:messageId>6408c688-8e1b-41f5-b8cf-ffa4c162fd40</ns:messageId>
</ns:RequestData>
</ns:CheckBatchRequest>
</soapenv:Body>
</soapenv:Envelope>

Offline Артём Макаров  
#304 Оставлено : 1 декабря 2022 г. 12:33:48(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 62 раз в 58 постах
Автор: inkind Перейти к цитате
Подскажите, планируется ли поддержка .net 6 версии или вы остановитесь на .net core 3.1.
Если планируется, то когда ожидать релиз или пре-релиз, что бы пощупать руками.


Добрый день. Выпустили пре-релизную демку для dotnet 6 -
https://github.com/CryptoPro/libcore
Техническую поддержку оказываем тут
Наша база знаний
Offline AndreyES  
#305 Оставлено : 2 декабря 2022 г. 9:49:54(UTC)
AndreyES

Статус: Активный участник

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

Сказал(а) «Спасибо»: 12 раз
Поблагодарили: 2 раз в 2 постах
Автор: Артём Макаров Перейти к цитате
Автор: inkind Перейти к цитате
Подскажите, планируется ли поддержка .net 6 версии или вы остановитесь на .net core 3.1.
Если планируется, то когда ожидать релиз или пре-релиз, что бы пощупать руками.


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

Спасибо, сразу вопросы:
1. Под какой лицензией распространяется данная библиотека? Она будет платной или бесплатной?
2. Почему не разместили библиотеку сразу в NuGet?
3. Когда планируется реализация шифрования?
Offline Георгий Садофьев  
#306 Оставлено : 2 декабря 2022 г. 12:17:47(UTC)
Георгий Садофьев

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

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

Поблагодарили: 31 раз в 30 постах
Добрый день!

Решение находится на раннем этапе развития, вопрос лицензирования пока является открытым. Сейчас для нас важно получить общие сведения о работоспособности.
На данный момент не видим необходимости в размещении библиотеки в NuGet репозитории.
Работа по поддержке шифрования начнётся в ближайшее время, но конкретных сроков реализации назвать не можем.
Техническую поддержку оказываем тут
Наша база знаний
thanks 2 пользователей поблагодарили Георгий Садофьев за этот пост.
AndreyES оставлено 02.12.2022(UTC), Санчир Момолдаев оставлено 02.12.2022(UTC)
Offline sk1nned  
#307 Оставлено : 24 января 2023 г. 13:02:33(UTC)
sk1nned

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

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

Автор: Артём Макаров Перейти к цитате
Автор: inkind Перейти к цитате
Подскажите, планируется ли поддержка .net 6 версии или вы остановитесь на .net core 3.1.
Если планируется, то когда ожидать релиз или пре-релиз, что бы пощупать руками.


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


Добрый день, на макос получится это запустить? Есть ли инструкции?
Offline Артём Макаров  
#308 Оставлено : 24 января 2023 г. 13:11:59(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 62 раз в 58 постах
Автор: sk1nned Перейти к цитате
Автор: Артём Макаров Перейти к цитате
Автор: inkind Перейти к цитате
Подскажите, планируется ли поддержка .net 6 версии или вы остановитесь на .net core 3.1.
Если планируется, то когда ожидать релиз или пре-релиз, что бы пощупать руками.


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


Добрый день, на макос получится это запустить? Есть ли инструкции?


Добрый день.

В настоящий момент поддерживаем только Linux и Windows и только x64.
Техническую поддержку оказываем тут
Наша база знаний
Offline Dmitriy_Zh  
#309 Оставлено : 25 января 2023 г. 10:38:40(UTC)
Dmitriy_Zh

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

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

Добрый день! Коллеги, пытаемся использовать 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)


Подскажите пожалуйста, в какую сторону копать. Спасибо :)
Offline Артём Макаров  
#310 Оставлено : 25 января 2023 г. 11:28:53(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 62 раз в 58 постах
Автор: 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 });


На проблемном контейнере ошибку будет и в данном коде.
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
36 Страницы«<2930313233>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.