logo Обзор КриптоПро NGate для защищённого доступа к корпоративным ресурсам
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

8 Страницы<1234>»
Опции
К последнему сообщению К первому непрочитанному
Offline Corzina  
#21 Оставлено : 6 июня 2015 г. 11:55:45(UTC)
Corzina

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 1 раз в 1 постах
SOAP_680200L71821060100160.xml (4kb) загружен 12 раз(а). SOAP_680200L93921020200160.xml (4kb) загружен 5 раз(а). SOAP_680200L81821010200160.xml (4kb) загружен 5 раз(а). SOAP_680200L61821060600160.xml (4kb) загружен 4 раз(а).
Автор: afev Перейти к цитате
P.S. Не подскажете, где можно проверить документ с подписью?


Попробуйте подписать вложенный файл и проверить на
http://smev-mvf.test.gosuslugi.ru:7777/gateway/services/SID0003663/wsdl

Только необходимо еще подписать и сущность FinalPayment

Отредактировано пользователем 8 июня 2015 г. 18:35:45(UTC)  | Причина: Исправлены ошибки в форматах файла

thanks 1 пользователь поблагодарил Corzina за этот пост.
Евгений Афанасьев оставлено 06.06.2015(UTC)
Offline johnconnor  
#22 Оставлено : 9 июня 2015 г. 16:53:28(UTC)
johnconnor

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

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

Похоже, получилось подписать корректно.
За основу было взято решение здесь:
https://community.oracle...079?start=0&tstart=0
Убрано все, что связано с SignedProperties.
xades4j использовалась только для того, чтобы получить ответ от TSA сервера

P.S. У xades4j, возможно, возникнет проблема с пространством имен. В СМЭВ используется "http://uri.etsi.org/01903/v1.1.1#", которого я не нашел в xades4j.
Offline Евгений Афанасьев  
#23 Оставлено : 10 июня 2015 г. 14:30:03(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 13 раз
Поблагодарили: 385 раз в 380 постах
Автор: Corzina Перейти к цитате
[attach]2Попробуйте подписать вложенный файл и проверить на
http://smev-mvf.test.gosuslugi.ru:7777/gateway/services/SID0003663/wsdl
Только необходимо еще подписать и сущность FinalPayment

Если использовать http://smev.gosuslugi.ru/portal/services-tools.jsp для проверки подписанного документа, то получаю, например,
Код:

Электронное сообщение соответствует методическим рекомендациям по разработке веб-сервисов версии 2.6.0
Электронная подпись ЭП-ОВ сообщения корректна

Если использовать http://smev-mvf.test.gosuslugi.ru:7777/gateway/services/SID0003663, то получаю ошибку:
Код:

Неверная ЭП сообщения

Есть какая-то разница между этими тестовыми сервисами?
Кроме того, пока нигде не фигурировал xades.
Подскажите, пожалуйста, подпись xades-T следует проверять по этому же адресу?
Техническую поддержку оказываем тут
Наша база знаний
Offline Inviz  
#24 Оставлено : 10 июня 2015 г. 15:11:06(UTC)
Inviz

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

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

Поблагодарили: 1 раз в 1 постах
Автор: afev Перейти к цитате
Автор: Corzina Перейти к цитате
[attach]2Попробуйте подписать вложенный файл и проверить на
http://smev-mvf.test.gosuslugi.ru:7777/gateway/services/SID0003663/wsdl
Только необходимо еще подписать и сущность FinalPayment

Если использовать http://smev.gosuslugi.ru/portal/services-tools.jsp для проверки подписанного документа, то получаю, например,
Код:

Электронное сообщение соответствует методическим рекомендациям по разработке веб-сервисов версии 2.6.0
Электронная подпись ЭП-ОВ сообщения корректна

Если использовать http://smev-mvf.test.gosuslugi.ru:7777/gateway/services/SID0003663, то получаю ошибку:
Код:

Неверная ЭП сообщения

Есть какая-то разница между этими тестовыми сервисами?
Кроме того, пока нигде не фигурировал xades.
Подскажите, пожалуйста, подпись xades-T следует проверять по этому же адресу?


Там все как обычно не тривиально..
В сообщении должно быть две подписи.
Первая подпись Xades-T подписывает "сущность" (например импорт платежа - тэг FinalPayment из примера)
Вторая XMLDsig подписывает все сообщение после п.1.

Далее все еще круче. СМЭВ проверяет только подпись всего сообщения, отвечает что принял, возвращает ID пакета запроса и отсылает запрос в ГИС ГМП асинхронно.
Через некоторое время можно вызвать СМЭВ с целью проверки статуса запроса в ГИС ГМП по ID пакета и вот там он уже ответит что было с подписью сущности, которая Xades-T...

