|
slava999 |
|
|
Статус: Новичок Группы: Участники Поблагодарили: 1 раз в 1 постах |
Добрый день! |
![]() |
|
|
basid |
|
|
Статус: Активный участник Группы: Участники Сказал(а) «Спасибо»: 6 раз |
Частые ошибки СУФД? |
![]() |
|
|
MechGun |
|
|
Статус: Новичок Группы: Участники
|
Автор: basid Частые ошибки СУФД? Там нет такой ошибки. У меня аналогичная проблема. Криптопро 4.0, windows 10, java 7.51, 8.114, 8.112, ,под всеми браузерами симптомы одинаковые. |
![]() |
WWW |
|
slava999 |
|
|
Статус: Новичок Группы: Участники Поблагодарили: 1 раз в 1 постах |
Ключ в контейнере привязан. |
![]() |
|
|
slava999 |
|
|
Статус: Новичок Группы: Участники Поблагодарили: 1 раз в 1 постах |
Сам написал, сам отвечаю. Результат — кривое ПО под операционки 64Bit. Отредактировано пользователем 25 июля 2017 г. 8:47:53(UTC) |
![]() |
|
|
|
B.R@ven
оставлено 10.08.2017(UTC) |
|
B.R@ven |
|
|
Статус: Участник Группы: Участники Сказал «Спасибо»: 3 раз |
вот сейчас весь день котам под хвост Отредактировано пользователем 3 августа 2017 г. 4:15:24(UTC) |
![]() |
|
|
Андрей Писарев |
|
|
Статус: Сотрудник Группы: Участники Сказал «Спасибо»: 451 раз |
Здравствуйте. 1) КриптоПРО 4.0 R2? |
|
Техническую поддержку оказываем тут |
|
![]() |
WWW |
|
B.R@ven |
|
|
Статус: Участник Группы: Участники Сказал «Спасибо»: 3 раз |
1. да PS сегодня , один из банк клиентов отвалился..после экспериментов с версиями криптопро..в поддержке попросили вернуться хотябы до R1…вроде бы мелочь..но у вас склада версий не нашел…не поделитесь ?;) |
![]() |
|
|
Константин Маслов |
|
|
Статус: Сотрудник Группы: Участники Поблагодарили: 34 раз в 33 постах |
Автор: B.R@ven 1. да PS сегодня , один из банк клиентов отвалился..после экспериментов с версиями криптопро..в поддержке попросили вернуться хотябы до R1…вроде бы мелочь..но у вас склада версий не нашел…не поделитесь ?;) Доброе утро выходного дня субботы 🙂 Если работа в СУФД, вероятно применяется через VPN подключение Континент-АП. Цитата: https://www.securitycode.ru/prod…i-kontinent-ap/required/ Windows XP Professional SP3 x86; 2) Криптопровайдеров КриптоПро CSP и Код Безопасности CSP. Посмотрите и аналогично аккуратно повторите Цитата: http://www.cryptopro.ru/forum2/…ts&m=78876#post78876 Если Windows x86 только в первой ветке реестра. Если Windows x64 тогда в двух ветках реестра. Напишите о результате. |
|
Техническую поддержку оказываем на Портале технической поддержки. |
|
![]() |
|
|
|
Alex_04
оставлено 07.02.2018(UTC) |
|
B.R@ven |
|
|
Статус: Участник Группы: Участники Сказал «Спасибо»: 3 раз |
бухи все еще сидят на 7про х64 сейчас попробовал с ноута с вин 10 Код:
пока поднимаю виртуалку с 7про х86 |
![]() |
|
| Пользователи, просматривающие эту тему |
|
Guest |
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
**** РЕДАКТИРОВАТЬ: Спасибо за эти ссылки, @Hackerman. Мне удалось заставить его работать в Postman, а затем в Powershell, используя образец почтальона Docusign. Однако я не могу заставить его работать с моими собственными PDF-документами. Я подозреваю, что это связано с тем, что я неправильно конвертирую свои PDF-файлы в Base64. Кто-нибудь знает, как это можно сделать через Powershell? ****
EDIT2: смог закодировать мои PDF-файлы в Base64 через PowerShell с помощью этого простого однострочника.
$ docEncodedBase64 = [Конвертировать] :: ToBase64String ((Get-Content $ PDFPath -Encoding Byte))
Мы пытаемся использовать Powershell 5.0 (и командлет invoke-restmethod), чтобы делать запросы к docusign REST API, чтобы отправить запрос на подпись по электронной почте.
В своих тестах я следовал этому руководству: https://docs.docusign.com/esign/guide/usage/request_a_signature.html#prepare-the-document-to-send-through-docusign, но когда я получаю сообщение об ошибке отправить мой запрос POST
Мы идем по маршруту обычного запроса (т. Е. Не запроса, состоящего из нескольких частей) и, таким образом, предоставляем документ PDF в виде байтов в формате с кодировкой base64 в качестве значения свойства documentBase64.
Вот мой код для преобразования PDF в байты base64:
# PDF document
$docContent = Get-Content 'Mutual_NDA.pdf'
# PDF as bytes
$docBytes = [System.Text.Encoding]::Unicode.GetBytes($docContent)
# PDF as Base-64 Encoded bytes
$docEncoded = [System.Convert]::ToBase64String($docBytes)
Затем я определяю свои полезные данные JSON, которые будут отправлены как тело в запросе POST. Здесь я установил свойство documentBase64 для строки в кодировке base64, которую я только что преобразовал выше.
# JSON payload
$jsonPayload = @"
{
"documents": [
{
**"documentBase64": "$docEncoded"**,
"documentId": "1",
"fileExtension": "pdf",
"name": "Mutual_NDA.pdf"
}
],
"emailSubject": "Please sign the NDA",
"recipients": {
"signers": [
{
"email": "the_nda_signer@mailinator.com",
"name": "Tester test",
"recipientId": "1",
"routingOrder": "1",
"tabs": {
"dateSignedTabs": [
{
"anchorString": "signer1date",
"anchorYOffset": "-6",
"fontSize": "Size12",
"name": "Date Signed",
"recipientId": "1",
"tabLabel": "date_signed"
}
],
"fullNameTabs": [
{
"anchorString": "signer1name",
"anchorYOffset": "-6",
"fontSize": "Size12",
"name": "Full Name",
"recipientId": "1",
"tabLabel": "Full Name"
}
],
"signHereTabs": [
{
"anchorString": "signer1sig",
"anchorUnits": "mms",
"anchorXOffset": "0",
"anchorYOffset": "0",
"name": "Please sign here",
"optional": "false",
"recipientId": "1",
"scaleValue": 1,
"tabLabel": "signer1sig"
}
]
}
}
]
},
"status": "sent"
}
"@
И, наконец, HTTP-запрос:
$Envelope = Invoke-RestMethod -uri ($BaseURL + '/envelopes') -Method Post -Body $jsonPayload -ContentType 'application/json' -Headers @{"X-Docusign-Authentication" = $XMLHeader}
У кого-нибудь есть опыт в этом? Возможно, я неправильно кодирую PDF как base64? Я действительно застрял. Любая помощь приветствуется! Спасибо,
Эрик
31.08.22 — 09:18
Пытаюсь отправить в ЧЗ документ «Вывод из оборота».
Токен получаю — ОК
Файл документа в JSON кодирую в Base64 (написана функция в 7.7 — проходит проверку на правильность кодирования в онлайн-сервисе, всё ОК
Файл Файл документа в JSON подписываю подписью по отпечатку сертификата консольной утилитой cryptcp (подпись откреплена) — проходит проверку на корректность утилитой Крипто-ПРО
Всё это в формате JSON отсылаю в ЧЗ посредством WinHTTP. В ответ получаю код 201 (принят) и GUID.
Документ появляется в ЧЗ со статусом «Обработано с ошибками». Ошибка 02:ИНН не соответствует данным текущего участника» и 33:Проверка электронной подписи не пройдена»
До этого пробовал подписывать через CAPICOM как напрямую из 7.7, так и через скрипт vbs — результат такой же. Единственное, что в этих случаях подписанный файл не проходил проверку в утилите Крипто-ПРО.
Уже и не знаю куда копать.
з.ы. может ЧЗ намеренно закрыл такой вариант? Потому как интерактивно из файла «Вывод из оборота» нельзя загрузить с объемно-сортовым учетом — только вручную заводить.
1 — 31.08.22 — 11:09
(0) А как же тогда операторы ЭДО передают данные в ЧЗ в формате ОСУ?
2 — 31.08.22 — 11:26
(1) Через ЭДО такие документы не передают. Разве нет? Вроде как только юридически значимые документы — УПД и т.п.
3 — 31.08.22 — 11:33
вроде вывод по прочим основаниям — пока по ОСУ, т.е напрямую в ЧЗ, без ЭДО
4 — 31.08.22 — 11:57
для 77, это какая-то своя доработка под ЧЗ?
5 — 31.08.22 — 12:10
(2) я имел ввиду не форму документа, а передачу данных по ОСУ
(3) ЧЗ огорчил с ОСУ, его нельзя загрузить через документ на сайте. Только ввод в ручном режиме.
6 — 31.08.22 — 12:52
(4) Да, конечно. И что-то не заладилось с ним.
Пробовал подписывать консольным приложением cryptcp.exe. Данные подписи получаются разные в сравнении с подписью через CAPICOM. И получается так, что токен невозможно получить, если подписать его cryptcp. Сцуко — магия какая-то )))
з.ы. пора копать могилу клюшкам )))
7 — 31.08.22 — 12:53
(6) При всем при этом все подписи проходят проверку и подписываются одни и те же данные )
8 — 12.09.22 — 05:32
Решение есть, хоронить клюшки рано.
1. Записать текст в файл UTF-8 без BOM
2. Подписать текст из файла через скрипт, через создание com объекта CAdESCOM.CadesSignedData не получиться.
ну или использовать уже готовое решение.
Обмен ЦРПТ (Честный ЗНАК) для 1С 7.7 //ГИСМТ, ЭДО, ОСУ, молочная продукция, вода и пр.//
9 — 12.09.22 — 08:42
(9) «ну или использовать уже готовое решение.»
Виктуан как то подписывает и отсылает?, значит есть рабочие варианты….
10 — 12.09.22 — 10:31
Да там полноценная работа с документам ГИСМТ и СУЗ прямой подачи запросов в формате json.
11 — 13.09.22 — 00:04
Все в клюшках работает, делал года 2 назад еще полноценный механизм формирования, подписания и отправки схем по таблеткам (МДЛП). Правда для подписания и конвертации в UTF использовались вставки на vbs в код
12 — 13.09.22 — 00:07
И для кодирования в Base64 тоже вставки делал, на 1с уж очень оно медленно работало.
13 — 15.09.22 — 08:52
(1) удалось побороть Вашу проблему?
14 — 16.09.22 — 08:32
CryptoPro переставь
15 — 16.09.22 — 10:04
(11) Можно код посмотреть?
(13) Нет, не получилось. Быстренько через КД2 сделал выгрузку в УТ11.5, оттуда пока что выгружаем данные.
(14) Пробовал конечно же, не помогло.
serpentt
16 — 16.09.22 — 15:19
(15) если получится… поделись
Область применения электронной подписи (ЭП или ЭЦП) довольно широка. Например, многие специальные сервисы требуют верификации пользователя с её помощью: Госуслуги, онлайн-сервисы для управления средствами в банке, электронные площадки и другие. Поэтому любые технические неполадки, возникающие при использовании ЭЦП, могут вызвать различные серьёзные: от упущенной выгоды до материальных убытков.
Какие бывают ошибки
Проблемы при использовании ЭП, с которыми пользователи встречаются чаще всего, можно условно разделить на три группы:
- Проблемы с сертификатом. Они появляются, когда сертификат не выбран, не найден или не верен.
- Проблемы с подписанием документа. Ошибки возникают при попытке подписать документ.
- Проблема при авторизации на торговых площадках.
Рассмотрим неполадки подробнее и разберёмся, как их решать.
Сертификат не найден
Иногда при попытке подписать электронный документ с помощью ЭП пользователь может столкнуться с ошибкой «Не удалось найти ни одного сертификата, пригодного для создания подписи».
У подобных ошибок могут быть следующие причины:
- На компьютере не установлены корневые сертификаты Удостоверяющего Центра (УЦ), в котором была получена ЭП. Необходимо установить либо обновить корневой сертификат. Установка корневых сертификатов удостоверяющего центра подробно описана в нашей инструкции.
- На ПК не установлено ни одного личного сертификата ЭП. Для применения ЭП необходимы и личные сертификаты. Об их установке мы писали в другой статье.
- Установленные на компьютере необходимые сертификаты не валидны. Сертификаты отозваны или просрочены. Уточните статус сертификата в УЦ. Ошибка с текстом «Ваш сертификат ключа подписи включён в список отозванных» возникает, если у сертификата закончился срок действия или на ПК нужно обновить список сертификатов. В последней ситуации следует вручную загрузить перечень отозванных сертификатов.
Для установки списка отозванных сертификатов:
- Откройте личный сертификат пользователя в окне Свойства браузера. Чтобы открыть его, наберите «Свойства браузера» в поисковой строке меню Пуск. Перейдите во вкладку Содержание и нажмите кнопку «Сертификаты».
- Во вкладке Состав выберите из списка пункт «Точки распространения списков отзыва».
- В блоке Имя точки распространения скопируйте ссылку на загрузку файла со списком отзыва.
- Скачайте по указанной ссылке файл. Нажмите по нему правой кнопкой мыши и выберите в контекстном меню «Установить список отзыва (CRL)».
- Следуйте указаниям «Мастера импорта сертификатов».


