Atom Лента - Форум КриптоПро - Тема:Не удаётся присвоить сертификат в поле CPSigner.Certificate (CAdESCOM) - 10Форум КриптоПро - Atom Лентаurn:https:--www-cryptopro-ru:AtomLenta:ForumKriptoPro:Tema:Neudajotsjaprisvoit'sertifikatvpoleCPSigner.Certificate(CAdESCOM)-10:1Copyright 2024 Форум КриптоПро2024-03-29T15:27:17Zhttps://www.cryptopro.ru/forum2/Images/YAFLogo.pngForum Adminhttps://www.cryptopro.ruforum@cryptopro.ruАндрей *https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=15008&name=Андрей *Андрей *https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=15008&name=Андрей *ch1raQQQhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=60214&name=ch1raQQQtwo_oceanshttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=36490&name=two_oceansАндрей *https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=15008&name=Андрей *Андрей *https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=15008&name=Андрей *ch1raQQQhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=60214&name=ch1raQQQАндрей *https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=15008&name=Андрей *ch1raQQQhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=60214&name=ch1raQQQYetAnotherForum.NETurn:https:--www-cryptopro-ru:ftPosts:st1:meid127099:1Не удаётся присвоить сертификат в поле CPSigner.Certificate (CAdESCOM)<table class="content postContainer_Alt" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: ch1raQQQ <a href="/forum2/default.aspx?g=posts&m=127098#post127098"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote> <br /><br />xmldsig 2012 ГОСТ нужен, ну я попозже это исправлю.<br />Использую КриптоПро CADESCOM (версия 2.0.14071)<br />Примеры брал тут: <a rel="nofollow" href="http://cpdn.cryptopro.ru/content/cades/cadescom-samples.html" title="http://cpdn.cryptopro.ru/content/cades/cadescom-samples.html">http://cpdn.cryptopro.ru...es/cadescom-samples.html</a><br />Папки SDK у меня в принципе нет(</div></div><br /><br />Потому что КриптоПро .NET SDK необходимо поставить... <br /><br /><a rel="nofollow" href="https://www.cryptopro.ru/products/net" title="https://www.cryptopro.ru/products/net">https://www.cryptopro.ru/products/net</a><br /><br /><a rel="nofollow" href="https://www.cryptopro.ru/products/net/downloads" title="https://www.cryptopro.ru/products/net/downloads">https://www.cryptopro.ru/products/net/downloads</a></td></tr></table>2021-09-07T12:51:46+03:002021-09-07T12:51:46+03:00Андрей *<table class="content postContainer_Alt" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: ch1raQQQ <a href="/forum2/default.aspx?g=posts&m=127098#post127098"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote> <br /><br />xmldsig 2012 ГОСТ нужен, ну я попозже это исправлю.<br />Использую КриптоПро CADESCOM (версия 2.0.14071)<br />Примеры брал тут: <a rel="nofollow" href="http://cpdn.cryptopro.ru/content/cades/cadescom-samples.html" title="http://cpdn.cryptopro.ru/content/cades/cadescom-samples.html">http://cpdn.cryptopro.ru...es/cadescom-samples.html</a><br />Папки SDK у меня в принципе нет(</div></div><br /><br />Потому что КриптоПро .NET SDK необходимо поставить... <br /><br /><a rel="nofollow" href="https://www.cryptopro.ru/products/net" title="https://www.cryptopro.ru/products/net">https://www.cryptopro.ru/products/net</a><br /><br /><a rel="nofollow" href="https://www.cryptopro.ru/products/net/downloads" title="https://www.cryptopro.ru/products/net/downloads">https://www.cryptopro.ru/products/net/downloads</a></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid127098:1Не удаётся присвоить сертификат в поле CPSigner.Certificate (CAdESCOM)<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: two_oceans <a href="/forum2/default.aspx?g=posts&m=127096#post127096"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Добавлю, что тестировать лучше на документе попроще чем ЭДПФР с кириллическими тегами, пространствами имени и префиксами. Если мне не изменяет память, обсуждали с год назад. Суть проблемы: плагин вызывает зарубежную библиотеку парсинга xml, которая кириллицу считает недопустимыми символами для чего-то из этого и подписание такого документа вываливается в ошибку.<br /><br />В зарубежном стандарте, на который ссылается та библиотека прямо сказано, что стандарт не регламентирует другие символы - дескать, принимайте свой стандарт, если вам нужен национальный алфавит в таких местах. Соответственно нужен свой вариант библиотеки. Такой стандарт насколько знаю не принят. Потому если нужен именно ЭДПФР, то все это может вообще оказаться тупиковым решением. Надеюсь, сотрудники КриптоПро поправят меня если проблема уже решена в новых версиях плагина.</div></div><br /><br />Хорошо, учту замечания, спасибо.<br />Просто, на данном этапе, основной проблемой является то, что не получается присвоить сертификат, хотя я делал всё как в примерах на VB.<br /><br /><div class="quote"><span class="quotetitle">Автор: Андрей * <a href="/forum2/default.aspx?g=posts&m=127093#post127093"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Тип подписи какой требуется cms\xmldsig?<br /><br />КриптоПРО.Net какая версия?<br />в SDK смотрели примеры по vb?<br /> \Program Files (x86)\Crypto Pro\.NET SDK\Examples\simple.zip</div></div><br /><br />xmldsig 2012 ГОСТ нужен, ну я попозже это исправлю.<br />Использую КриптоПро CADESCOM (версия 2.0.14071)<br />Примеры брал тут: <a rel="nofollow" href="http://cpdn.cryptopro.ru/content/cades/cadescom-samples.html" title="http://cpdn.cryptopro.ru/content/cades/cadescom-samples.html">http://cpdn.cryptopro.ru...es/cadescom-samples.html</a><br />Папки SDK у меня в принципе нет(</td></tr></table>2021-09-07T12:47:44+03:002021-09-07T12:47:44+03:00ch1raQQQ<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: two_oceans <a href="/forum2/default.aspx?g=posts&m=127096#post127096"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Добавлю, что тестировать лучше на документе попроще чем ЭДПФР с кириллическими тегами, пространствами имени и префиксами. Если мне не изменяет память, обсуждали с год назад. Суть проблемы: плагин вызывает зарубежную библиотеку парсинга xml, которая кириллицу считает недопустимыми символами для чего-то из этого и подписание такого документа вываливается в ошибку.<br /><br />В зарубежном стандарте, на который ссылается та библиотека прямо сказано, что стандарт не регламентирует другие символы - дескать, принимайте свой стандарт, если вам нужен национальный алфавит в таких местах. Соответственно нужен свой вариант библиотеки. Такой стандарт насколько знаю не принят. Потому если нужен именно ЭДПФР, то все это может вообще оказаться тупиковым решением. Надеюсь, сотрудники КриптоПро поправят меня если проблема уже решена в новых версиях плагина.</div></div><br /><br />Хорошо, учту замечания, спасибо.<br />Просто, на данном этапе, основной проблемой является то, что не получается присвоить сертификат, хотя я делал всё как в примерах на VB.<br /><br /><div class="quote"><span class="quotetitle">Автор: Андрей * <a href="/forum2/default.aspx?g=posts&m=127093#post127093"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Тип подписи какой требуется cms\xmldsig?<br /><br />КриптоПРО.Net какая версия?<br />в SDK смотрели примеры по vb?<br /> \Program Files (x86)\Crypto Pro\.NET SDK\Examples\simple.zip</div></div><br /><br />xmldsig 2012 ГОСТ нужен, ну я попозже это исправлю.<br />Использую КриптоПро CADESCOM (версия 2.0.14071)<br />Примеры брал тут: <a rel="nofollow" href="http://cpdn.cryptopro.ru/content/cades/cadescom-samples.html" title="http://cpdn.cryptopro.ru/content/cades/cadescom-samples.html">http://cpdn.cryptopro.ru...es/cadescom-samples.html</a><br />Папки SDK у меня в принципе нет(</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid127096:1Не удаётся присвоить сертификат в поле CPSigner.Certificate (CAdESCOM)<table class="content postContainer_Alt" width="100%"><tr><td>Добавлю, что тестировать лучше на документе попроще чем ЭДПФР с кириллическими тегами, пространствами имени и префиксами. Если мне не изменяет память, обсуждали с год назад. Суть проблемы: плагин вызывает зарубежную библиотеку парсинга xml, которая кириллицу считает недопустимыми символами для чего-то из этого и подписание такого документа вываливается в ошибку.<br /><br />В зарубежном стандарте, на который ссылается та библиотека прямо сказано, что стандарт не регламентирует другие символы - дескать, принимайте свой стандарт, если вам нужен национальный алфавит в таких местах. Соответственно нужен свой вариант библиотеки. Такой стандарт насколько знаю не принят. Потому если нужен именно ЭДПФР, то все это может вообще оказаться тупиковым решением. Надеюсь, сотрудники КриптоПро поправят меня если проблема уже решена в новых версиях плагина.</td></tr></table>2021-09-07T10:11:29+03:002021-09-07T10:11:29+03:00two_oceans<table class="content postContainer_Alt" width="100%"><tr><td>Добавлю, что тестировать лучше на документе попроще чем ЭДПФР с кириллическими тегами, пространствами имени и префиксами. Если мне не изменяет память, обсуждали с год назад. Суть проблемы: плагин вызывает зарубежную библиотеку парсинга xml, которая кириллицу считает недопустимыми символами для чего-то из этого и подписание такого документа вываливается в ошибку.<br /><br />В зарубежном стандарте, на который ссылается та библиотека прямо сказано, что стандарт не регламентирует другие символы - дескать, принимайте свой стандарт, если вам нужен национальный алфавит в таких местах. Соответственно нужен свой вариант библиотеки. Такой стандарт насколько знаю не принят. Потому если нужен именно ЭДПФР, то все это может вообще оказаться тупиковым решением. Надеюсь, сотрудники КриптоПро поправят меня если проблема уже решена в новых версиях плагина.</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid127094:1Не удаётся присвоить сертификат в поле CPSigner.Certificate (CAdESCOM)<table class="content postContainer" width="100%"><tr><td>Пример выше - это xmldsig для 2001 ГОСТ... <br /><div class="quote"><span class="quotetitle">Цитата:</span><blockquote><br />Const XmlDsigGost3410Url = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411"</div></div><br />Вы же используете 2012 ГОСТ сейчас?</td></tr></table>2021-09-06T23:23:24+03:002021-09-06T23:23:24+03:00Андрей *<table class="content postContainer" width="100%"><tr><td>Пример выше - это xmldsig для 2001 ГОСТ... <br /><div class="quote"><span class="quotetitle">Цитата:</span><blockquote><br />Const XmlDsigGost3410Url = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411"</div></div><br />Вы же используете 2012 ГОСТ сейчас?</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid127093:1Не удаётся присвоить сертификат в поле CPSigner.Certificate (CAdESCOM)<table class="content postContainer_Alt" width="100%"><tr><td>Тип подписи какой требуется cms\xmldsig?<br /><br />КриптоПРО.Net какая версия?<br />в SDK смотрели примеры по vb?<br /> \Program Files (x86)\Crypto Pro\.NET SDK\Examples\simple.zip</td></tr></table>2021-09-06T23:20:44+03:002021-09-06T23:20:44+03:00Андрей *<table class="content postContainer_Alt" width="100%"><tr><td>Тип подписи какой требуется cms\xmldsig?<br /><br />КриптоПРО.Net какая версия?<br />в SDK смотрели примеры по vb?<br /> \Program Files (x86)\Crypto Pro\.NET SDK\Examples\simple.zip</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid127092:1Не удаётся присвоить сертификат в поле CPSigner.Certificate (CAdESCOM)<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Андрей * <a href="/forum2/default.aspx?g=posts&m=127091#post127091"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Здравствуйте.<br /><br />c#?<br />Полностью код\проект, который воспроизодит проблему? <br />.. </div></div><br /><br />Visual Basic<br /><br />Вроде бы ничего необычного, переделывал проект под библиотеку CAdESCOM по примерам с этого сайта.<br /><br />' Пример подписи и проверки подписи всего xml документа.<br />Imports System<br />Imports System.Security.Cryptography<br />Imports System.Security.Cryptography.Xml<br />Imports System.Security.Cryptography.X509Certificates<br />Imports System.Text<br />Imports System.Xml<br /><br />Module Module1<br /> Const CAPICOM_CURRENT_USER_STORE = 2<br /> Const CAPICOM_MY_STORE = "My"<br /> Const CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2<br /> Const CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1<br /> Const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0<br /> Const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1<br /> Const XmlDsigGost3410UrlObsolete = "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"<br /> Const XmlDsigGost3411UrlObsolete = "http://www.w3.org/2001/04/xmldsig-more#gostr3411"<br /> Const XmlDsigGost3410Url = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411"<br /> Const XmlDsigGost3411Url = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411"<br /><br /> <STAThread()><br /> Sub Main(ByVal args As String())<br /> ' Разбираем аргументы<br /> If (args.Length < 1) Then<br /> Console.WriteLine("ConsoleXMLDSigApp2.exe <CertificateSerialNumberWithoutBlanks>")<br /> Return<br /> End If<br /><br /> run(args(0))<br /><br /> Console.ReadKey()<br /> End Sub<br /><br /> Function GetCertificateBySubjectName(certSerialNumber)<br /> Dim Store = CreateObject("CAdESCOM.Store")<br /> Store.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE,<br /> CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED)<br /><br /> Dim Cert<br /> Dim Certificates = Nothing<br /><br /> For Each Cert In Store.Certificates<br /> If Cert.SerialNumber = certSerialNumber Then<br /> Certificates = Cert<br /> Exit For<br /> End If<br /> Next<br /><br /> If Store.Certificates.Count = 0 Then<br /> Console.WriteLine("Certificate not found: " + certSerialNumber)<br /> Exit Function<br /> End If<br /> Dim Certificate = Store.Certificates.Item(1)<br /> Store.Close()<br /> Return Certificate<br /> End Function<br /><br /> Function SignCreate(Certificate, dataToSign)<br /><br /> ' Создаем объект CAdESCOM.CPSigner<br /> Dim Signer = CreateObject("CAdESCOM.CPSigner")<br /><br /> Signer.Certificate = Certificate<br /><br /> ' Создаем объект CAdESCOM.SignedXML<br /> Dim SignedXML = CreateObject("CAdESCOM.SignedXML")<br /> SignedXML.Content = dataToSign<br /><br /> ' Указываем тип подписи - в данном случае вложенная<br /> SignedXML.SignatureType = CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED<br /><br /> ' Указываем алгоритм подписи<br /> SignedXML.SignatureMethod = XmlDsigGost3410Url<br /><br /> ' Указываем алгоритм хэширования<br /> SignedXML.DigestMethod = XmlDsigGost3411Url<br /><br /> Dim SignedMessage As String = ""<br /> Try<br /> SignedMessage = SignedXML.Sign(Signer)<br /> Catch ex As Exception<br /> Console.WriteLine("Failed to create signature. Error: " + ex.Message)<br /> Exit Function<br /> End Try<br /><br /> Return SignedMessage<br /> End Function<br /><br /> Function Verify(SignedMessage)<br /><br /> ' Создаем объект CAdESCOM.SignedXML<br /> Dim SignedXML = CreateObject("CAdESCOM.SignedXML")<br /><br /> Try<br /> SignedXML.Verify(SignedMessage)<br /> Catch ex As Exception<br /> Console.WriteLine("Failed to verify signature. Error: " + ex.Message)<br /> Return False<br /> End Try<br /><br /> Return True<br /> End Function<br /><br /> Function run(CertName As String)<br /> If ("" = CertName) Then<br /> Console.WriteLine("Введите имя сертификата (CN).")<br /> Exit Function<br /> End If<br /><br /> ' Ищем сертификат для подписи<br /> Dim Certificate = GetCertificateBySubjectName(CertName)<br /><br /> Dim Content As String = SourceDocument<br /><br /> Dim signedMessage = SignCreate(Certificate, Content)<br /><br /> Console.WriteLine(signedMessage)<br /><br /> Dim verifyResult = Verify(signedMessage)<br /> If (verifyResult) Then<br /> Console.WriteLine("Signature verified")<br /> End If<br /> End Function<br /><br /> ' Тестовый документ для подписи / проверки.<br /> Dim SourceDocument As String = "" &<br /> "<ЭДПФР xmlns = ""http://пф.рф/СЗВ-ТД/2020-09-26"" xmlns:АФ5=""http://пф.рф/АФ/2018-12-07"" xmlns:УТ2=""http://пф.рф/УТ/2017-08-21"">" &<br /> " <СЗВ-ТД>" &<br /> " <Работодатель>" &<br /> " <УТ2:РегНомер>099-099-154154</УТ2:РегНомер>" &<br /> " <НаименованиеОрганизации>_тест_Демо организация 1</НаименованиеОрганизации>" &<br /> " <УТ2:ИНН>9676756170</УТ2:ИНН>" &<br /> " <УТ2:КПП>999901001</УТ2:КПП>" &<br /> " </Работодатель>" &<br /> " <ЗЛ>" &<br /> " <УТ2:ФИО>" &<br /> " <УТ2:Фамилия>Иванов</УТ2:Фамилия>" &<br /> " <УТ2:Имя>Иван</УТ2:Имя>" &<br /> " <УТ2:Отчество>Иванович</УТ2:Отчество>" &<br /> " </УТ2:ФИО>" &<br /> " <ДатаРождения>1990-01-01</ДатаРождения>" &<br /> " <УТ2:СНИЛС>175-577-998 44</УТ2:СНИЛС>" &<br /> " <ТрудоваяДеятельность>" &<br /> " <Мероприятие>" &<br /> " <UUID>cdb7cac6-31e1-4d3d-bb84-6a70be6bccc6</UUID>" &<br /> " <Дата>2021-08-13</Дата>" &<br /> " <Вид>1</Вид>" &<br /> " <Сведения>Прием на работу</Сведения>" &<br /> " <Должность>Сотрудник</Должность>" &<br /> " <ВидПР>Страховые агенты</ВидПР>" &<br /> " <КодВФпоОКЗ>3321.8</КодВФпоОКЗ>" &<br /> " <Основание>" &<br /> " <Наименование>Приказ</Наименование>" &<br /> " <Дата>2021-08-13</Дата>" &<br /> " <Номер>102</Номер>" &<br /> " <Серия>102</Серия>" &<br /> " </Основание>" &<br /> " </Мероприятие>" &<br /> " </ТрудоваяДеятельность>" &<br /> " </ЗЛ>" &<br /> " <ДатаЗаполнения>2021-08-16</ДатаЗаполнения>" &<br /> " <Руководитель>" &<br /> " <УТ2:ФИО>" &<br /> " <УТ2:Фамилия>Евсеев</УТ2:Фамилия>" &<br /> " <УТ2:Имя>Юстин</УТ2:Имя>" &<br /> " <УТ2:Отчество>Тестович</УТ2:Отчество>" &<br /> " </УТ2:ФИО>" &<br /> " <УТ2:Должность>бухгалтер</УТ2:Должность>" &<br /> " </Руководитель>" &<br /> " </СЗВ-ТД>" &<br /> " <СлужебнаяИнформация>" &<br /> " <АФ5:GUID>cea9cb8b-9080-4d14-8ab2-7540cbcc1a6d</АФ5:GUID>" &<br /> " <АФ5:ДатаВремя>2021-08-16T15:52:01+03:00</АФ5:ДатаВремя>" &<br /> " </СлужебнаяИнформация>" &<br /> "</ЭДПФР>"<br /><br />End Module</td></tr></table>2021-09-06T22:23:53+03:002021-09-06T22:23:53+03:00ch1raQQQ<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Андрей * <a href="/forum2/default.aspx?g=posts&m=127091#post127091"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Здравствуйте.<br /><br />c#?<br />Полностью код\проект, который воспроизодит проблему? <br />.. </div></div><br /><br />Visual Basic<br /><br />Вроде бы ничего необычного, переделывал проект под библиотеку CAdESCOM по примерам с этого сайта.<br /><br />' Пример подписи и проверки подписи всего xml документа.<br />Imports System<br />Imports System.Security.Cryptography<br />Imports System.Security.Cryptography.Xml<br />Imports System.Security.Cryptography.X509Certificates<br />Imports System.Text<br />Imports System.Xml<br /><br />Module Module1<br /> Const CAPICOM_CURRENT_USER_STORE = 2<br /> Const CAPICOM_MY_STORE = "My"<br /> Const CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2<br /> Const CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1<br /> Const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0<br /> Const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1<br /> Const XmlDsigGost3410UrlObsolete = "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"<br /> Const XmlDsigGost3411UrlObsolete = "http://www.w3.org/2001/04/xmldsig-more#gostr3411"<br /> Const XmlDsigGost3410Url = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411"<br /> Const XmlDsigGost3411Url = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411"<br /><br /> <STAThread()><br /> Sub Main(ByVal args As String())<br /> ' Разбираем аргументы<br /> If (args.Length < 1) Then<br /> Console.WriteLine("ConsoleXMLDSigApp2.exe <CertificateSerialNumberWithoutBlanks>")<br /> Return<br /> End If<br /><br /> run(args(0))<br /><br /> Console.ReadKey()<br /> End Sub<br /><br /> Function GetCertificateBySubjectName(certSerialNumber)<br /> Dim Store = CreateObject("CAdESCOM.Store")<br /> Store.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE,<br /> CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED)<br /><br /> Dim Cert<br /> Dim Certificates = Nothing<br /><br /> For Each Cert In Store.Certificates<br /> If Cert.SerialNumber = certSerialNumber Then<br /> Certificates = Cert<br /> Exit For<br /> End If<br /> Next<br /><br /> If Store.Certificates.Count = 0 Then<br /> Console.WriteLine("Certificate not found: " + certSerialNumber)<br /> Exit Function<br /> End If<br /> Dim Certificate = Store.Certificates.Item(1)<br /> Store.Close()<br /> Return Certificate<br /> End Function<br /><br /> Function SignCreate(Certificate, dataToSign)<br /><br /> ' Создаем объект CAdESCOM.CPSigner<br /> Dim Signer = CreateObject("CAdESCOM.CPSigner")<br /><br /> Signer.Certificate = Certificate<br /><br /> ' Создаем объект CAdESCOM.SignedXML<br /> Dim SignedXML = CreateObject("CAdESCOM.SignedXML")<br /> SignedXML.Content = dataToSign<br /><br /> ' Указываем тип подписи - в данном случае вложенная<br /> SignedXML.SignatureType = CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED<br /><br /> ' Указываем алгоритм подписи<br /> SignedXML.SignatureMethod = XmlDsigGost3410Url<br /><br /> ' Указываем алгоритм хэширования<br /> SignedXML.DigestMethod = XmlDsigGost3411Url<br /><br /> Dim SignedMessage As String = ""<br /> Try<br /> SignedMessage = SignedXML.Sign(Signer)<br /> Catch ex As Exception<br /> Console.WriteLine("Failed to create signature. Error: " + ex.Message)<br /> Exit Function<br /> End Try<br /><br /> Return SignedMessage<br /> End Function<br /><br /> Function Verify(SignedMessage)<br /><br /> ' Создаем объект CAdESCOM.SignedXML<br /> Dim SignedXML = CreateObject("CAdESCOM.SignedXML")<br /><br /> Try<br /> SignedXML.Verify(SignedMessage)<br /> Catch ex As Exception<br /> Console.WriteLine("Failed to verify signature. Error: " + ex.Message)<br /> Return False<br /> End Try<br /><br /> Return True<br /> End Function<br /><br /> Function run(CertName As String)<br /> If ("" = CertName) Then<br /> Console.WriteLine("Введите имя сертификата (CN).")<br /> Exit Function<br /> End If<br /><br /> ' Ищем сертификат для подписи<br /> Dim Certificate = GetCertificateBySubjectName(CertName)<br /><br /> Dim Content As String = SourceDocument<br /><br /> Dim signedMessage = SignCreate(Certificate, Content)<br /><br /> Console.WriteLine(signedMessage)<br /><br /> Dim verifyResult = Verify(signedMessage)<br /> If (verifyResult) Then<br /> Console.WriteLine("Signature verified")<br /> End If<br /> End Function<br /><br /> ' Тестовый документ для подписи / проверки.<br /> Dim SourceDocument As String = "" &<br /> "<ЭДПФР xmlns = ""http://пф.рф/СЗВ-ТД/2020-09-26"" xmlns:АФ5=""http://пф.рф/АФ/2018-12-07"" xmlns:УТ2=""http://пф.рф/УТ/2017-08-21"">" &<br /> " <СЗВ-ТД>" &<br /> " <Работодатель>" &<br /> " <УТ2:РегНомер>099-099-154154</УТ2:РегНомер>" &<br /> " <НаименованиеОрганизации>_тест_Демо организация 1</НаименованиеОрганизации>" &<br /> " <УТ2:ИНН>9676756170</УТ2:ИНН>" &<br /> " <УТ2:КПП>999901001</УТ2:КПП>" &<br /> " </Работодатель>" &<br /> " <ЗЛ>" &<br /> " <УТ2:ФИО>" &<br /> " <УТ2:Фамилия>Иванов</УТ2:Фамилия>" &<br /> " <УТ2:Имя>Иван</УТ2:Имя>" &<br /> " <УТ2:Отчество>Иванович</УТ2:Отчество>" &<br /> " </УТ2:ФИО>" &<br /> " <ДатаРождения>1990-01-01</ДатаРождения>" &<br /> " <УТ2:СНИЛС>175-577-998 44</УТ2:СНИЛС>" &<br /> " <ТрудоваяДеятельность>" &<br /> " <Мероприятие>" &<br /> " <UUID>cdb7cac6-31e1-4d3d-bb84-6a70be6bccc6</UUID>" &<br /> " <Дата>2021-08-13</Дата>" &<br /> " <Вид>1</Вид>" &<br /> " <Сведения>Прием на работу</Сведения>" &<br /> " <Должность>Сотрудник</Должность>" &<br /> " <ВидПР>Страховые агенты</ВидПР>" &<br /> " <КодВФпоОКЗ>3321.8</КодВФпоОКЗ>" &<br /> " <Основание>" &<br /> " <Наименование>Приказ</Наименование>" &<br /> " <Дата>2021-08-13</Дата>" &<br /> " <Номер>102</Номер>" &<br /> " <Серия>102</Серия>" &<br /> " </Основание>" &<br /> " </Мероприятие>" &<br /> " </ТрудоваяДеятельность>" &<br /> " </ЗЛ>" &<br /> " <ДатаЗаполнения>2021-08-16</ДатаЗаполнения>" &<br /> " <Руководитель>" &<br /> " <УТ2:ФИО>" &<br /> " <УТ2:Фамилия>Евсеев</УТ2:Фамилия>" &<br /> " <УТ2:Имя>Юстин</УТ2:Имя>" &<br /> " <УТ2:Отчество>Тестович</УТ2:Отчество>" &<br /> " </УТ2:ФИО>" &<br /> " <УТ2:Должность>бухгалтер</УТ2:Должность>" &<br /> " </Руководитель>" &<br /> " </СЗВ-ТД>" &<br /> " <СлужебнаяИнформация>" &<br /> " <АФ5:GUID>cea9cb8b-9080-4d14-8ab2-7540cbcc1a6d</АФ5:GUID>" &<br /> " <АФ5:ДатаВремя>2021-08-16T15:52:01+03:00</АФ5:ДатаВремя>" &<br /> " </СлужебнаяИнформация>" &<br /> "</ЭДПФР>"<br /><br />End Module</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid127091:1Не удаётся присвоить сертификат в поле CPSigner.Certificate (CAdESCOM)<table class="content postContainer_Alt" width="100%"><tr><td>Здравствуйте.<br /><br />c#?<br />Полностью код\проект, который воспроизодит проблему? <br />.. </td></tr></table>2021-09-06T22:15:42+03:002021-09-06T22:15:42+03:00Андрей *<table class="content postContainer_Alt" width="100%"><tr><td>Здравствуйте.<br /><br />c#?<br />Полностью код\проект, который воспроизодит проблему? <br />.. </td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid127090:1Не удаётся присвоить сертификат в поле CPSigner.Certificate (CAdESCOM)<table class="content postContainer" width="100%"><tr><td>Столкнулся со следующей проблемой:<br /><br /><em>Signer = CreateObject("CAdESCOM.CPSigner")<br />Signer.Certificate = Certificate</em><br /><br />Выдаёт следующее исключение:<br /><br /><strong>System.Runtime.InteropServices.COMException: "Член группы не найден. (Исключение из HRESULT: 0x80020003 (DISP_E_MEMBERNOTFOUND))"</strong><br /><br />Данная проблема поднималась в этом обсуждении (<a rel="nofollow" href="https:////www.cryptopro.ru/forum2/default.aspx?g=posts&t=12159" title="https:////www.cryptopro.ru/forum2/default.aspx?g=posts&t=12159">//www.cryptopro.ru/forum2/default.aspx?g=posts&t=12159</a>), но решена она не была.<br /><br />Может быть кто-то знает, как это исправить?</td></tr></table>2021-09-06T22:15:22+03:002021-09-06T22:15:22+03:00ch1raQQQ<table class="content postContainer" width="100%"><tr><td>Столкнулся со следующей проблемой:<br /><br /><em>Signer = CreateObject("CAdESCOM.CPSigner")<br />Signer.Certificate = Certificate</em><br /><br />Выдаёт следующее исключение:<br /><br /><strong>System.Runtime.InteropServices.COMException: "Член группы не найден. (Исключение из HRESULT: 0x80020003 (DISP_E_MEMBERNOTFOUND))"</strong><br /><br />Данная проблема поднималась в этом обсуждении (<a rel="nofollow" href="https:////www.cryptopro.ru/forum2/default.aspx?g=posts&t=12159" title="https:////www.cryptopro.ru/forum2/default.aspx?g=posts&t=12159">//www.cryptopro.ru/forum2/default.aspx?g=posts&t=12159</a>), но решена она не была.<br /><br />Может быть кто-то знает, как это исправить?</td></tr></table>