Пример запроса
Код:
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" 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">
	<S:Header/>
	<S:Body wsu:Id="body">
		<ns23:GISGMPTransferMsg xmlns:ns23="http://roskazna.ru/gisgmp/02000000/SmevGISGMPService/" xmlns="http://roskazna.ru/gisgmp/xsd/116/PaymentInfo" xmlns:ns10="http://roskazna.ru/gisgmp/xsd/116/PGU_DataRequest" xmlns:ns11="http://roskazna.ru/gisgmp/xsd/116/PGU_ChargesResponse" xmlns:ns12="http://roskazna.ru/gisgmp/xsd/116/ExportPaymentsResponse" xmlns:ns13="http://roskazna.ru/gisgmp/xsd/116/PGU_ImportRequest" xmlns:ns14="http://roskazna.ru/gisgmp/xsd/116/ErrInfo" xmlns:ns15="http://roskazna.ru/gisgmp/xsd/116/Ticket" xmlns:ns16="http://smev.gosuslugi.ru/rev120315" xmlns:ns17="http://www.w3.org/2004/08/xop/include" xmlns:ns18="http://roskazna.ru/gisgmp/xsd/116/ChargeCreationRequest" xmlns:ns19="http://roskazna.ru/gisgmp/xsd/116/ChargeCreationResponse" xmlns:ns2="http://roskazna.ru/gisgmp/xsd/116/BudgetIndex" xmlns:ns20="http://roskazna.ru/gisgmp/xsd/116/MessageData" xmlns:ns21="http://roskazna.ru/gisgmp/xsd/116/PackageStatusRequest" xmlns:ns22="http://roskazna.ru/gisgmp/xsd/116/SelfAdministration" xmlns:ns24="http://roskazna.ru/gisgmp/xsd/116/Message" xmlns:ns3="http://roskazna.ru/gisgmp/xsd/116/Organization" xmlns:ns4="http://roskazna.ru/gisgmp/xsd/116/Common" xmlns:ns5="http://www.w3.org/2000/09/xmldsig#" xmlns:ns6="http://roskazna.ru/gisgmp/xsd/116/Charge" xmlns:ns7="http://roskazna.ru/gisgmp/xsd/116/Quittance" xmlns:ns8="http://roskazna.ru/gisgmp/xsd/116/DoAcknowledgment" xmlns:ns9="http://roskazna.ru/gisgmp/xsd/116/ExportQuittanceResponse">
			<ns16:Message>
				<ns16:Sender>
					<ns16:Code>112233445</ns16:Code>
					<ns16:Name>АКБ Банк ОАО</ns16:Name>
				</ns16:Sender>
				<ns16:Recipient>
					<ns16:Code>RKZN35001</ns16:Code>
					<ns16:Name>Казначейство России</ns16:Name>
				</ns16:Recipient>
				<ns16:ServiceName>112233</ns16:ServiceName>
				<ns16:TypeCode>GFNC</ns16:TypeCode>
				<ns16:Status>REQUEST</ns16:Status>
				<ns16:Date>2015-06-10T11:02:03.153Z</ns16:Date>
				<ns16:ExchangeType>6</ns16:ExchangeType>
			</ns16:Message>
			<ns16:MessageData>
				<ns16:AppData>
					<ns24:RequestMessage Id="R_FA048B17-AC0E-2064-E054-0015176FF9FF" senderIdentifier="123a11" timestamp="2015-06-10T11:02:03.169Z">
						<ns20:ImportRequest>
							<ns13:Package>
								<ns13:Document>
									<FinalPayment Id="P_FA048B17-AD0E-2064-E054-0015176FF9FF">
										<SupplierBillID>1234512345123451234512345</SupplierBillID>
										<Narrative>тест</Narrative>
										<Amount>11106</Amount>
										<PaymentDate>2015-06-02T17:47:03</PaymentDate>
										<ReceiptDate>2015-06-02</ReceiptDate>
										<BudgetIndex>
											<ns2:Status>03</ns2:Status>
											<ns2:Purpose>0</ns2:Purpose>
											<ns2:TaxPeriod>КВ.01.2015</ns2:TaxPeriod>
											<ns2:TaxDocNumber>26;67567563</ns2:TaxDocNumber>
											<ns2:TaxDocDate>24.04.2015</ns2:TaxDocDate>
											<ns2:PaymentType>0</ns2:PaymentType>
										</BudgetIndex>
										<PaymentIdentificationData>
											<Bank>
												<ns3:Name>АКБ БАНК (ОАО) Г. МОСКВА</ns3:Name>
												<ns3:BIK>011223344</ns3:BIK>
												<ns3:CorrespondentBankAccount>11112222333344445555</ns3:CorrespondentBankAccount>
											</Bank>
											<SystemIdentifier>11112222333344445555666677778888</SystemIdentifier>
										</PaymentIdentificationData>
										<AccDoc>
											<AccDocNo>526148</AccDocNo>
											<AccDocDate>2015-06-02</AccDocDate>
										</AccDoc>
										<Payer>
											<ns4:PayerIdentifier>1111222233334444555566667</ns4:PayerIdentifier>
											<PayerAccount>11112222333344445555</PayerAccount>
										</Payer>
										<Payee>
											<PayeeName>получатель тест</PayeeName>
											<payeeINN>1111222233</payeeINN>
											<payeeKPP>111122223</payeeKPP>
											<PayeeBankAcc>
												<ns3:AccountNumber>11112222333344445555</ns3:AccountNumber>
												<ns3:Bank>
													<ns3:Name>ОТДЕЛЕНИЕ 1 МОСКВА Г. МОСКВА</ns3:Name>
													<ns3:BIK>011223344</ns3:BIK>
												</ns3:Bank>
											</PayeeBankAcc>
										</Payee>
										<ChangeStatus meaning="1"/>
										<KBK>11112222333344445555</KBK>
										<ns4:TransKind>01</ns4:TransKind>
										<Priority>5</Priority>
										<OKTMO>11112222</OKTMO>
									</FinalPayment>
								</ns13:Document>
							</ns13:Package>
						</ns20:ImportRequest>
					</ns24:RequestMessage>
				</ns16:AppData>
			</ns16:MessageData>
		</ns23:GISGMPTransferMsg>
	</S:Body>
</S:Envelope>


