Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

3 Страницы123>
Опции
К последнему сообщению К первому непрочитанному
Offline Corzina  
#1 Оставлено : 19 декабря 2012 г. 17:53:41(UTC)
Corzina

Статус: Участник

Группы: Участники
Зарегистрирован: 19.12.2012(UTC)
Сообщений: 14
Российская Федерация
Откуда: Vladimir

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 1 раз в 1 постах
Добрый день. Помогите пожалуйста, не могу сообразить как подписать часть сообщения. Все сообщение подписывается и проходит проверку. В форматах УНИФО надо кроме всего сообщения подписать раздел FinalPayment.


<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<SOAP-ENV:Body wsu:Id="body">
<n1:UnifoTransferMsg xsi:schemaLocation="http://roskazna.ru/SmevUnifoService/ MethodMsg.xsd" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:n1="http://roskazna.ru/SmevUnifoService/" xmlns:pirq="http://roskazna.ru/xsd/PGU_ImportRequest" xmlns:smev="http://smev.gosuslugi.ru/rev111111" xmlns:unifo="http://rosrazna.ru/xsd/SmevUnifoService" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<smev:Message>
<smev:Sender>
<smev:Code>RKZN35001</smev:Code>
<smev:Name>Казначейство России</smev:Name>
</smev:Sender>
<smev:Recipient>
<smev:Code>RKZN35001</smev:Code>
<smev:Name>Казначейство России</smev:Name>
</smev:Recipient>
<smev:TypeCode>GFNC</smev:TypeCode>
<smev:Status>REQUEST</smev:Status>
<smev:Date>2001-12-17T09:30:48.0Z</smev:Date>
<smev:ExchangeType>6</smev:ExchangeType>
</smev:Message>
<smev:MessageData>
<smev:AppData>
<unifo:ImportData>
<pirq:ImportRequest>
<PostBlock>
<ID>54545</ID>
<TimeStamp>2012-07-25T09:30:47.0Z</TimeStamp>
<SenderIdentifier>044525225</SenderIdentifier>
</PostBlock>
<FinalPayment>
<SupplierBillID>18810ЗA63КК560868ZZ6</SupplierBillID>
<Narrative>Оплата Штрафа за административное правонарушение</Narrative>
<Amount>80000</Amount>
<PaymentDate>2012-12-06</PaymentDate>
<BudgetIndex>
<Status>0</Status>
<PaymentType>0</PaymentType>
<Purpose>0</Purpose>
<TaxPeriod>0</TaxPeriod>
<TaxDocNumber>0</TaxDocNumber>
<TaxDocDate>0</TaxDocDate>
</BudgetIndex>
<PaymentIdentificationData>
<Bank>
<Name>ГРКЦ ГУ банка России по Самарской области г.Самара</Name>
<BIK>043601001</BIK>
</Bank>
<SystemIdentifier>BBDF8204867833</SystemIdentifier>
</PaymentIdentificationData>
<ChangeStatus>1</ChangeStatus>
<payeeINN>6317021970</payeeINN>
<payeeKPP>631601001</payeeKPP>
<KBK>18811630000010000140</KBK>
<OKATO>36401000000</OKATO>
</FinalPayment>
</pirq:ImportRequest>
</unifo:ImportData>
</smev:AppData>
</smev:MessageData>
</n1:UnifoTransferMsg>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

в FinalPayment должно появиться

