Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,396 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 718 раз в 622 постах
|
Код:Index: SignDocument.cs
===================================================================
--- SignDocument.cs (revision 4822)
+++ SignDocument.cs (revision 4823)
@@ -119,6 +119,10 @@
new XmlDsigEnvelopedSignatureTransform();
reference.AddTransform(env);
+ XmlDsigSmevTransform smev =
+ new XmlDsigSmevTransform();
+ reference.AddTransform(smev);
+
// Добавляем transform для канонизации.
XmlDsigC14NTransform c14 = new XmlDsigC14NTransform();
reference.AddTransform(c14);
|
|
2 пользователей поблагодарили Максим Коллегин за этот пост.
|
stdevol оставлено 19.08.2015(UTC), wide оставлено 09.09.2015(UTC)
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 31.08.2015(UTC) Сообщений: 1 Откуда: Izhevsk
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 25.07.2012(UTC) Сообщений: 5 Откуда: программинг Сказал «Спасибо»: 2 раз
|
Немного возвращаясь к структуре СМЭВ 3. Я так понял, что СМЭВ 3 представляет из себя сервис через который общаются Потребитель и Поставщик Вида сведений. А где добыть адрес этого сервиса? Для тестовой, продуктивная и среды разработки? Есть ли РСМЭВ? Если есть, то и их адреса хотелось бы посмотреть.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 13.03.2012(UTC) Сообщений: 14
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 5 раз в 2 постах
|
Добрый день! На данный момент при подписи происходит подпись с идентификатором алгоритма urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411 Однако СМЭВ хочет urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411 который не был обнаружен в CPSignedXml. Подскажите пожалуйста, планируется ли его внедрение? PS. Обнаружил что есть подобная тема про java трехлетней давности http://www.cryptopro.ru/....aspx?g=posts&t=4864 из которой следует что это два одинаковых алгоритма. В общем хотелось бы иметь возможность указать в варианте желаемом СМЭВ-ом :) PS2. В общем вот сообщение от СМЭВ "ЭП-ОВ не соответствует подписанным данным: org.apache.xml.security.signature.XMLSignatureException: The requested algorithm urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411 does not exist. Original Message was: null Original Exception was java.lang.NullPointerException" Сначала подумал что ошибка с SignatureMethod. Вписал туда руками требуемое значение так как тип элемента - строка. Та же ошибка. Обнаружил что DigestMethod имеет подобный формат, но на ручное изменение уже сам cryptopro выдает ошибку "Невозможно создать объект хэш-алгоритма.". В связи с перепиской со СМЭВ вопрос временно снимается. Отредактировано пользователем 6 октября 2015 г. 12:04:21(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Администраторы, Участники Зарегистрирован: 28.04.2010(UTC) Сообщений: 140 Откуда: Крипто-Про Поблагодарили: 15 раз в 14 постах
|
Здравствуйте, Не совсем понял вопрос. Указанные вами идентификаторы относятся к различным алгоритмам. Идентификатор urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411 не может быть указан как алгоритм подписи в узле SignatureMethod. Данный идентификатор указывается в узле DigestMethod алгоритма хеширования: новый urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411 старый http://www.w3.org/2001/04/xmldsig-more#gostr3411алгоритм подписи: новый urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411 старый http://www.w3.org/2001/0...#gostr34102001-gostr3411Во вложении пример запроса создаваемом примеров WCF клиента для СМЭВ 2.* request.xml (4kb) загружен 27 раз(а).
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 13.03.2012(UTC) Сообщений: 14
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 5 раз в 2 постах
|
Добрый день! В общем по прошлому вопросу: начал с переделки метода подписи от версии 2.5.5, в итоге взял пример из документации и частично стало работать. Именно частично, часть подписей распознается СМЭВ, а часть - нет. Пока нашел одно отличие: в примере отсутствует раздел создания трансформации СМЭВ, но вставка этого кода не помогла. В общем вложенный файл requestNoValid имеет корректную подпись если проверять следующим кодом: // Проверка подписи под XML документом. public static Boolean VerifyXmlFile(XmlElement xmlElement, XmlElement signature) { // Создаем объект SignedXml для проверки подписи документа. SignedXml signedXml = new SignedXml(xmlElement); // Загружаем первую подпись в SignedXml signedXml.LoadXml(signature); // Проверяем подпись. return signedXml.CheckSignature(); } Однако http://smev3.gosuslugi.ru/portal/checkxmlform.jsp выдает "ЭП-ОВ не подтверждена: Ошибка проверки ЭП: Нарушена целостность ЭП". При том файл requestValid, сформированный абсолютно так же, вполне проходит проверку. requestNoValid.xml (5kb) загружен 44 раз(а). requestValid.xml (5kb) загружен 74 раз(а).В общем крипто-про считает хэш отличающийся от хэша СМЭВ. Пример из СМЭВ: <ns2:AckTargetMessage xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.1" xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" Id="SIGNED_BY_CALLER" accepted="true">0e8cfc01-5e81-11e4-a9ff-d4c9eff07b77</ns2:AckTargetMessage> имеет <ds:DigestValue>PXd1LeLr8ng039jaMgcrumvN/MkvDxFKSqH+phrHVrI=</ds:DigestValue> Такой же блок при подписи крипто-про.нет имеет хэш <DigestValue>FDG4ZCuMfJo1h/7tE9twBfePvTfq+gl+9TpGRu3dtdQ=</DigestValue> Полные пакеты во вложении. Просьба прокомментировать ситуацию. requestAckSMEV.xml (3kb) загружен 54 раз(а). requestAckCryptoPro.xml (5kb) загружен 47 раз(а).Добавил XmlDsigEnvelopedSignatureTransform сошлось. Бардак какой-то :) Отредактировано пользователем 13 октября 2015 г. 17:50:16(UTC)
| Причина: Не указана
|
4 пользователей поблагодарили NIC за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 30.10.2012(UTC) Сообщений: 22 Откуда: Moscow
Сказал(а) «Спасибо»: 2 раз Поблагодарили: 1 раз в 1 постах
|
Добрый день. Подписываем сообщение следующим образом: Код:
public XmlElement GetXmlSignature(XmlElement xmlElement, string referenceUri)
{
if (xmlElement == null)
throw new ArgumentNullException(nameof(xmlElement));
var certificate = CertificateUtils.Instance.GetCertificate();
var keyInfo = CreateKeyInfo(certificate);
var reference = new Reference { Uri = referenceUri };
reference.AddTransform(new XmlDsigEnvelopedSignatureTransform());
reference.AddTransform(new XmlDsigExcC14NTransform());
reference.AddTransform(new XmlDsigSmevTransform());
reference.DigestMethod = GostDigestMethod;
var signedXml = new SignedXml(xmlElement)
{
SigningKey = certificate.PrivateKey,
KeyInfo = keyInfo
};
signedXml.SignedInfo.SignatureMethod = @"http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411";
signedXml.SignedInfo.CanonicalizationMethod = SignedXml.XmlDsigExcC14NTransformUrl;
signedXml.AddReference(reference);
signedXml.ComputeSignature();
XmlElement xmlDigitalSignature = signedXml.GetXml();
CheckSignature(xmlElement, xmlDigitalSignature);
return xmlDigitalSignature;
}
Валидация СМЭВа не проходит: "ЭП-ОВ не подтверждена: Ошибка проверки ЭП: Нарушена целостность ЭП". Не подскажете в чём ошибка? request.xml (5kb) загружен 27 раз(а).Во вложении сообщение.
|
1 пользователь поблагодарил stdevol за этот пост.
|
Kilya оставлено 20.02.2017(UTC)
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 25.11.2015(UTC) Сообщений: 2
|
Добрый день! Пытаемся подписать сообщения AcqRequest из примеров СМЭВ 3: Код:
private static void SignXmlFile(string FileName,
string SignedFileName, AsymmetricAlgorithm Key,
X509Certificate Certificate)
{
XmlDocument doc = new XmlDocument();
doc.PreserveWhitespace = true;
doc.Load(new XmlTextReader(FileName));
SignedXml signedXml = new SignedXml(doc);
signedXml.SigningKey = Key;
Reference reference = new Reference();
reference.Uri = "#SIGNED_BY_CALLER";
#pragma warning disable 612
reference.DigestMethod = CPSignedXml.XmlDsigGost3411UrlObsolete;
#pragma warning restore 612
XmlDsigSmevTransform smev =
new XmlDsigSmevTransform();
reference.AddTransform(smev);
XmlDsigExcC14NTransform c14 = new XmlDsigExcC14NTransform();
reference.AddTransform(c14);
signedXml.SignedInfo.CanonicalizationMethod = SignedXml.XmlDsigExcC14NTransformUrl;
#pragma warning disable 612
signedXml.SignedInfo.SignatureMethod = CPSignedXml.XmlDsigGost3410UrlObsolete;
#pragma warning disable 612
signedXml.AddReference(reference);
KeyInfo keyInfo = new KeyInfo();
keyInfo.AddClause(new KeyInfoX509Data(Certificate));
signedXml.KeyInfo = keyInfo;
signedXml.ComputeSignature();
XmlElement xmlDigitalSignature = signedXml.GetXml();
doc.GetElementsByTagName("AckRequest", NSNamespaceUrl)[0].AppendChild(doc.CreateNode(XmlNodeType.Element, "ns", "CallerInformationSystemSignature", NSNamespaceUrl));
doc.GetElementsByTagName("CallerInformationSystemSignature", NSNamespaceUrl)[0].AppendChild(
doc.ImportNode(xmlDigitalSignature, true));
// При наличии стартовой XML декларации ее удаляем
// (во избежание повторного сохранения)
if (doc.FirstChild is XmlDeclaration)
{
doc.RemoveChild(doc.FirstChild);
}
doc_signed.xml (5kb) загружен 45 раз(а).
using (XmlTextWriter xmltw = new XmlTextWriter(SignedFileName,
new UTF8Encoding(false)))
{
xmltw.WriteStartDocument();
doc.WriteTo(xmltw);
}
}
Однако при проверке XML-сообщения на соответствие схемам сервиса СМЭВ получаем ошибку "ЭЦП не подтверждена: null". В чем может быть проблема? doc_signed.xml (5kb) загружен 45 раз(а).Отредактировано пользователем 25 ноября 2015 г. 16:59:18(UTC)
| Причина: Не указана
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 04.12.2015(UTC) Сообщений: 2 Поблагодарили: 1 раз в 1 постах
|
Автор: maxdm Выложили новую версию с поддержкой smev transform. для java добавили поддержку трансформера?
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 09.11.2011(UTC) Сообщений: 9
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 2 раз в 2 постах
|
Автор: zakke Добрый день! Пытаемся подписать сообщения AcqRequest из примеров СМЭВ 3: Код:
XmlDsigSmevTransform smev =
new XmlDsigSmevTransform();
reference.AddTransform(smev);
XmlDsigExcC14NTransform c14 = new XmlDsigExcC14NTransform();
reference.AddTransform(c14);
Однако при проверке XML-сообщения на соответствие схемам сервиса СМЭВ получаем ошибку "ЭЦП не подтверждена: null". В чем может быть проблема? поменяйте порядок трансформации (смэв в конце)
|
1 пользователь поблагодарил kkklll за этот пост.
|
Kilya оставлено 20.02.2017(UTC)
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close