Пример запроса статуса
Код:
<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" 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">
    <S:Header/>
    <S:Body wsu:Id="body">
        <ns23:GISGMPTransferMsg xmlns:ns23="http://roskazna.ru/gisgmp/02000000/SmevGISGMPService/" xmlns="http://roskazna.ru/gisgmp/xsd/116/PaymentInfo" xmlns:ns10="http://roskazna.ru/gisgmp/xsd/116/PGU_DataRequest" xmlns:ns11="http://roskazna.ru/gisgmp/xsd/116/PGU_ChargesResponse" xmlns:ns12="http://roskazna.ru/gisgmp/xsd/116/ExportPaymentsResponse" xmlns:ns13="http://roskazna.ru/gisgmp/xsd/116/PGU_ImportRequest" xmlns:ns14="http://roskazna.ru/gisgmp/xsd/116/ErrInfo" xmlns:ns15="http://roskazna.ru/gisgmp/xsd/116/Ticket" xmlns:ns16="http://smev.gosuslugi.ru/rev120315" xmlns:ns17="http://www.w3.org/2004/08/xop/include" xmlns:ns18="http://roskazna.ru/gisgmp/xsd/116/ChargeCreationRequest" xmlns:ns19="http://roskazna.ru/gisgmp/xsd/116/ChargeCreationResponse" xmlns:ns2="http://roskazna.ru/gisgmp/xsd/116/BudgetIndex" xmlns:ns20="http://roskazna.ru/gisgmp/xsd/116/MessageData" xmlns:ns21="http://roskazna.ru/gisgmp/xsd/116/PackageStatusRequest" xmlns:ns22="http://roskazna.ru/gisgmp/xsd/116/SelfAdministration" xmlns:ns24="http://roskazna.ru/gisgmp/xsd/116/Message" xmlns:ns3="http://roskazna.ru/gisgmp/xsd/116/Organization" xmlns:ns4="http://roskazna.ru/gisgmp/xsd/116/Common" xmlns:ns5="http://www.w3.org/2000/09/xmldsig#" xmlns:ns6="http://roskazna.ru/gisgmp/xsd/116/Charge" xmlns:ns7="http://roskazna.ru/gisgmp/xsd/116/Quittance" xmlns:ns8="http://roskazna.ru/gisgmp/xsd/116/DoAcknowledgment" xmlns:ns9="http://roskazna.ru/gisgmp/xsd/116/ExportQuittanceResponse">
            <ns16:Message>
                <ns16:Sender>
                    <ns16:Code>112233445</ns16:Code>
                    <ns16:Name>АКБ Банк ОАО</ns16:Name>
                </ns16:Sender>
                <ns16:Recipient>
                    <ns16:Code>RKZN35001</ns16:Code>
                    <ns16:Name>Казначейство России</ns16:Name>
                </ns16:Recipient>
                <ns16:ServiceName>112233</ns16:ServiceName>
                <ns16:TypeCode>GFNC</ns16:TypeCode>
                <ns16:Status>REQUEST</ns16:Status>
                <ns16:Date>2015-06-10T11:09:45.388Z</ns16:Date>
                <ns16:ExchangeType>6</ns16:ExchangeType>
            </ns16:Message>
            <ns16:MessageData>
                <ns16:AppData>
                    <ns24:RequestMessage Id="S_FA048B17-AF0E-2064-E054-0015176FF9FF" senderIdentifier="123a11" timestamp="2015-06-10T11:09:45.390Z">
                        <ns20:PackageStatusRequest>
                            <ns21:PackageID>ID запроса, который присвоил СМЭВ при импорте</ns21:PackageID>
                        </ns20:PackageStatusRequest>
                    </ns24:RequestMessage>
                </ns16:AppData>
            </ns16:MessageData>
        </ns23:GISGMPTransferMsg>
    </S:Body>
</S:Envelope>

Отредактировано пользователем 10 июня 2015 г. 17:07:25(UTC)  | Причина: Не указана

Offline Inviz  
#25 Оставлено : 10 июня 2015 г. 15:12:15(UTC)
Inviz

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

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

Поблагодарили: 1 раз в 1 постах
P.S. очень жду какого-нибудь решения от КРИПТО ПРО для создания подписи Xades-T...
1 июля is coming...

