Статус: Новичок
Группы: Участники
Зарегистрирован: 17.09.2019(UTC) Сообщений: 7 Поблагодарили: 1 раз в 1 постах
|
Добрый день! Установил: КриптоПро CSP 5.0 для Windows КриптоПро .NET 1.0.7132.0 (NET-x64-rus.msi) КриптоПро .NET SDK 1.0.7132.0 (NETSDK-x64-rus.msi) Взял пример с файла DetachedSignature.cs Импортировал сертификат в хранилище, пытаюсь подписать строку, выдает мне следующее: Код:Could not determine signature algorithm for the signer certificate.
Вот мой код: Код:using System;
using System.IO;
using System.Security.Cryptography.Pkcs;
using System.Security.Cryptography.X509Certificates;
using System.Text;
namespace MiacCrypto
{
class SingleSigner
{
public void MsgSegner(string msg)
{
Console.WriteLine("Полученное сообщение: " + msg);
Encoding unicode = Encoding.Unicode;
byte[] msgBytes = unicode.GetBytes(msg);
X509Certificate2 signerCert = GetSignerCert("ГБУЗ");
Console.WriteLine(signerCert.Subject);
try
{
byte[] encodedSignature = SingMsg(msgBytes, signerCert);
File.WriteAllBytes("signature.bin", encodedSignature);
}
catch (System.ArgumentNullException ex)
{
}
}
private static byte[] SingMsg(Byte[] msg, X509Certificate2 singleCert)
{
ContentInfo contentInfo = new ContentInfo(msg);
SignedCms signedCms = new SignedCms(contentInfo, true);
CmsSigner cmsSigner = new CmsSigner(singleCert);
try
{
signedCms.ComputeSignature(cmsSigner);
return signedCms.Encode();
}
catch (System.Security.Cryptography.CryptographicException ex)
{
Console.WriteLine(ex.Message);
return null;
}
}
static X509Certificate2 GetSignerCert(string signerName)
{
X509Store storeMy = new X509Store(StoreName.My,
StoreLocation.LocalMachine);
storeMy.Open(OpenFlags.ReadOnly);
Console.WriteLine("Число сертификатов: " + storeMy.Certificates.Count);
X509Certificate2Collection certColl =
storeMy.Certificates.Find(X509FindType.FindBySubjectName,
signerName, false);
Console.WriteLine(
"Найдено {0} сертификат(ов) в хранилище {1} для субъекта {2}",
certColl.Count, storeMy.Name, signerName);
if (certColl.Count == 0)
{
Console.WriteLine(
"Сертификат для данного примера не найден " +
"в хранилище. Выберите другой сертификат для подписи. ");
return null;
}
storeMy.Close();
return certColl[0];
}
}
}
Сертификат у меня гост 2012 Что я делаю не так? Заранее большое спасибо!
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 17.09.2019(UTC) Сообщений: 7 Поблагодарили: 1 раз в 1 постах
|
Если запускать пример через SimpleCS.exe то все работает, что я делаю не так?
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close