<ds:Signature>
- <ds:SignetInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411" />
- <ds:Referens URI="">
- <ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411" />
<ds:DigestValue>iIuT3iDMZl83Oog5HoBlkILAlwdwRvE9eRE4EPd5xAE=</ds:DigestValue>
</ds:Referens>
</ds:SignetInfo>
<ds:SignatureValue>dz16OR4p36Xce+eG78ToVDhDuPefLm3tWW2N13/YV47EXswLNNhGxaSFaGRudFvGLEbgU3J0Zbhu voekLMNLvw==</ds:SignatureValue>
- <ds:KeyInfo>
- <ds:X509Data>
<ds:X509Certificate>MIIFrTCCBVygAwIBAgIKFfcnHAAFAAAigzAIBgYqhQMCAgMwgZgxKDAmBgkqhkiG9w0BCQEWGWlu Zm9jZW50ckByZWdpb24uZWxjb20ucnUxCzAJBgNVBAYTAlJVMRkwFwYDVQQHDBDQktC70LDQtNC4 0LzQuNGAMSIwIAYDVQQKDBnQntCe0J4g0JjQvdGE0L7QptC10L3RgtGAMSAwHgYDVQQDDBfQo9Cm INCY0L3RhNC+0KbQtdC90YLRgDAeFw0xMjEwMjIxMjAzMDBaFw0xMzEwMjIxMjEzMDBaMIIBKTEY MBYGCCqFAwOBAwEBEgozMzI5MDAwMzEzMSAwHgYJKoZIhvcNAQkBFhFiYW5rQHZwYi52aW5mby5y dTELMAkGA1UEBhMCUlUxNzA1BgNVBAgeLgAzADMAIAQSBDsEMAQ0BDgEPAQ4BEAEQQQ6BDAETwAg BD4EMQQ7BDAEQQRCBEwxGTAXBgNVBAceEAQSBDsEMAQ0BDgEPAQ4BEAxKTAnBgNVBAoeIAQeBB4E HgAgBBIEOwQwBDQEPwRABD4EPAQxBDAEPQQ6MQowCAYDVQQLEwEwMTUwMwYDVQQDHiwEGAQ9BEQE PgRABDwEMARGBDgEPgQ9BD0EMARPACAEQQQ4BEEEQgQ1BDwEMDEQMA4GCSqGSIb3DQEJAhMBMDEK MAgGA1UEDBMBMDBjMBwGBiqFAwICEzASBgcqhQMCAiQABgcqhQMCAh4BA0MABEAVEkvdkGDutJJ9 ZqzUHEA4BD0g/iO3zCx4LAK/MsDqURtj6h061ScrOcnk7mNFjwgWRGFywwe2o3G0q9drWTpQo4IC 8DCCAuwwDgYDVR0PAQH/BAQDAgTwMBkGCSqGSIb3DQEJDwQMMAowCAYGKoUDAgIVMDIGA1UdJQQr MCkGCCsGAQUFBwMEBgorBgEEAYI3CgMMBgcqhQMCAiIGBggrBgEFBQcDAjAdBgNVHQ4EFgQUyeyZ 07jgwBJpmG6NzzfBf0KKNK8wgdQGA1UdIwSBzDCByYAUt/3K8K4W0s0JNm6wr1ur21SrDF6hgZ6k gZswgZgxKDAmBgkqhkiG9w0BCQEWGWluZm9jZW50ckByZWdpb24uZWxjb20ucnUxCzAJBgNVBAYT AlJVMRkwFwYDVQQHDBDQktC70LDQtNC40LzQuNGAMSIwIAYDVQQKDBnQntCe0J4g0JjQvdGE0L7Q ptC10L3RgtGAMSAwHgYDVQQDDBfQo9CmINCY0L3RhNC+0KbQtdC90YLRgIIQHGwojR11NJFId9WN PWs8TTCB+QYDVR0fBIHxMIHuMCugKaAnhiVodHRwOi8vd3d3LmljZW50ci5ydS9jYS9pY2VudHJj cmwuY3JsMEagRKBChkBodHRwOi8vY2EuaWNlbnRyLnJ1L2JlMDc1MWRjZTY1NzE5YmQ5MjIyOWIy MzdjMDFhMzI2ODkxNWE5ZGEuY3JsMC+gLaArhilodHRwOi8vd3d3LmljZW50ci5ydS9jYS9pY2Vu dHJjcmwyMDExLmNybDBGoESgQoZAaHR0cDovL2NhLmljZW50ci5ydS9iN2ZkY2FmMGFlMTZkMmNk MDkzNjZlYjBhZjViYWJkYjU0YWIwYzVlLmNybDBsBggrBgEFBQcBAQRgMF4wLQYIKwYBBQUHMAGG IWh0dHA6Ly9jYS5pY2VudHIucnUvb2NzcC9vY3NwLnNyZjAtBggrBgEFBQcwAoYhaHR0cDovL3d3 dy5pY2VudHIucnUvY2EvY2FjZXIuY2VyMCsGA1UdEAQkMCKADzIwMTIxMDIyMTIwMzAwWoEPMjAx MzEwMjIxMjAzMDBaMAgGBiqFAwICAwNBAKIOSBYJ7BS0zXKmFi+0d/tgzfTEertvqrZFogwH5rjT WAF+84EVGWMNJhtf0ko7uKNKIq0sDzdNHkWS0houZyk=</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>

