Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.01.2012(UTC) Сообщений: 52 Откуда: Москва
|
Здравствуйте! Подскажите, пожалуйста, константы "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411" и ="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411" указывают на один и тот же алгоритм? Подписываю SOAP-сообщение с помощью КриптоПро JCP, запрос не принимается на сервере. Различие между моим запросом и тестовым такие: - у меня: <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/> и <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/> - в примере: <SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411"/> и <DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411"/> Это же вроде бы просто одно и то же в разных стандартах? Если в методе подписания просто заменить fac.newDigestMethod("http://www.w3.org/2001/04/xmldsig-more#gostr3411", null) на fac.newDigestMethod("urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411", null), валится с ошибкой java.security.NoSuchAlgorithmException: unsupported algorithm Спасибо. Отредактировано пользователем 29 июня 2012 г. 16:48:19(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,910 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 685 раз в 646 постах
|
Здравствуйте. Да, это одно и то же. Видимо, имя в таком формате не поддерживается в библиотеке (только uri). |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,910 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 685 раз в 646 постах
|
Здравствуйте. Да, это одно и то же. Видимо, имя в таком формате не поддерживается в библиотеке (только uri). Проверим и обновим на след. неделе. |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,910 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 685 раз в 646 постах
|
Здравствуйте. Обновили архив и библиотеку (wss4j+jcp). Попробуйте с ней указать алгоритмы urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411 и urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.01.2012(UTC) Сообщений: 52 Откуда: Москва
|
Да! С новой библиотекой всё работает! Спасибо!
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.01.2012(UTC) Сообщений: 52 Откуда: Москва
|
Работает не всё. Как выяснилось, метод verifySecuredMessage класса SOAPXMLSignatureManager_1_6_3 валится при появлении в подписанном xml-е русских символов в данных.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,910 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 685 раз в 646 постах
|
Какой пример вы используете? XML-файл в UTF-8? Можете привести лог ошибки? Отредактировано пользователем 8 августа 2012 г. 15:57:47(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.01.2012(UTC) Сообщений: 52 Откуда: Москва
|
Пример использую test_jcp_wss4j1_6 скачанный 07.06.2012 Валится на строке: Document doc = message.getSOAPPart().getEnvelope().getOwnerDocument(); Ошибка: SEVERE: SAAJ0511: Unable to create envelope from given source StackTrase такой: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to create envelope from given source: at com.sun.xml.internal.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:114) at com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.createEnvelopeFromSource(SOAPPart1_1Impl.java:70) at com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:122) at ru.wss4j1_6_3.manager.SOAPXMLSignatureManager_1_6_3.verifySecuredMessage(SOAPXMLSignatureManager_1_6_3.java:136) at ru.wss4j1_6_3.manager.SOAPXMLSignatureManager_1_6_3.verifyDoc(SOAPXMLSignatureManager_1_6_3.java:115) at ru.wss4j1_6_3.tests.forum.ForumTest_gPOST_t4379.main(ForumTest_gPOST_t4379.java:165) Caused by: javax.xml.transform.TransformerException: org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x12) was found in the element content of the document.
Подписываемый файл абсолютно точно в юникоде.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,910 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 685 раз в 646 постах
|
Посмотрите в файле SOAPXMLSignatureManager_1_6_3.java - в нем метод verifySecuredMessage вызывается внутри verifyDoc. Вероятно, документ неправильно перекодируется. Попробуйте оформить метод verifyDoc так: Код:
public boolean verifyDoc(Document signedDoc, boolean printCert) throws UnsupportedEncodingException {
String docStr = org.apache.ws.security.util.XMLUtils.PrettyDocumentToString(signedDoc);
ByteArrayInputStream bi = new ByteArrayInputStream(docStr.getBytes("UTF8"));
MessageFactory messageFactory = null;
SOAPMessage sm = null;
boolean result = false;
try {
// Create SOAP XML message from string (signed document)
messageFactory = MessageFactory.newInstance();
sm = messageFactory.createMessage(null, bi);
// Verify signature
result = verifySecuredMessage(sm, printCert);
} catch (SOAPException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.01.2012(UTC) Сообщений: 52 Откуда: Москва
|
да, спасибо, так работает.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close