Не виден сертификат на носителе
Как правило, причина такой проблемы — сбой в работе программных компонентов. Для её решения достаточно перезагрузить компьютер. Однако иногда этого бывает недостаточно, поэтому требуется переустановка драйверов или обращение в службу техподдержки.
К наиболее распространённым причинам такой проблемы относятся следующие случаи:
- Драйвер носителя не установлен или установлен некорректно. Для решения проблемы необходимо извлечь носитель электронной подписи из ПК и скачать последнюю версию драйвера носителя с официальных ресурсов. Если переустановка драйвера не помогла, подключите носитель к другому ПК, чтобы убедиться в исправности токена. Если токен определится другой системой, попробуйте удалить на неисправном компьютере драйвер носителя и установить его заново.
- Долгое опознание носителя. Для решения проблемы необходимо дождаться завершения процесса или обновить версию операционной системы.
- Некорректная работа USB-порта. Подключите токен к другому USB-порту, чтобы убедиться, что проблема не в носителе ЭП. Если система определила токен, перезагрузите компьютер. Если это не поможет, следует обратиться службу технической поддержки.
- Неисправность носителя. Если при подключении токена к другому компьютеру или USB-порту система не определяет его, значит, проблема в самом носителе. Устранение неисправности возможно в данном случае лишь одним путём — нужно обратиться в сервисный центр для выпуска нового носителя.
ЭП не подписывает документ
Причин у подобной проблемы множество. Каждый случай требует отдельной проверки. Среди самых распространённых можно выделить следующие неполадки:
- Закрытый ключ на используемом контейнере не соответствует открытому ключу сертификата. Возможно, был выбран не тот контейнер, поэтому следует проверить все закрытые контейнеры на компьютере. Если необходимый контейнер по тем или иным причинам отсутствует, владельцу придётся обращаться в удостоверяющий центр для перевыпуска ЭП.
- Ошибка «Сертификат недействителен» (certificate is not valid). Следует повторно установить сертификат ЭП по инструкциям УЦ в зависимости от используемого криптопровайдера — КриптоПро CSP, ViPNet CSP или другого.
- Сертификат ЭП определяется как непроверенный. В этом случае необходимо переустановить корневой сертификат удостоверяющего центра.
- Истёк срок действия криптопровайдера. Для решения этой проблемы необходим новый лицензионный ключ к программе-криптопровайдеру. Для его получения необходимо обращаться к специалистам УЦ или к ответственным сотрудникам своей организации.
- Подключён носитель с другим сертификатом. Убедитесь, что подключён правильный токен. Проверьте также, не подключены ли носители других сертификатов. Отключите другие носители в случае их обнаружения.
В момент подписания электронных документов или формирования запроса в различных может возникнуть ошибка «Невозможно создание объекта сервером программирования объектов».