как правильно подписать часть сообщения сообразить не могу. Тестовый сервер ругается, что нет корректной подписи.
Offline Максим Коллегин  
#2 Оставлено : 19 декабря 2012 г. 18:26:48(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,396
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 37 раз
Поблагодарили: 718 раз в 622 постах
Проще всего так
Цитата:
<ds:Referense URI="#FinalPayment">

где #FinalPayment - id FinalPayment ноды.
Если id нельзя использовать - нужно будет построить URI иным способом.

Отредактировано пользователем 19 декабря 2012 г. 18:29:13(UTC)  | Причина: Не указана

Знания в базе знаний, поддержка в техподдержке
Offline Corzina  
#3 Оставлено : 19 декабря 2012 г. 18:53:31(UTC)
Corzina

Статус: Участник

Группы: Участники
Зарегистрирован: 19.12.2012(UTC)
Сообщений: 14
Российская Федерация
Откуда: Vladimir

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 1 раз в 1 постах
В описании формата указано: Атрибут URI элемента Reference должен иметь пустое значение.

Если я делаю в FinalPayment элементы
Name_Security = envelope.createName("Signature", "ds", "http://www.w3.org/2000/09/xmldsig#");
SOAPElement SOAP_Signature = SOAP_FinalPayment.addChildElement (Name_Security);

SOAPElement SOAP_SignetInfo = SOAP_Signature.addChildElement("SignetInfo", "ds");
SOAP_SignetInfo.addChildElement("CanonicalizationMethod","ds").addAttribute(new QName("Algorithm"), "http://www.w3.org/2001/10/xml-exc-c14n#");
SOAP_SignetInfo.addChildElement("SignatureMethod", "ds").addAttribute(new QName("Algorithm"), "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411");
SOAPElement SOAP_SignetInfo_Referens = SOAP_SignetInfo.addChildElement("Referens", "ds");
SOAPElement SOAP_Transforms = SOAP_SignetInfo_Referens.addChildElement(new QName("http://www.w3.org/2000/09/xmldsig#", "Transforms", "ds"));
QName Name_Transform = new QName("http://www.w3.org/2000/09/xmldsig#", "Transform", "ds");
SOAP_Transforms.addChildElement(Name_Transform).addAttribute(new QName("Algorithm"), "http://www.w3.org/2000/09/xmldsig#enveloped-signature");
SOAP_Transforms.addChildElement(Name_Transform).addAttribute(new QName("Algorithm"), "http://www.w3.org/2001/10/xml-exc-c14n#");
SOAPElement SOAP_DigestMethod = SOAP_SignetInfo_Referens.addChildElement(new QName("http://www.w3.org/2000/09/xmldsig#","DigestMethod", "ds"));
SOAP_DigestMethod.addAttribute(new QName("Algorithm"), "http://www.w3.org/2001/04/xmldsig-more#gostr3411");
SOAP_SignetInfo_Referens.addAttribute(new QName("URI"), "");

// Подпись платежа

Document SOAP_FinalPayment_doc = SOAP_FinalPayment.getOwnerDocument();

com.sun.org.apache.xml.internal.security.Init.init();

// Инициализация JCP XML провайдера.
if(!JCPXMLDSigInit.isInitialized()) {
JCPXMLDSigInit.init();
}

// Инициализация ключевого контейнера.
KeyStore keyStore = KeyStore.getInstance(JCP.HD_STORE_NAME);
keyStore.load(null, null);

// Получение ключа и сертификата.
PrivateKey privateKey = jsp.Get_PrivateKey();
X509Certificate cert = jsp.Get_sert();

// Подписываемый элемент.
Element token = SOAP_FinalPayment_doc.getDocumentElement();//header.getSecurityHeader();
/*** Подпись данных ***/
// Загрузка провайдера.
Provider xmlDSigProvider = new ru.CryptoPro.JCPxml.dsig.internal.dom.XMLDSigRI();

// Преобразования над документом.
final Transforms transforms = new Transforms(SOAP_FinalPayment_doc);
transforms.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE);
transforms.addTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS);

XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM", xmlDSigProvider);

// Преобразования над блоком SignedInfo
List<Transform> transformList = new ArrayList<Transform>();
Transform transformC14N =
fac.newTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS, (XMLStructure) null);
transformList.add(transformC14N);

// Ссылка на подписываемые данные.
Reference ref = fac.newReference("#FinalPayment",
fac.newDigestMethod("http://www.w3.org/2001/04/xmldsig-more#gostr3411", null),
transformList, null, null);

// Блок SignedInfo.
SignedInfo si = fac.newSignedInfo( fac.newCanonicalizationMethod(CanonicalizationMethod.EXCLUSIVE,
(C14NMethodParameterSpec) null),
fac.newSignatureMethod("http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411", null),
Collections.singletonList(ref));

// Блок KeyInfo.
KeyInfoFactory kif = fac.getKeyInfoFactory();
X509Data x509d = kif.newX509Data(Collections.singletonList(cert));
KeyInfo ki = kif.newKeyInfo(Collections.singletonList(x509d));

// Подпись данных.
javax.xml.crypto.dsig.XMLSignature sig = fac.newXMLSignature(si, ki);
DOMSignContext signContext = new DOMSignContext(privateKey, token);
sig.sign(signContext);

Мне после подписывания блок Signature дописывается в конец SOAP сообщения за пределами SOAP-ENV:Envelope получить данные тегов DigestValue, SignatureValue и X509Certificate я могу. И потом стираю этот блок. Мне кажется, что это неправильно. Как можно сразу положить подпись в нужное место. Бьюсь уже неделю, т.к. впервые столкнулся с SOAP сервисами такой задачей.
Offline artsuillus  
#4 Оставлено : 31 июля 2013 г. 11:45:09(UTC)
artsuillus

Статус: Новичок

Группы: Участники
Зарегистрирован: 27.06.2013(UTC)
Сообщений: 5
Российская Федерация

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 2 раз в 1 постах
Добрый день!
Подписываю часть сообщения для ГИС ГМП таким образом:
Код:

public static void signElement(SOAPMessage soapMessage, String tag ) throws Exception{
        com.sun.org.apache.xml.internal.security.Init.init();
        SpecUtility.initJCP();

        KeyStore keyStore = KeyStore.getInstance(JCP.HD_STORE_NAME);
        keyStore.load(null, null);

        PrivateKey privateKey = (PrivateKey)keyStore.getKey(SpecUtility.DEFAULT_ALIAS, SpecUtility.DEFAULT_PASSWORD);
        X509Certificate cert = (X509Certificate) keyStore.getCertificate(SpecUtility.DEFAULT_ALIAS);
                
        Document doc = soapMessage.getSOAPPart().getEnvelope().getOwnerDocument();
        Element Signature = doc.createElement("Signature");
        Signature.setAttribute("xmlns", "http://www.w3.org/2000/09/xmldsig#");

        //Элемент, в который будем добавлять подпись
        NodeList nodeList = soapMessage.getSOAPPart().getElementsByTagName(tag);
        Element signedNode = (Element)nodeList.item(0);
       
        
        Provider xmlDSigProvider = new ru.CryptoPro.JCPxml.dsig.internal.dom.XMLDSigRI();
        XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM", xmlDSigProvider);

        List<Transform> transformList = new ArrayList<>();
        
        Transform transform = fac.newTransform(Transform.ENVELOPED, (XMLStructure) null);
        Transform transformC14N = fac.newTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS, (XMLStructure) null);
        transformList.add(transform);
        transformList.add(transformC14N);
        
        Reference ref = fac.newReference("#"+tag, fac.newDigestMethod("http://www.w3.org/2001/04/xmldsig-more#gostr3411", null),
                transformList, null, null);

        SignedInfo si = fac.newSignedInfo(fac.newCanonicalizationMethod(CanonicalizationMethod.EXCLUSIVE,
            (C14NMethodParameterSpec) null),
            fac.newSignatureMethod("http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411", null),
            Collections.singletonList(ref));

        KeyInfoFactory kif = fac.getKeyInfoFactory();
        X509Data x509d = kif.newX509Data(Collections.singletonList(cert));
        KeyInfo ki = kif.newKeyInfo(Collections.singletonList(x509d));

        javax.xml.crypto.dsig.XMLSignature sig = fac.newXMLSignature(si, ki);

        DOMSignContext signContext = new DOMSignContext(privateKey, signedNode);
              
        sig.sign(signContext);
}