Отредактировано пользователем 10 июня 2015 г. 15:13:00(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#26 Оставлено : 10 июня 2015 г. 18:17:06(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 13 раз
Поблагодарили: 385 раз в 380 постах
Спасибо. Не могли бы вы привести пример документа с "ID пакета запроса" ?
Техническую поддержку оказываем тут
Наша база знаний
Offline Inviz  
#27 Оставлено : 11 июня 2015 г. 11:19:51(UTC)
Inviz

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

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

Поблагодарили: 1 раз в 1 постах
Автор: afev Перейти к цитате
Спасибо. Не могли бы вы привести пример документа с "ID пакета запроса" ?


Сам запрос к СМЭВ я привел в примере №1.
На него СМЭВ отвечает следующим сообщением:

Код:

<S:Envelope xmlns:S="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">
	<S:Header>
		<smev:Header xmlns:smev="http://smev.gosuslugi.ru/rev120315" actor="http://smev.gosuslugi.ru/actors/recipient" wsu:Id="ID-9a556bcf-894c-4b4b-bae4-231671f8ff67">
			<smev:NodeId>99</smev:NodeId>
			<smev:MessageId>f3cbb5a7-cc0b-4522-9e6a-90584d13b20b</smev:MessageId>
			<smev:TimeStamp>2015-06-10T19:28:15.248+04:00</smev:TimeStamp>
			<smev:MessageClass>RESPONSE</smev:MessageClass>
		</smev:Header>
	</S:Header>
	<S:Body wsu:Id="body">
		<ns4:GISGMPTransferMsg xmlns:ns4="http://roskazna.ru/gisgmp/02000000/SmevGISGMPService/" xmlns="http://smev.gosuslugi.ru/rev120315" xmlns:ns2="http://www.w3.org/2004/08/xop/include" xmlns:ns3="http://www.w3.org/2000/09/xmldsig#" xmlns:S="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" xmlns:xml="http://www.w3.org/XML/1998/namespace">
			<Message>
				<Sender>
					<Code>RKZN35001</Code>
					<Name>Казначейство России</Name>
				</Sender>
				<Recipient>
					<Code>112233445</Code>
					<Name>АКБ Банк ОАО</Name>
				</Recipient>
				<ServiceName>112233</ServiceName>
				<TypeCode>GFNC</TypeCode>
				<Status>RESULT</Status>
				<Date>2015-06-10T18:28:00.212+03:00</Date>
				<ExchangeType>6</ExchangeType>
				<RequestIdRef>f3cbb5a7-cc0b-4522-9e6a-90584d13b20b</RequestIdRef>
				<OriginRequestIdRef>f3cbb5a7-cc0b-4522-9e6a-90584d13b20b</OriginRequestIdRef>
			</Message>
			<MessageData>
				<AppData>
					<mes:ResponseMessage xmlns:mes="http://roskazna.ru/gisgmp/xsd/116/Message" xmlns:rev="http://smev.gosuslugi.ru/rev120315" xmlns:smev="http://roskazna.ru/gisgmp/02000000/SmevGISGMPService/" Id="u_ac02c632-93b6-42de-896a-688aa361b4d8" rqId="R_FA048B17-AC0E-2064-E054-0015176FF9FF" senderIdentifier="950000" timestamp="2015-06-10T18:28:00.196+03:00">
						<mes1:Ticket xmlns:mes1="http://roskazna.ru/gisgmp/xsd/116/MessageData">
							<tic:RequestProcessResult xmlns:tic="http://roskazna.ru/gisgmp/xsd/116/Ticket">
								<err:ResultCode xmlns:err="http://roskazna.ru/gisgmp/xsd/116/ErrInfo">0</err:ResultCode>
								<err:ResultData xmlns:err="http://roskazna.ru/gisgmp/xsd/116/ErrInfo">ID_пакета</err:ResultData>
							</tic:RequestProcessResult>
						</mes1:Ticket>
					</mes:ResponseMessage>
				</AppData>
			</MessageData>
		</ns4:GISGMPTransferMsg>
	</S:Body>
</S:Envelope>


Это ответ на общую проверку сообщения от СМЭВ.
Далее СМЭВ пересылает запрос в ГИС ГМП и через какое-то время можно проверить состояние платежа при помощи ID пакета, вернувшегося из СМЭВ.

Для проверки отправляется запрос из примера №2 и на него приходит ответ вида:

Код:

<S:Envelope xmlns:S="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">
	<S:Header>
		<smev:Header xmlns:smev="http://smev.gosuslugi.ru/rev120315" actor="http://smev.gosuslugi.ru/actors/recipient" wsu:Id="ID-db396090-d6f9-45fb-ac8b-36d51f80ca00">
			<smev:NodeId>99</smev:NodeId>
			<smev:MessageId>511696dc-3943-4047-b9d6-e10102d2118f</smev:MessageId>
			<smev:TimeStamp>2015-06-02T19:12:20.480+04:00</smev:TimeStamp>
			<smev:MessageClass>RESPONSE</smev:MessageClass>
		</smev:Header>
	</S:Header>
	<S:Body wsu:Id="body">
		<ns4:GISGMPTransferMsg xmlns:ns4="http://roskazna.ru/gisgmp/02000000/SmevGISGMPService/" xmlns="http://smev.gosuslugi.ru/rev120315" xmlns:ns2="http://www.w3.org/2004/08/xop/include" xmlns:ns3="http://www.w3.org/2000/09/xmldsig#" xmlns:S="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" xmlns:xml="http://www.w3.org/XML/1998/namespace">
			<Message>
				<Sender>
					<Code>RKZN35001</Code>
					<Name>Казначейство России</Name>
				</Sender>
				<Recipient>
					<Code>112233445</Code>
					<Name>АКБ Банк ОАО</Name>
				</Recipient>
				<ServiceName>112233</ServiceName>
				<TypeCode>GFNC</TypeCode>
				<Status>RESULT</Status>
				<Date>2015-06-02T18:12:11.753+03:00</Date>
				<ExchangeType>6</ExchangeType>
				<RequestIdRef>511696dc-3943-4047-b9d6-e10102d2118f</RequestIdRef>
				<OriginRequestIdRef>511696dc-3943-4047-b9d6-e10102d2118f</OriginRequestIdRef>
			</Message>
			<MessageData>
				<AppData>
					<mes:ResponseMessage xmlns:mes="http://roskazna.ru/gisgmp/xsd/116/Message" xmlns:rev="http://smev.gosuslugi.ru/rev120315" xmlns:smev="http://roskazna.ru/gisgmp/02000000/SmevGISGMPService/" Id="u_1c925f98-a302-4232-be60-7ea4bbc7d0ac" rqId="S_FA048B17-AF0E-2064-E054-0015176FF9FF" senderIdentifier="950000" timestamp="2015-06-02T18:12:11.753+03:00">
						<mes:Ticket xmlns:mes="http://roskazna.ru/gisgmp/xsd/116/MessageData" xmlns:wsg="http://roskazna.ru/wsdl/wsgate">
							<tic:PackageProcessResult xmlns:tic="http://roskazna.ru/gisgmp/xsd/116/Ticket">
								<tic:EntityProcessResult entityId="P_FA048B17-AD0E-2064-E054-0015176FF9FF">
									<err:ResultCode xmlns:err="http://roskazna.ru/gisgmp/xsd/116/ErrInfo">13</err:ResultCode>
									<err:ResultDescription xmlns:err="http://roskazna.ru/gisgmp/xsd/116/ErrInfo">ЭП под сущностью неверна</err:ResultDescription>
								</tic:EntityProcessResult>
							</tic:PackageProcessResult>
						</mes:Ticket>
					</mes:ResponseMessage>
				</AppData>
			</MessageData>
		</ns4:GISGMPTransferMsg>
	</S:Body>
</S:Envelope>
thanks 1 пользователь поблагодарил Inviz за этот пост.
Евгений Афанасьев оставлено 11.06.2015(UTC)
Offline servelat  
#28 Оставлено : 11 июня 2015 г. 11:24:39(UTC)
servelat

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

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

Inviz опередил
)

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

Offline Евгений Афанасьев  
#29 Оставлено : 11 июня 2015 г. 17:41:48(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 13 раз
Поблагодарили: 385 раз в 380 постах
Можно ли считать сообщение (это часть. Полный документ содержит несколько подписей и закодированные в base64 сообщения)
Код:

<mes:ResponseMessage xmlns:mes="http://roskazna.ru/gisgmp/xsd/116/Message" Id="u_329e7701-c2f5-4454-b8e8-e3111f07b921" rqId="ID_1" senderIdentifier="950000" timestamp="2015-06-11T17:23:31.954+03:00">
<mes:Ticket xmlns:mes="http://roskazna.ru/gisgmp/xsd/116/MessageData">
<tic:PackageProcessResult xmlns:tic="http://roskazna.ru/gisgmp/xsd/116/Ticket">
<tic:EntityProcessResult entityId="N/A">
<err:ResultCode xmlns:err="http://roskazna.ru/gisgmp/xsd/116/ErrInfo">8</err:ResultCode>
<err:ResultDescription xmlns:err="http://roskazna.ru/gisgmp/xsd/116/ErrInfo">Нет прав на импорт/уточнение/аннулирование сущности данного типа</err:ResultDescription></tic:EntityProcessResult>
</tic:PackageProcessResult>
</mes:Ticket>
</mes:ResponseMessage>