В этой ситуации помогает установка и регистрация библиотеки Capicom:
- Скачайте файл архива.
- Распакуйте и переместите файлы capicom.dll и capicom.inf в каталог syswow64, находящийся в корневой папке ОС.
- Откройте командную строку от имени администратора — для этого в меню Пуск наберите «Командная строка», нажмите по найденному приложению правой кнопкой мыши и выберите Запуск от имени администратора.
- Введите «c:windowssyswow64regsvr32.exe capicom.dll» (без кавычек) и нажмите ENTER. Должно появиться уведомление о том, что команда выполнена успешно.


Выбранная подпись не авторизована
Подобная ошибка возникает при попытке авторизации в личном кабинете на электронных торговых площадках. Например, при входе на площадку ZakazRF отображается сообщение «Выбранная ЭЦП не авторизована».

Эта ошибка возникает из-за того, что пользователь не зарегистрирован на площадке, либо не зарегистрирован новый сертификат ключа ЭП. Решением проблемы будет регистрация нового сертификата.
Процесс запроса на авторизацию ЭП на разных торговых площадках может отличаться: часто нужно отправлять запрос оператору системы на авторизацию, иногда рабочее место настраивается автоматически.
Если ошибка сохраняется, возможно, следует отключить защитное ПО или добавить сайт электронной площадки в исключения.
Часто задаваемые вопросы
Почему компьютер не видит ЭЦП?
Причина кроется в несовместимости программного обеспечения и физического носителя ЭЦП. Необходимо проверить версию операционной системы и переустановить её до нужной версии. Если токен повреждён, возможно, понадобится обратиться в удостоверяющий центр для перевыпуска электронной подписи.
О том, что делать, если компьютер не видит ЭЦП и о способах проверки настроек, мы подробно писали в нашей статье.
Почему КриптоПро не отображает ЭЦП?
Если КриптоПро не отображает ЭЦП, следует проверить настройки браузера. Также исправляет ошибку добавление программы в веб-обозреватель и загрузка недостающих сертификатов электронной подписи.
Подробнее ознакомиться, как устранить данную неисправность можно в нашей статье.
Где на компьютере искать сертификаты ЭЦП?
Сертификат ЭЦП позволяет проверить подлинность подписи, содержит в себе срок её действия и информацию о владельце. Он автоматически загружается в папку с системными файлами. В операционной системе Windows от 7 версии и выше ЭЦП хранится по адресу:
C:UsersПОЛЬЗОВАТЕЛЬAppDataRoamingMicrosoftSystemCertificates. Вместо ПОЛЬЗОВАТЕЛЬ требуется указать наименование используемого компьютера.
Что такое сертификат ЭЦП и зачем он нужен мы рассказали в нашей статье.
- Remove From My Forums
-
Question
-
Sample code in XML.
public static void fund() { string filePath = @"C:UsersVIKASDesktopData.xml"; //Read the file XmlDocument xmlDoc = new XmlDocument(); XElement ele = XElement.Load(filePath); String Xml = ele.ToString(); xmlDoc.LoadXml(Xml); string signature = SignedXMLCert(xmlDoc); bool verified = ValidateSignature(signature); } public static string SignedXMLCert(XmlDocument xmlDoc) { string startupPath = AppDomain.CurrentDomain.BaseDirectory + @"Certificatesunidesk.p12"; // startupPath = AppDomain.CurrentDomain.BaseDirectory + @"CertificatesBBPS_enc.cer"; //X509Certificate2 cert = new X509Certificate2(@"D:SonalAXISOU_TEST.P12", "axisbank", X509KeyStorageFlags.Exportable); X509Certificate2 cert = new X509Certificate2(startupPath, "axisbank", X509KeyStorageFlags.Exportable); // string PrivateKey = GetRSAPrivateKeyBase64(cert); var privateKey = cert.PrivateKey as RSACryptoServiceProvider; SignedXml signedXml = new SignedXml(xmlDoc); signedXml.SigningKey = privateKey; // Create a reference to be signed. Reference reference = new Reference(); reference.Uri = ""; KeyInfo keyInfo = new KeyInfo(); //startupPath = AppDomain.CurrentDomain.BaseDirectory + @"CertificatesBBPS_enc.cer"; X509Certificate MSCert = new X509Certificate(startupPath, "axisbank", X509KeyStorageFlags.Exportable); // X509Certificate MSCert = X509Certificate.CreateFromCertFile(startupPath); keyInfo.AddClause(new KeyInfoX509Data(MSCert)); signedXml.KeyInfo = keyInfo; // Add an enveloped transformation to the reference. XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform(); reference.AddTransform(env); // Add the reference to the SignedXml object. signedXml.AddReference(reference); // Compute the signature. signedXml.ComputeSignature(); // Get the XML representation of the signature and save // it to an XmlElement object. XmlElement xmlDigitalSignature = signedXml.GetXml(); // Append the element to the XML document. xmlDoc.DocumentElement.AppendChild(xmlDoc.ImportNode(xmlDigitalSignature, true)); return xmlDoc.InnerXml.ToString(); } public static bool ValidateSignature(String signedServiceMetadataContent) { bool result = false; X509Certificate2 cert = GetCertificate(); //Load the key CspParameters csp = new CspParameters(); csp.KeyContainerName = cert.PublicKey.Key.ToString(); RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(csp); //Load XML document XmlDocument xmlDocument = new XmlDocument(); xmlDocument.PreserveWhitespace = true; xmlDocument.LoadXml(signedServiceMetadataContent); //create a SignedXml and load the xml document SignedXml signedXml = new SignedXml(xmlDocument); //find signature and create signature node list XmlNodeList xmlNodeList = xmlDocument.GetElementsByTagName("Signature"); if (xmlNodeList.Count <= 0) { throw new CryptographicException("Verification failed: No Signature was found in the document."); } // if more than one signature was found. if (xmlNodeList.Count >= 2) { throw new CryptographicException("Verification failed: More that one signature was found for the document."); } //Load signature into SignedXml signedXml.LoadXml((XmlElement)xmlNodeList[0]); //check the signature result = signedXml.CheckSignature(cert, true); //result = signedXml.CheckSignature(rsa); return result; } private static X509Certificate2 GetCertificate() { string startupPath = AppDomain.CurrentDomain.BaseDirectory + @"Certificatesunidesk.p12"; X509Certificate2 cert = new X509Certificate2(startupPath, "axisbank", X509KeyStorageFlags.Exportable); return new X509Certificate2(cert); }-
Edited by
Sunday, November 6, 2016 1:23 PM
edit
-
Edited by
Answers
-
Hi Vikas,
If your JSON file is the object you want to sign, then the following is the answer you want,
This text file named TextFile1 with your JSON data:
The test result is True.
string str = GetFileStr(@"TextFile1.txt"); //string str = "Hello World"; byte[] messagebytes = Encoding.UTF8.GetBytes(str); RSACryptoServiceProvider oRSA4ToKey = new RSACryptoServiceProvider(); string privtekey = oRSA4ToKey.ToXmlString(true); string publickey = oRSA4ToKey.ToXmlString(false); RSACryptoServiceProvider oRSA4 = new RSACryptoServiceProvider(); oRSA4.FromXmlString(privtekey); byte[] encryptedData = oRSA4.SignData(messagebytes, new SHA1CryptoServiceProvider()); RSACryptoServiceProvider oRSA4Verify = new RSACryptoServiceProvider(); oRSA4Verify.FromXmlString(publickey); bool bVerify = oRSA4Verify.VerifyData(messagebytes, new SHA1CryptoServiceProvider(), encryptedData);public string GetFileStr(string path) { string str = ""; using (StreamReader sr = new StreamReader(GetPath(path))) { sr.BaseStream.Seek(0, SeekOrigin.Begin); str = sr.ReadToEnd(); } return str; } public string GetPath(string path) { return Server.MapPath(path); }Best regards,
Kristin
MSDN Community Support
Please remember to click «Mark as Answer» the responses that resolved your issue, and to click «Unmark as Answer» if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to
MSDN Support, feel free to contact MSDNFSF@microsoft.com.-
Proposed as answer by
DotNet Wang
Thursday, November 10, 2016 8:49 AM -
Marked as answer by
Vikas Salve
Tuesday, September 4, 2018 5:17 AM
-
Proposed as answer by
- Remove From My Forums
-
Question
-
Sample code in XML.
public static void fund() { string filePath = @"C:UsersVIKASDesktopData.xml"; //Read the file XmlDocument xmlDoc = new XmlDocument(); XElement ele = XElement.Load(filePath); String Xml = ele.ToString(); xmlDoc.LoadXml(Xml); string signature = SignedXMLCert(xmlDoc); bool verified = ValidateSignature(signature); } public static string SignedXMLCert(XmlDocument xmlDoc) { string startupPath = AppDomain.CurrentDomain.BaseDirectory + @"Certificatesunidesk.p12"; // startupPath = AppDomain.CurrentDomain.BaseDirectory + @"CertificatesBBPS_enc.cer"; //X509Certificate2 cert = new X509Certificate2(@"D:SonalAXISOU_TEST.P12", "axisbank", X509KeyStorageFlags.Exportable); X509Certificate2 cert = new X509Certificate2(startupPath, "axisbank", X509KeyStorageFlags.Exportable); // string PrivateKey = GetRSAPrivateKeyBase64(cert); var privateKey = cert.PrivateKey as RSACryptoServiceProvider; SignedXml signedXml = new SignedXml(xmlDoc); signedXml.SigningKey = privateKey; // Create a reference to be signed. Reference reference = new Reference(); reference.Uri = ""; KeyInfo keyInfo = new KeyInfo(); //startupPath = AppDomain.CurrentDomain.BaseDirectory + @"CertificatesBBPS_enc.cer"; X509Certificate MSCert = new X509Certificate(startupPath, "axisbank", X509KeyStorageFlags.Exportable); // X509Certificate MSCert = X509Certificate.CreateFromCertFile(startupPath); keyInfo.AddClause(new KeyInfoX509Data(MSCert)); signedXml.KeyInfo = keyInfo; // Add an enveloped transformation to the reference. XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform(); reference.AddTransform(env); // Add the reference to the SignedXml object. signedXml.AddReference(reference); // Compute the signature. signedXml.ComputeSignature(); // Get the XML representation of the signature and save // it to an XmlElement object. XmlElement xmlDigitalSignature = signedXml.GetXml(); // Append the element to the XML document. xmlDoc.DocumentElement.AppendChild(xmlDoc.ImportNode(xmlDigitalSignature, true)); return xmlDoc.InnerXml.ToString(); } public static bool ValidateSignature(String signedServiceMetadataContent) { bool result = false; X509Certificate2 cert = GetCertificate(); //Load the key CspParameters csp = new CspParameters(); csp.KeyContainerName = cert.PublicKey.Key.ToString(); RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(csp); //Load XML document XmlDocument xmlDocument = new XmlDocument(); xmlDocument.PreserveWhitespace = true; xmlDocument.LoadXml(signedServiceMetadataContent); //create a SignedXml and load the xml document SignedXml signedXml = new SignedXml(xmlDocument); //find signature and create signature node list XmlNodeList xmlNodeList = xmlDocument.GetElementsByTagName("Signature"); if (xmlNodeList.Count <= 0) { throw new CryptographicException("Verification failed: No Signature was found in the document."); } // if more than one signature was found. if (xmlNodeList.Count >= 2) { throw new CryptographicException("Verification failed: More that one signature was found for the document."); } //Load signature into SignedXml signedXml.LoadXml((XmlElement)xmlNodeList[0]); //check the signature result = signedXml.CheckSignature(cert, true); //result = signedXml.CheckSignature(rsa); return result; } private static X509Certificate2 GetCertificate() { string startupPath = AppDomain.CurrentDomain.BaseDirectory + @"Certificatesunidesk.p12"; X509Certificate2 cert = new X509Certificate2(startupPath, "axisbank", X509KeyStorageFlags.Exportable); return new X509Certificate2(cert); }-
Edited by
Sunday, November 6, 2016 1:23 PM
edit
-
Edited by
Answers
-
Hi Vikas,
If your JSON file is the object you want to sign, then the following is the answer you want,
This text file named TextFile1 with your JSON data:
The test result is True.
string str = GetFileStr(@"TextFile1.txt"); //string str = "Hello World"; byte[] messagebytes = Encoding.UTF8.GetBytes(str); RSACryptoServiceProvider oRSA4ToKey = new RSACryptoServiceProvider(); string privtekey = oRSA4ToKey.ToXmlString(true); string publickey = oRSA4ToKey.ToXmlString(false); RSACryptoServiceProvider oRSA4 = new RSACryptoServiceProvider(); oRSA4.FromXmlString(privtekey); byte[] encryptedData = oRSA4.SignData(messagebytes, new SHA1CryptoServiceProvider()); RSACryptoServiceProvider oRSA4Verify = new RSACryptoServiceProvider(); oRSA4Verify.FromXmlString(publickey); bool bVerify = oRSA4Verify.VerifyData(messagebytes, new SHA1CryptoServiceProvider(), encryptedData);public string GetFileStr(string path) { string str = ""; using (StreamReader sr = new StreamReader(GetPath(path))) { sr.BaseStream.Seek(0, SeekOrigin.Begin); str = sr.ReadToEnd(); } return str; } public string GetPath(string path) { return Server.MapPath(path); }Best regards,
Kristin
MSDN Community Support
Please remember to click «Mark as Answer» the responses that resolved your issue, and to click «Unmark as Answer» if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to
MSDN Support, feel free to contact MSDNFSF@microsoft.com.-
Proposed as answer by
DotNet Wang
Thursday, November 10, 2016 8:49 AM -
Marked as answer by
Vikas Salve
Tuesday, September 4, 2018 5:17 AM
-
Proposed as answer by
|
e217onr |
|
|
Статус: Участник Группы: Участники
|
Пытаюсь реализовать функционал проверки подписи. В консоли постоянно возникает ошибка: |
![]() |
|
|
Андрей Писарев |
|
|
Статус: Сотрудник Группы: Участники Сказал «Спасибо»: 451 раз |
Здравствуйте. Можете приложить или прислать в ЛС файл подписи и документ, который подписывали? Ошибка возникает только с этим файлом? |
|
Техническую поддержку оказываем тут |
|
![]() |
WWW |
|
e217onr |
|
|
Статус: Участник Группы: Участники
|
Автор: Андрей Писарев Здравствуйте. Можете приложить или прислать в ЛС файл подписи и документ, который подписывали? Ошибка возникает только с этим файлом? Ошибка возникает со всеми файлами, поэтому не думаю что прикрепление файлов даст результат. |
![]() |
|
|
Андрей Писарев |
|
|
Статус: Сотрудник Группы: Участники Сказал «Спасибо»: 451 раз |
По примерам из документации делаете примеры? |
|
Техническую поддержку оказываем тут |
|
![]() |
WWW |
|
Андрей Писарев |
|
|
Статус: Сотрудник Группы: Участники Сказал «Спасибо»: 451 раз |
Пробовали подписать и проверить результат сразу? |
|
Техническую поддержку оказываем тут |
|
![]() |
WWW |
|
e217onr |
|
|
Статус: Участник Группы: Участники
|
Автор: Андрей Писарев По примерам из документации делаете примеры? Примеры из документации не работают, т.к. там представлен код для синхронных запросов, а у меня используются асинхронные. При попытке использовать код из документации, получаю разные ошибки типа «CreateObject is not a function» и тд. Автор: Андрей Писарев Пробовали подписать и проверить результат сразу? Только что попробовал проверить подпись сразу после создания, получаю ту же ошибку, но с requestId = 44. Код:
где sSignedMessage — контент кодируемого документа в формате base64, а dataToVerify — готовая подпись этого контента. |
![]() |
|
|
Андрей Писарев |
|
|
Статус: Сотрудник Группы: Участники Сказал «Спасибо»: 451 раз |
Цитата из примера: Цитата: Приведенный пример использует синхронную версию плагина. Также см. пример работы с асинхронными обьектами. Создание подписи CADES_BES с использованием асинхронной версии |
|
Техническую поддержку оказываем тут |
|
![]() |
WWW |
|
Андрей Писарев |
|
|
Статус: Сотрудник Группы: Участники Сказал «Спасибо»: 451 раз |
Также можно посмотреть работу на демо-странице и посмотреть функции из js-файлов. Code.js cadesplugin_api.js … |
|
Техническую поддержку оказываем тут |
|
![]() |
WWW |
|
e217onr |
|
|
Статус: Участник Группы: Участники
|
Автор: Андрей Писарев Цитата из примера: Цитата: Приведенный пример использует синхронную версию плагина. Также см. пример работы с асинхронными обьектами. Создание подписи CADES_BES с использованием асинхронной версии Здесь пример создания подписи. Создание у меня работает. Нужна проверка. |
![]() |
|
|
e217onr |
|
|
Статус: Участник Группы: Участники
|
Автор: Андрей Писарев Также можно посмотреть работу на демо-странице и посмотреть функции из js-файлов. Code.js cadesplugin_api.js … Собственно так и работает моя подпись файлов. Я взял эти 2 файла js-скриптов, закинул их в свой проект и настроил работу подписи исходя из этих файлов. Подпись работает великолепно, не работает именно ПРОВЕРКА подписи. Насчёт проверки очень мало написано в документации. Насчёт проверки асинхронными методами — вообще ни слова. Как мне в итоге проверить мою подпись? |
![]() |
|
| Пользователи, просматривающие эту тему |
|
Guest |
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Вы пытаетесь исправить недопустимую ошибку JSON в WordPress?
Эта ошибка появляется при редактировании сообщений или страниц WordPress на вашем веб-сайте. Вы увидите сообщение о том, что «Ответ не является допустимым ответом JSON», и обновление этой страницы завершится ошибкой.
В этой статье мы покажем вам, как легко исправить недопустимую ошибку JSON в WordPress. Мы также поговорим о том, почему возникает эта ошибка и как ее избежать в будущем.
Что вызывает ошибку » Недопустимый ответ JSON’ в WordPress?
Неспособность получить ожидаемый ответ от сервера приводит к ошибке «Недопустимый ответ JSON» в WordPress.
В принципе, WordPress должен взаимодействовать с сервером, пока вы редактируете сообщение в блоге. Это зависит от получения ответов от сервера веб-хостинга в фоновом режиме. Этот ответ обычно в формате JSON, который используется для быстрой передачи данных с помощью JavaScript.
Если по какой-либо причине WordPress не сможет получить ответ или ответ не в формате JSON, вы увидите ошибку «Недопустимый ответ JSON».
Эта ошибка может возникнуть по ряду причин. Однако наиболее вероятной причиной этого являются неправильные настройки URL-адресов в WordPress или неработающие постоянные ссылки.
Тем не менее, давайте посмотрим, как легко исправить недопустимую ошибку JSON в WordPress.
Важно: Пожалуйста, сделайте полную резервную копию WordPress, прежде чем вносить какие-либо существенные изменения на свой сайт. Это позволяет вам легко восстановить ваш веб-сайт в прежнее состояние.
1. Проверьте URL-адреса WordPress в настройках
Во-первых, вам нужно убедиться, что ваш адрес WordPress и настройки адреса сайта верны.
Просто перейдите на страницу » Общие настройки». Отсюда вам нужно просмотреть поля Адрес WordPress (URL) и Адрес сайта (URL).
Для большинства веб-сайтов этот параметр должен иметь один и тот же URL-адрес в обоих полях.
Однако в редких случаях некоторые пользователи могли предоставить WordPress свой собственный каталог и обслуживать веб-сайт по другому адресу. В этом случае у них могут быть разные URL-адреса здесь.
Однако, если ваш адрес сайта указан неверно, это вызовет недопустимую ошибку JSON в WordPress.
Если вы внесли какие-либо изменения в настройки, не забудьте нажать на кнопку Сохранить изменения, чтобы сохранить свои настройки. Теперь вы можете отредактировать сообщение в блоге и посмотреть, не вызовет ли добавление каких-либо новых блоков или сохранение этого сообщения ошибку «Недопустимый ответ JSON».
Если вы все еще видите ошибку, продолжайте чтение.
2. Исправьте Структуру Постоянных Ссылок WordPress
WordPress поставляется с удобной для SEO структурой URL-адресов, которая позволяет вам использовать удобочитаемые URL-адреса для ваших постов и страниц.
Однако иногда пользователь может перепутать настройки постоянных ссылок. Это сделало бы невозможным для редактора WordPress получение допустимого ответа JSON и привело бы к появлению ошибки.
Чтобы исправить это, вам нужно просто посетить страницу » Настройки » постоянных ссылок. Отсюда вам необходимо внимательно изучить параметры постоянной ссылки.
Если вы не уверены, используете ли вы правильные настройки, просто выберите один из доступных форматов по умолчанию.
После этого продолжайте и нажмите кнопку Сохранить изменения, чтобы сохранить свои настройки.
Теперь вы можете попробовать отредактировать сообщение в блоге или страницу, чтобы узнать, исчезла ли ошибка. Если это не так, то вы можете попробовать сделать следующий шаг.
3. Восстановите файл WordPress .htaccess
Файл .htaccess в WordPress используется в качестве файла конфигурации для управления URL-адресами, удобными для SEO (постоянные ссылки).
Обычно WordPress может автоматически восстанавливать и обновлять его. Вы также можете запустить это обновление, просто нажав на кнопку » Сохранить изменения «в нижней части страницы «Постоянные ссылки«.
Однако иногда он может не обновляться или иметь неправильные настройки. Это повлияет на ваши постоянные ссылки WordPress, а также может привести к ошибке недопустимого ответа JSON.
Чтобы исправить это, вам необходимо подключиться к своему веб-сайту с помощью FTP-клиента или приложения файлового менеджера на панели управления учетной записью хостинга WordPress.
После подключения вам необходимо найти файл .htaccess в корневой папке вашего веб-сайта и загрузить его в качестве резервной копии на свой компьютер.
Совет: Не удается найти файл .htaccess? Смотрите эту краткую статью о том, как найти файл .htaccess.
После этого вам необходимо отредактировать файл .htaccess с помощью FTP-клиента или приложения файлового менеджера.
Как только файл откроется, вам нужно удалить весь код внутри него и заменить его следующим кодом:
|
1 2 3 4 5 6 7 8 9 10 11 |
|
Не забудьте сохранить изменения и загрузить файл обратно на свой веб-сайт.
Теперь вы можете посетить свой веб-сайт, отредактировать и опубликовать или опубликовать страницу, чтобы узнать, сможете ли вы воспроизвести недопустимую ошибку ответа JSON.
Если вы все еще видите ошибку, то вы можете предпринять еще несколько шагов.
4. Просмотрите Журнал Отладки Rest API
Недопустимая ошибка ответа JSON также будет означать, что API REST WordPress на вашем веб — сайте обнаружил ошибку.
API REST — это набор методов, которые WordPress использует для связи с сервером во время работы на вашем веб-сайте.
Вы можете увидеть подробную информацию об этой ошибке в инструменте работоспособности сайта WordPress. Посетите страницу работоспособности сайта » Инструменты».
Отсюда вы можете увидеть проблему с надписью «API REST обнаружил неожиданный результат».
Нажав на него, вы увидите более подробную информацию, которая может дать вам некоторые подсказки о том, какой плагин или сторонняя служба могут вызвать эту проблему.
Если это не даст никакой подсказки, то вы можете перейти к следующему шагу.
5. Деактивируйте Все Плагины WordPress
Иногда плагины WordPress могут конфликтовать друг с другом или ядром WordPress. Это может привести к неожиданному поведению и может быть потенциальной причиной недопустимой ошибки JSON.
Просто перейдите на страницу плагинов » Установленные плагины«. Отсюда выберите все ваши плагины WordPress, а затем выберите «Деактивировать’ в раскрывающемся меню «Массовые действия». Теперь нажмите кнопку Применить, чтобы продолжить.
WordPress теперь деактивирует все установленные вами плагины.
Теперь вы можете повторить попытку, чтобы воспроизвести ошибку. Если ошибка исчезает, это означает, что ее вызвал один из плагинов, установленных на вашем сайте.
Чтобы выяснить, какой плагин, вам нужно активировать их один за другим, а затем попытаться воспроизвести ошибку. Повторяйте это до тех пор, пока не найдете виновного.
После этого вы можете обратиться к автору плагина за поддержкой или найти альтернативный плагин.
6. Временно переключитесь на Классический редактор
Если все вышеперечисленные шаги не увенчаются успехом, то вы можете временно переключиться на классический редактор для WordPress.
Эта более старая версия редактора WordPress использует более простой текстовый редактор и не сильно полагается на REST API для получения ответа JSON.
Чтобы использовать его, вам необходимо установить и активировать плагин Classic Editor. Для получения более подробной информации ознакомьтесь с нашим пошаговым руководством по установке плагина WordPress.
Плагин работает из коробки, и он отключит редактор Гутенберга при активации.
Теперь вы можете продолжить работу над своим сайтом и вернуться к устранению неполадок позже.
7. Дальнейшее Устранение Неполадок
Ряд вещей может заблокировать API REST WordPress или заставить его вернуть недопустимый ответ JSON. Выше мы рассмотрели наиболее вероятных виновников, но если это не помогло вам, то вот еще несколько шагов, которые вы можете предпринять.
Переход на тему WordPress по умолчанию
Иногда конфликт между вашей темой WordPress и плагином или ядром WordPress может привести к неожиданному поведению.
Вы можете проверить это, просто переключившись на тему WordPress по умолчанию, такую как TwentyTwentyOne или Twenty-Twenty.
Временно отключите Брандмауэр веб-приложений
Если вы используете брандмауэр WordPress, такой как Sucuri, Cloudflare или плагин, то возможно, что они также иногда могут блокировать законные запросы.
Самый простой способ выяснить это-временно отключить плагин или службу брандмауэра WordPress.
Некоторые брандмауэры WordPress на уровне приложений можно отключить, просто отключив плагин. Для брандмауэров уровня DNS, таких как Sucuri и Cloudflare, вы можете отключить их на панели мониторинга своей учетной записи.
Включите отладку в WordPress
WordPress поставляется со встроенной функцией, которая позволяет вам вести журнал ошибок. Однако по умолчанию он не включен.
Чтобы включить его, вам нужно добавить следующий код в свой wp-config.php файл:
|
1 2 |
|
После этого WordPress будет вести журнал всех ошибок при отладке.файл журнала, расположенный в папке /wp-содержимое/. Вы можете получить доступ к этому файлу с помощью FTP-клиента.
Журнал ошибок может дать вам представление о том, что может быть причиной недопустимой ошибки JSON на вашем веб-сайте. Для получения более подробной информации см. наше руководство по настройке журналов ошибок WordPress и их использованию для отладки ошибок.
Обратитесь За Помощью К Эксперту
Наконец, если все остальное не удается, то это может быть связано с неправильной настройкой на вашем хостинговом сервере WordPress. Самые надежные хостинг-компании WordPress могут помочь пользователям с такими распространенными проблемами WordPress.
Просто свяжитесь с ними через чат или заявку в службу поддержки, и они, возможно, смогут помочь вам исправить это.
Мы надеемся, что эта статья помогла вам узнать, как исправить недопустимую ошибку JSON в WordPress.


1 пользователь поблагодарил slava999 за этот пост.