Ну и вызов, соответственно:
Код:
signElement(sm, "FinalPayment");

Подписывается нормально, но непонятно, как все-таки избавиться от "лишнего" атрибута id элемента FinalPayment, который не предусмотрен форматом ГИС ГМП, и подписывать элемент, используя путь к нему (/SOAP-ENV:Envelope/SOAP-ENV:Body/n1:UnifoTransferMsg/smev:MessageData/smev:AppData/unifo:ImportData/pirq:ImportRequest/FinalPayment). И, как было сказано выше, атрибут URI элемента Reference тоже должен быть пустым.

Отредактировано пользователем 31 июля 2013 г. 11:54:51(UTC)  | Причина: Не указана

Offline Corzina  
#5 Оставлено : 1 августа 2013 г. 8:23:33(UTC)
Corzina

Статус: Участник

Группы: Участники
Зарегистрирован: 19.12.2012(UTC)
Сообщений: 14
Российская Федерация
Откуда: Vladimir

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 1 раз в 1 постах
я отправляю в ГИС ГМП полностью подписанное сообщение, и они там его нормально принимают
Offline artsuillus  
#6 Оставлено : 1 августа 2013 г. 14:13:11(UTC)
artsuillus

Статус: Новичок

Группы: Участники
Зарегистрирован: 27.06.2013(UTC)
Сообщений: 5
Российская Федерация

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 2 раз в 1 постах
Может быть на продуктивной среде убрана эта проверка? Просто до нее еще не дошли. А вот при отправке на тестовый сервис сообщения с неподписанной отдельно сущностью, в теле ответного сообщения среди прочего вылазит
Код:
<RequestProcessResult>
    <ErrorCode>22</ErrorCode>
    <ErrorDescription>Подпись ЭП-СП под сущностью неверна</ErrorDescription>
</RequestProcessResult>

Отредактировано пользователем 2 августа 2013 г. 5:04:56(UTC)  | Причина: Не указана

Offline mvv  
#7 Оставлено : 6 августа 2013 г. 7:25:34(UTC)
mvv

Статус: Новичок

Группы: Участники
Зарегистрирован: 05.08.2013(UTC)
Сообщений: 3
Российская Федерация
Откуда: Череповец

Поблагодарили: 2 раз в 2 постах
Такой вариант подписания проходит в ГИС ГМП. Проверено на подписи сущности начисления при загрузке в ГМП начисления от администратора доходов.
Код:
public byte[] signElement(byte[] inputXml, String namespace, String localName)
            throws DOMException, XMLSecurityException, TransformerException, ParserConfigurationException, SAXException, IOException {
        if (inputXml == null || inputXml.length == 0) {
            return null;
        }
        final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        dbf.setNamespaceAware(true);
        final DocumentBuilder docBuilder = dbf.newDocumentBuilder();
        final Document doc = docBuilder.parse(new ByteArrayInputStream(inputXml));
        // формируем xpath для поиска элемента для подписания
        StringBuilder xPath = new StringBuilder("//");
        if (namespace == null || namespace.isEmpty()) {
            xPath.append(localName);
        } else {
            xPath.append(namespace).append(":").append(localName);
        }
        final Element targetElement = (Element) XPathAPI.selectSingleNode(doc, xPath.toString());
        // элемент не найден - возвращаем исходное сообщение
        if (targetElement == null) {
            return inputXml;
        }

        // создание отдельного документа для подписания
        final Document signDoc = docBuilder.newDocument();
        // импортируем в него нужный элемент из исходного документа
        signDoc.appendChild(signDoc.adoptNode(targetElement.cloneNode(true)));

        // добавление узла подписи <ds:Signature> 
        // инициализация объекта формирования ЭЦП в соответствии с алгоритмом ГОСТ Р 34.10-2001
        XMLSignature sig = new XMLSignature(signDoc, "", "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411", "http://www.w3.org/2001/10/xml-exc-c14n#");

        // создание узла преобразований <ds:Transforms> обрабатываемого XML-документа
        Transforms transforms = new Transforms(signDoc);
        // добавление в узел преобразований правил работы с документом
        transforms.addTransform("http://www.w3.org/2000/09/xmldsig#enveloped-signature");
        transforms.addTransform("http://www.w3.org/2001/10/xml-exc-c14n#");

        // добавление в узел подписи ссылок (узла <ds:Reference>), определяющих правила работы с
        // XML-документом (обрабатывается текущий документ с заданными в узле <ds:Transforms> правилами
        // и заданным алгоритмом хеширования)
        // URI элемента Reference оставляется пустым
        sig.addDocument("", transforms, "http://www.w3.org/2001/04/xmldsig-more#gostr3411");

        // Создание подписи всего содержимого XML-документа на основе закрытого
        // ключа, заданных правил и алгоритмов
        final Object[] obj = samData.clone();

        // создание внутри узла подписи узла <ds:KeyInfo> информации 
        // об открытом ключе на основе сертификата
        sig.addKeyInfo((X509Certificate) obj[0]);

        // создание подписи XML-документа
        sig.sign((Key) obj[1]);

        // добавление в нужный узел исходного документа узла подписи 
        targetElement.appendChild(doc.adoptNode(sig.getElement().cloneNode(true)));

        Transformer tr = TransformerFactory.newInstance().newTransformer();
        tr.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        tr.transform(new DOMSource(doc), new StreamResult(bos));
        return bos.toByteArray();
    }