результатом успешной проверки всех подписей? Был выполнен один запрос (с finalPayment и двумя подписями - Security Header, XAdES-T со штампом тестовой TSP службы Крипто-Про), потом - получение идентификатора PackageID, затем снова отправлен еще один подписанный запрос с PackageID и получен ответ с ResultCode = 8.
Использовался http://smev-mvf.test.gosuslugi.ru:7777/gateway/services/SID0003663; документ с finalPayment, почти как в сообщениях выше; документ с PackageStatusRequest, как было подсказано выше.

Отредактировано пользователем 11 июня 2015 г. 20:14:06(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline Corzina  
#30 Оставлено : 12 июня 2015 г. 13:03:01(UTC)
Corzina

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 1 раз в 1 постах
Автор: afev Перейти к цитате
Можно ли считать сообщение (это часть. Полный документ содержит несколько подписей и закодированные в base64 сообщения)
Код:

<mes:ResponseMessage xmlns:mes="http://roskazna.ru/gisgmp/xsd/116/Message" Id="u_329e7701-c2f5-4454-b8e8-e3111f07b921" rqId="ID_1" senderIdentifier="950000" timestamp="2015-06-11T17:23:31.954+03:00">
<mes:Ticket xmlns:mes="http://roskazna.ru/gisgmp/xsd/116/MessageData">
<tic:PackageProcessResult xmlns:tic="http://roskazna.ru/gisgmp/xsd/116/Ticket">
<tic:EntityProcessResult entityId="N/A">
<err:ResultCode xmlns:err="http://roskazna.ru/gisgmp/xsd/116/ErrInfo">8</err:ResultCode>
<err:ResultDescription xmlns:err="http://roskazna.ru/gisgmp/xsd/116/ErrInfo">Нет прав на импорт/уточнение/аннулирование сущности данного типа</err:ResultDescription></tic:EntityProcessResult>
</tic:PackageProcessResult>
</mes:Ticket>
</mes:ResponseMessage>

результатом успешной проверки всех подписей? Был выполнен один запрос (с finalPayment и двумя подписями - Security Header, XAdES-T со штампом тестовой TSP службы Крипто-Про), потом - получение идентификатора PackageID, затем снова отправлен еще один подписанный запрос с PackageID и получен ответ с ResultCode = 8.
Использовался http://smev-mvf.test.gosuslugi.ru:7777/gateway/services/SID0003663; документ с finalPayment, почти как в сообщениях выше; документ с PackageStatusRequest, как было подсказано выше.


По идее да, т.к если ЭЦП не верна возвращается
Код:

<MessageData>
- <AppData>
- <mes:ResponseMessage xmlns:mes="http://roskazna.ru/gisgmp/xsd/116/Message" xmlns:rev="http://smev.gosuslugi.ru/rev120315" xmlns:smev="http://roskazna.ru/gisgmp/02000000/SmevGISGMPService/" Id="u_dce8a204-df68-4114-9e4e-e12e237f1175" rqId="ID_8" senderIdentifier="950000" timestamp="2015-06-12T12:35:32.384+03:00">
- <mes:Ticket xmlns:mes="http://roskazna.ru/gisgmp/xsd/116/MessageData" xmlns:wsg="http://roskazna.ru/wsdl/wsgate">
- <tic:PackageProcessResult xmlns:tic="http://roskazna.ru/gisgmp/xsd/116/Ticket">
- <tic:EntityProcessResult entityId="ID-8C2943E7-7599-4C03-961E-2505614AA164">
  <err:ResultCode xmlns:err="http://roskazna.ru/gisgmp/xsd/116/ErrInfo">13</err:ResultCode> 
  <err:ResultDescription xmlns:err="http://roskazna.ru/gisgmp/xsd/116/ErrInfo">ЭП под сущностью неверна</err:ResultDescription> 
  </tic:EntityProcessResult>
  </tic:PackageProcessResult>
  </mes:Ticket>
  </mes:ResponseMessage>
  </AppData>
  </MessageData>

Отредактировано пользователем 12 июня 2015 г. 13:04:25(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#31 Оставлено : 15 июня 2015 г. 10:24:32(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 13 раз
Поблагодарили: 385 раз в 380 постах
.

Отредактировано пользователем 15 июня 2015 г. 10:34:38(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline Евгений Афанасьев  
#32 Оставлено : 15 июня 2015 г. 15:22:12(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 13 раз
Поблагодарили: 385 раз в 380 постах
В ходе проверок было получено несколько разных ответов:
5 - Импортируемые данные уже присутствуют в системе;
8 - Нет прав на импорт/ уточнение/аннулирование сущности данного типа;
13 - ЭП под сущностью (запросом) не верна.

Прилагаем архив, в котором находятся:
1. Несколько xml документов в папке data. Каждая пара называется SOAP_etalon_pay.xml_[xxx] и SOAP_etalon_pay_response_1_id.xml_[xxx].
Хвост в виде _xxx перед запуском следует убирать (то есть выбирается та или иная пара документов).
Документ SOAP_etalon_pay - первый отравляемый запрос (импорт платежа), документ SOAP_etalon_pay_response_1_id - запрос с package id для проверки обработки.
Файлов-примеров несколько (пар), т.к. в них прописаны разные отправители (некие 000147 и 0000a1).
Пара документов с расширением _0000a1 (sender=0000a1) дает при выполнении код 8, пара документов с расширением _000147 (sender=000147) дает код 13.
Документ SOAP_etalon_pay.xml_000147_exists (sender=000147) в паре с SOAP_etalon_pay_response_1_id.xml_000147 дает код 5.
Зависимость между кодом ошибки и этапом проверки не ясна, однако:
а) в случае получения кода 8 (документы SOAP_etalon_pay.xml_0000a1 и SOAP_etalon_pay_response_1_id.xml_0000a1) изменение подписи или штампа ни на что не влияет, видимо, до проверки подписи не доходит;
б) в случае c кодом 5 (данные уже присутствуют в системе) - SOAP_etalon_pay.xml_000147_exists почти идентичен SOAP_etalon_pay.xml_000147 (для получателя 000147; что нужно изменить, чтобы этот документ стал уникальным - неясно), хотя SOAP_etalon_pay.xml_000147 дает в итоге 13.
В инструкции ГИС ГМП упоминается "Загрузка и обновление сертификатов ключей проверки ЭП участников" - возможно, у sender 000147 имеется какой-то другой сертификат в системе(?).
2. Архив примеров (samples-sources.jar).
В частности, добавлен пример создания XAdES-T - XAdESExample в пакет xades и GisGmpServiceExample в xades.gisgmp.
С помощью XAdESExample можно подписать и проверить документ (узел). Перед запуском нужно иметь в папке data (см. архив) пару файлов с именами SOAP_etalon_pay.xml и SOAP_etalon_pay_response_1_id.xml и скопировать ключевой контейнер test. Для XAdES-T используется тестовый ключевой контейнер из класса Container2001 (в пакете CAdES.configuration.container) и хранилище доверенных сертификатов xadesTrustStore с паролем 1 для проверки подписи.
Пример GisGmpServiceExample в пакете xades.gisgmp осуществляет последовательно подпись документа с именем SOAP_etalon_pay.xml, затем создание Security Header и подпись всего документа с помощью специального контейнера с сертификатом, выпущенным в аккредитованном УЦ (иначе не проходила проверка подписи). Затем из полученного ответа извлекается package id, формируется запрос из документа SOAP_etalon_pay_response_1_id.xml с подстановкой package id, запрос с package id отправляется и получается ответ.
Существование проблемы с версией xades в документе пока не установлено.
3. Тестовый ключевой контейнер test с паролем 1, выпущен в тестовом УЦ (для подписи XAdES-T).
4. Хранилище доверенных сертификатов xadesTrustStore с паролем 1 в папке data (для проверки подписи XAdES-T).

Потребуются зависимости (xades - для XAdeS-T подписи и wss4j для общей подписи) из папки dependencies:

aopalliance-1.0.jar
bcpkix-jdk15on-1.50.jar
bcprov-jdk15on-1.50.jar
guice-2.0.jar
guice-multibindings-2.0.jar
axis-1.4.jar
axis-jaxrpc-1.4.jar
commons-discovery-0.5.jar
commons-logging-1.1.1.jar
hamcrest-core-1.3.jar
joda-time-1.6.2.jar
opensaml-2.5.1-1.jar
openws-1.4.2-1.jar
serializer-2.7.1.jar
slf4j-api-1.7.9.jar
wsdl4j-1.6.2.jar
wss4j-1.6.18.jar
xades4j-1.3.2.jar
xalan-2.7.0.jar
xercesImpl-2.9.1.jar
xml-apis-1.3.04.jar
xmlsec-1.5.0.jar
xmltooling-1.3.2-1.jar

, установленный JCP со снятыми ограничениями и ключевой контейнер с сертификатом, выпущенным в аккредитованном УЦ (для общей подписи в Security Header).
Пожалуй, лучше всего было, если бы кто-нибудь попробовал проверить, используя правильный (существующий) sender (recipient) в документе (и другие правильно заполненные поля).

P.S.
Архив

Отредактировано пользователем 15 июня 2015 г. 15:59:47(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
Corzina оставлено 16.06.2015(UTC)
Offline servelat  
#33 Оставлено : 15 июня 2015 г. 15:31:26(UTC)
servelat

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

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

А как получить архив?
Offline ARnikev  
#34 Оставлено : 16 июня 2015 г. 14:45:40(UTC)
ARnikev

Статус: Активный участник

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 2 раз в 1 постах
Господа, извиняюсь за немного оффтоп. Как у вас получилось вменяемые java классы получить из wsdl и xsd схем нового формата? У меня из текущего wsdl получается довольно мало java классов, как минимум отсутствуют основные GISGMPTransferMsg, ChargeType. Использую Apache CFX wsdl2java. Из wsdl старого формата все корректно формируется.
Offline Corzina  
#35 Оставлено : 16 июня 2015 г. 20:02:12(UTC)
Corzina

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 1 раз в 1 постах
Afev: Я протестировал Ваше решение: Сделал из всех вложенных файлов в архиве библиотеку. Вычистил все версии библиотек в проекте (были подключены более новые, чем использует xades4j). Попробовал на тестовом сервисе отправить 10 реальных платежей с реальными данными, проверка ЭЦП прошла успешно, в принципе, завтра могу завтра пару платежей на боевом сервисе отправить(т.к. сегодня уже боевая машина выключена).

Если кому необходимо пример подписи FinalPayment на основании кода из примера afev:
Код:

public static SOAPMessage Set_sign_Element_XAdES_ver_Crypto (SOAPMessage soapMessage, String tag,  C_JCP in_jsp) throws Exception {
        
            com.sun.org.apache.xml.internal.security.Init.init();
            JCPXMLDSigInit.init();
            // Инициализация JCP XML провайдера.
            if(!JCPXMLDSigInit.isInitialized()) {
                JCPXMLDSigInit.init();
            }
            
            // Инициализация ключевого контейнера.
            KeyStore keyStore = KeyStore.getInstance(JCP.HD_STORE_NAME);
            keyStore.load(null, null);
            
            // Получение ключа и сертификата.
            PrivateKey privateKey = in_jsp.Get_PrivateKey();
            X509Certificate cert = in_jsp.Get_sert();
            
            Document doc = soapMessage.getSOAPPart().getEnvelope().getOwnerDocument();
            //Element Signature = doc.createElement("Signature");
            //Signature.setAttribute("xmlns", "http://www.w3.org/2000/09/xmldsig#");
            
            //Элемент, в который будем добавлять подпись
            
            NodeList childNodes = soapMessage.getSOAPPart().getEnvelope().getBody().getFirstChild().getChildNodes();
            org.w3c.dom.Node node_fp = childNodes.item(1).getFirstChild().getFirstChild().getFirstChild().getFirstChild().getFirstChild().getFirstChild();
            
            Element signedNode = (Element) node_fp;
            
            NamedNodeMap attributes = node_fp.getAttributes();
            org.w3c.dom.Node Node_ID = attributes.getNamedItem("Id");
            String signingId = Node_ID.getTextContent();
            
            final Node nodeToSign = node_fp;
            final String referenceURI = "#" + signingId;


            // 3. Алгоритмы.

            final KeyingDataProvider keyingProvider = new DirectKeyingDataProvider(cert, privateKey);
            final XadesSigningProfile sigProf = new XadesTSigningProfile(keyingProvider)

                    // time-stamp provider. Дополнительно задается список соответствий между
                    // алгоритмом хеширования и адресом TSP службы, чтобы разнообразить и
                    // расширить пример.
                    .withTimeStampTokenProvider(new GostTimeStampTokenProvider(
                        GostXAdESUtility.MAP_DIGEST_OID_2_TSA_URL, XAdESConfig.CONFIG_2001_S.getDefaultProvider()))

                    // digest provider
                    .withDigestEngineProvider(new DefaultMessageDigestProvider() { // digest

                        @Override
                        public MessageDigest getEngine(String digestAlgorithmURI) throws UnsupportedAlgorithmException {

                            final String digestAlgOid = GostXAdESUtility.digestUri2Digest(digestAlgorithmURI);

                            try {
                                return MessageDigest.getInstance(digestAlgOid);
                            } catch (NoSuchAlgorithmException e) {
                                throw new UnsupportedAlgorithmException(e.getMessage(), digestAlgorithmURI, e);
                            }
                        }

                    })

                    .withAlgorithmsProviderEx(new DefaultAlgorithmsProviderEx() { // algorithms

                        private String digestUrn = null;

                        @Override
                        public Algorithm getSignatureAlgorithm(String keyAlgorithmName)
                            throws UnsupportedAlgorithmException {

                            digestUrn = GostXAdESUtility.key2DigestUrn(keyAlgorithmName);
                            final String signatureUrn = GostXAdESUtility.key2SignatureUrn(keyAlgorithmName);

                            return new GenericAlgorithm(signatureUrn);
                        }

                        @Override
                        public String getDigestAlgorithmForReferenceProperties() {
                            return digestUrn;
                        }

                        @Override
                        public String getDigestAlgorithmForDataObjsReferences() {
                            return digestUrn;
                        }

                        @Override
                        public String getDigestAlgorithmForTimeStampProperties() {
                            return digestUrn;
                        }

                        @Override
                        public Algorithm getCanonicalizationAlgorithmForSignature()
                        {
                            return new ExclusiveCanonicalXMLWithoutComments();
                        }

                        @Override
                        public Algorithm getCanonicalizationAlgorithmForTimeStampProperties()
                        {
                            return new ExclusiveCanonicalXMLWithoutComments();
                        }
                    });

            // 4. Подпись.

            final XadesSigner signer = sigProf.newSigner();

            final DataObjectDesc dataObj = new DataObjectReference(referenceURI);
            dataObj.withTransform(new EnvelopedSignatureTransform());

            final SignedDataObjects dataObjects = new SignedDataObjects(dataObj);

            signer.sign(dataObjects, nodeToSign);
            System.out.println("XAdES-T signature completed.");

            soapMessage.saveChanges();
            return soapMessage;
    }


Вызов
Код:

   /**
     * Устанавливаем подпись на документе, предварительно создем WSSSecurity
     * @param in_path
     * @param file_name
     * @param in_jsp 
     */
    static public void Set_Sign_Soap_Message(String in_path, String file_name, C_JCP in_jsp, boolean set_sign_final_payment) {
        try {

            FileInputStream is = new FileInputStream(in_path+file_name);
            MessageFactory messageFactory = MessageFactory.newInstance();
            SOAPMessage mf = messageFactory.createMessage();
            mf.getSOAPPart().setContent(new StreamSource(is));
            
            // Ставим подпись на элементе
            if (set_sign_final_payment){
                    //mf = Set_sign_Element(mf, "FinalPayment",  in_jsp);
                    mf = Set_sign_Element_XAdES_ver_Crypto(mf, "FinalPayment",  in_jsp);
            }
            
            // Prepare secured header
            mf.getSOAPPart().getEnvelope().addNamespaceDeclaration("wsse", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");
            mf.getSOAPPart().getEnvelope().addNamespaceDeclaration("wsu", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd");
            mf.getSOAPPart().getEnvelope().addNamespaceDeclaration("ds", "http://www.w3.org/2000/09/xmldsig#");
            mf.getSOAPBody().setAttributeNS("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd", "wsu:Id","body");
            
            WSSecHeader header = new WSSecHeader();
            header.setActor("http://smev.gosuslugi.ru/actors/smev");
            header.setMustUnderstand(false);
            
            Element sec = header.insertSecurityHeader(mf.getSOAPPart());
            Document doc = mf.getSOAPPart().getEnvelope().getOwnerDocument();
            
            Element token =(Element) sec.appendChild(doc.createElementNS("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "wsse:BinarySecurityToken")); 
            token.setAttribute("EncodingType", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary");
            token.setAttribute("ValueType", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3");
            token.setAttribute("wsu:Id", "CertId");
            
            
            
            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 = in_jsp.Get_PrivateKey();
            X509Certificate cert = in_jsp.Get_sert();
            // Prepare signature provider
            Provider xmlDSigProvider = new ru.CryptoPro.JCPxml.dsig.internal.dom.XMLDSigRI();
            //setSAMdata(null, ru.utility.SpecUtility.DEFAULT_PASSWORD, ru.utility.SpecUtility.DEFAULT_ALIAS, ru.utility.SpecUtility.DEFAULT_PASSWORD);
            final Transforms transforms = new Transforms(doc);
            XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM", xmlDSigProvider);


                    
            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("#body", fac.newDigestMethod("http://www.w3.org/2001/04/xmldsig-more#gostr3411", null));
                    Reference ref = fac.newReference("#body", fac.newDigestMethod("http://www.w3.org/2001/04/xmldsig-more#gostr3411", null),
               //     null,null,null );
                     transformList, null,null );
                    
            // Make link to signing element
            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));
            
            //transforms.addTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS);

                    
            // Prepare key information to verify signature in future on other side
            KeyInfoFactory kif = fac.getKeyInfoFactory();
            X509Data x509d = kif.newX509Data(Collections.singletonList(cert));
            KeyInfo ki = kif.newKeyInfo(Collections.singletonList(x509d));
            
            // Create signature and sign by private key
            javax.xml.crypto.dsig.XMLSignature sig = fac.newXMLSignature(si, ki);
            DOMSignContext signContext = new DOMSignContext(privateKey, token);
            
            sig.sign(signContext);
            

            // Insert signature node in document
            Element sigE = (Element) XPathAPI.selectSingleNode(signContext.getParent(), "//ds:Signature");
            Node keyE = (Node) XPathAPI.selectSingleNode(sigE, "//ds:KeyInfo", sigE);
            token.appendChild(doc.createTextNode(XPathAPI.selectSingleNode(keyE, "//ds:X509Certificate", keyE).getFirstChild().getNodeValue()));
            keyE.removeChild(XPathAPI.selectSingleNode(keyE, "//ds:X509Data", keyE));
            NodeList chl = keyE.getChildNodes();
            
            for (int i = 0; i < chl.getLength(); i++) {
                keyE.removeChild(chl.item(i));
            }
            
            Node str = (Node) keyE.appendChild(doc.createElementNS("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "wsse:SecurityTokenReference"));
            Element strRef = (Element)str.appendChild(doc.createElementNS("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "wsse:Reference"));
            
            strRef.setAttribute("ValueType", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3");
            strRef.setAttribute("URI", "#CertId");
            header.getSecurityHeader().appendChild(sigE);
           
            mf.saveChanges();
            FileOutputStream f_out = new FileOutputStream(in_path+file_name);
            mf.writeTo(f_out);
            f_out.close();
            
            
        } catch (Exception ex) {
            Logger.getLogger(frm_main.class.getName()).log(Level.SEVERE, null, ex);
        }

    } 

Отредактировано пользователем 16 июня 2015 г. 20:03:29(UTC)  | Причина: Не указана

Offline Corzina  
#36 Оставлено : 16 июня 2015 г. 20:08:50(UTC)
Corzina

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 1 раз в 1 постах
Автор: ARnikev Перейти к цитате
Господа, извиняюсь за немного оффтоп. Как у вас получилось вменяемые java классы получить из wsdl и xsd схем нового формата? У меня из текущего wsdl получается довольно мало java классов, как минимум отсутствуют основные GISGMPTransferMsg, ChargeType. Использую Apache CFX wsdl2java. Из wsdl старого формата все корректно формируется.


автоматом не получится, т.к. схемы сделаны по другому (я 3 дня убил на получение полных классов). Сделал только схемы из Message.xsd, а до него руками собираю/разбираю сообщение.

Offline ARnikev  
#37 Оставлено : 17 июня 2015 г. 10:38:06(UTC)
ARnikev

Статус: Активный участник

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 2 раз в 1 постах
Цитата:
Сделал только схемы из Message.xsd, а до него руками собираю/разбираю сообщение.

Можно подробнее пожалуйста, вчера тоже на это дело целый день убил, никак не могу понять почему не получается нормальной иерархии классов. Как вы формируете сообщение для отправки теперь? Не из java классов объект GISGMPTransferMsg, а потом его маршалите в xml? Руками xml формируете сразу чтоле?
Offline eagames-ru  
#38 Оставлено : 17 июня 2015 г. 11:25:07(UTC)
eagames-ru

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

Группы: Участники
Зарегистрирован: 30.11.2012(UTC)
Сообщений: 21
Откуда: Уфа

Поблагодарили: 1 раз в 1 постах
Автор: ARnikev Перейти к цитате
Цитата:
Сделал только схемы из Message.xsd, а до него руками собираю/разбираю сообщение.

Можно подробнее пожалуйста, вчера тоже на это дело целый день убил, никак не могу понять почему не получается нормальной иерархии классов. Как вы формируете сообщение для отправки теперь? Не из java классов объект GISGMPTransferMsg, а потом его маршалите в xml? Руками xml формируете сразу чтоле?



Открываете доку по ГИС ГМП 1.16.1 там внизу будет архив с XSD схемами - распакуйте в папку проекта.

далее в netbeans делаем JAXB привязку, выбираем файл Message.xsd и все. появляются новые классы, используйте их.
Offline ARnikev  
#39 Оставлено : 17 июня 2015 г. 13:00:15(UTC)
ARnikev

Статус: Активный участник

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 2 раз в 1 постах
Автор: eagames-ru Перейти к цитате
Автор: ARnikev Перейти к цитате
Цитата:
Сделал только схемы из Message.xsd, а до него руками собираю/разбираю сообщение.

Можно подробнее пожалуйста, вчера тоже на это дело целый день убил, никак не могу понять почему не получается нормальной иерархии классов. Как вы формируете сообщение для отправки теперь? Не из java классов объект GISGMPTransferMsg, а потом его маршалите в xml? Руками xml формируете сразу чтоле?



Открываете доку по ГИС ГМП 1.16.1 там внизу будет архив с XSD схемами - распакуйте в папку проекта.

далее в netbeans делаем JAXB привязку, выбираем файл Message.xsd и все. появляются новые классы, используйте их.


Это я все понимаю. Вот у меня сгенерились классы из Message.xsd. Я смотрю структуру сообщения для инмпорта начисления допустим. Мне нужно сформировать елемент MessageData допустим, такого класса у меня из xsd схемы этой не сформировалось, как и AppData. Ближайшее по иерархии, что сформировалось, это RequestMessageType. То есть мне все елементы xml сообщения, что идут до него формировать руками чтоли, а остальное через java объекты и потом маршалить этот кусок в xml и подпихивать в основное xml сообщение?

Не могли бы вы кусок кода по формированию вашего сообщения выложить? Раньше конечно все на много проще было.Brick wall

Отредактировано пользователем 17 июня 2015 г. 13:01:05(UTC)  | Причина: Не указана

Offline Corzina  
#40 Оставлено : 17 июня 2015 г. 13:24:21(UTC)
Corzina

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 1 раз в 1 постах
Проверил подпись на боевом сервере ГИСГМП - все платежи за сегодня прошли проверку ЭЦП и успешно были импортированы.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
8 Страницы<1234>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.