Здесь samData это
Код:
new Object[]{(X509Certificate) keyStore.getCertificate(alias), keyStore.getKey(alias, aliasKeyRecoveryPass)};
XPathAPI это
Код:
org.apache.xpath.XPathAPI
thanks 1 пользователь поблагодарил mvv за этот пост.
artsuillus оставлено 12.08.2013(UTC)
Offline javacoder  
#8 Оставлено : 12 августа 2013 г. 15:36:37(UTC)
javacoder

Статус: Новичок

Группы: Участники
Зарегистрирован: 05.08.2013(UTC)
Сообщений: 3

Привет всем,

при использовании любого из вышеперечисленных примеров получаю ошибку:

Caused by: org.apache.xml.security.utils.resolver.ResourceResolverException: Cannot resolve element with ID FinalPayment
at org.apache.xml.security.utils.resolver.implementations.ResolverFragment.engineResolve(ResolverFragment.java:86)
at org.apache.xml.security.utils.resolver.ResourceResolver.resolve(ResourceResolver.java:279)
at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMURIDereferencer.dereference(DOMURIDereferencer.java:97)
... 8 more

FinalPayment формирую так:

SOAPElement finalPayment = importRequest.addChildElement("FinalPayment");

Буду очень признателен за помощь
Offline javacoder  
#9 Оставлено : 13 августа 2013 г. 9:59:33(UTC)
javacoder

Статус: Новичок

Группы: Участники
Зарегистрирован: 05.08.2013(UTC)
Сообщений: 3

В элементе FinalPayment не предусмотрен атрибут id.Вероятно поэтому референс не работает, но как тогда он работал у остальных? Возможно определить референс так, чтобы он не использовал id, а ссылался на элемент по названию элемента?

Очень прошу помощи, так как не могу сдвинуться с мертвой точки...
Offline d.martynov  
#10 Оставлено : 14 августа 2013 г. 14:18:31(UTC)
d.martynov

Статус: Участник

Группы: Участники
Зарегистрирован: 12.08.2013(UTC)
Сообщений: 10
Российская Федерация
Откуда: Краснодар

Сказал(а) «Спасибо»: 4 раз
Автор: javacoder Перейти к цитате
В элементе FinalPayment не предусмотрен атрибут id.Вероятно поэтому референс не работает, но как тогда он работал у остальных? Возможно определить референс так, чтобы он не использовал id, а ссылался на элемент по названию элемента?

Очень прошу помощи, так как не могу сдвинуться с мертвой точки...


Временно решил проблему добавлением Id в ноду:

Код:
signedNode.setAttributeNS("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd", "wsu:Id", tag);


Однако появилась другая проблема. Сервер отвечает, что
Цитата:
Формат запроса (файла) не соответствует xsd-схеме


Кто-нибудь сталкивался?
Может кто-нибуть выложить запрос, с подписанными нодами?

Отредактировано пользователем 14 августа 2013 г. 14:20:57(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
3 Страницы123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.