Статус: Активный участник
Группы: Участники
Зарегистрирован: 16.10.2013(UTC) Сообщений: 56
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 2 раз в 1 постах
|
Автор: afev Стандартно, через панель JCP, закладка "Хранилища ключей и сертификатов". Алилуя, добавился). Я через keytool пробовал добавлять. Так, теперь при таком создании ValidationProvider: Код:
final CertStore intermediateCertsAndCRLStore = CertStore.getInstance("Collection",
new CollectionCertStoreParameters(Collections.emptyList()));
final CertificateValidationProvider validationProvider = new PKIXCertificateValidationProvider(trustStore, false, intermediateCertsAndCRLStore);
ошибок не возникает. Значит ли это что подпись валидна? verifier.verify(signatureElement, null) - возвращает кучу параметров, не понятно, что полезного из них можно вынести.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Если нет исключений, то созданная подпись проверилась. В результате verify - различная служебная информация. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 16.10.2013(UTC) Сообщений: 56
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 2 раз в 1 постах
|
Автор: afev Если нет исключений, то созданная подпись проверилась. В результате verify - различная служебная информация. Эта проверка точно корректна? Странно, то есть ГИС ГМП-шники как-то по другому проверяют ее чтоле? Как мне им аргументировать то, что моя подпись корректна и проблема у них .
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Попробуйте для начала сделать документ, как тут и проверить (подписать и отправить) - возможно, проблема в положении пространств имен. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 16.10.2013(UTC) Сообщений: 56
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 2 раз в 1 постах
|
Автор: afev Попробуйте для начала сделать документ, как тут и проверить (подписать и отправить) - возможно, проблема в положении пространств имен. А каким образом положение пространства имен может повлиять на корректность подписи сущности?
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 24.06.2015(UTC) Сообщений: 1
|
Подскажите, обязательна ли 2 версия JCP, будет ли работать на 1.0.46?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Автор: ARnikev А каким образом положение пространства имен может повлиять на корректность подписи сущности? Один и тот же документ с небольшими изменениями в пространствах имен давал разный код обработки. Автор: serchek Подскажите, обязательна ли 2 версия JCP, будет ли работать на 1.0.46? В скором времени выложим архив с несколькими примерами, для него будет инструкция (должно работать с JCP 1.0.46 и выше). |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 16.10.2013(UTC) Сообщений: 56
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 2 раз в 1 постах
|
Вопрос! Перед тем как ставить подпись на сущность сообщение у меня выглядит примерно так:
Код:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns24:GISGMPTransferMsg xmlns:ns24="http://roskazna.ru/gisgmp/02000000/SmevGISGMPService/" xmlns="http://smev.gosuslugi.ru/rev120315" xmlns:ns10="http://roskazna.ru/gisgmp/xsd/116/PackageStatusRequest" xmlns:ns11="http://roskazna.ru/gisgmp/xsd/116/Quittance" xmlns:ns12="http://roskazna.ru/gisgmp/xsd/116/DoAcknowledgment" xmlns:ns13="http://roskazna.ru/gisgmp/xsd/116/ExportQuittanceResponse" xmlns:ns14="http://roskazna.ru/gisgmp/xsd/116/ErrInfo" xmlns:ns15="http://roskazna.ru/gisgmp/xsd/116/Ticket" xmlns:ns16="http://roskazna.ru/gisgmp/xsd/116/PGU_DataRequest" xmlns:ns17="http://roskazna.ru/gisgmp/xsd/116/ChargeCreationRequest" xmlns:ns18="http://roskazna.ru/gisgmp/xsd/116/ChargeCreationResponse" xmlns:ns19="http://roskazna.ru/gisgmp/xsd/116/SelfAdministration" xmlns:ns2="http://www.w3.org/2004/08/xop/include" xmlns:ns20="http://roskazna.ru/gisgmp/xsd/116/PGU_ChargesResponse" xmlns:ns21="http://roskazna.ru/gisgmp/xsd/116/ExportPaymentsResponse" xmlns:ns22="http://roskazna.ru/gisgmp/xsd/116/MessageData" xmlns:ns23="http://roskazna.ru/gisgmp/xsd/116/Message" xmlns:ns3="http://roskazna.ru/gisgmp/xsd/116/Charge" xmlns:ns4="http://roskazna.ru/gisgmp/xsd/116/Organization" xmlns:ns5="http://roskazna.ru/gisgmp/xsd/116/Common" xmlns:ns6="http://roskazna.ru/gisgmp/xsd/116/BudgetIndex" xmlns:ns7="http://www.w3.org/2000/09/xmldsig#" xmlns:ns8="http://roskazna.ru/gisgmp/xsd/116/PaymentInfo" xmlns:ns9="http://roskazna.ru/gisgmp/xsd/116/PGU_ImportRequest">
<Message>
<Sender>
<Code>001801781</Code>
<Name>КИС СПб</Name>
</Sender>
<Recipient>
<Code>RKZN35001</Code>
<Name>Казначейство России</Name>
</Recipient>
<ServiceName>0018RKZNGISGMP116</ServiceName>
<TypeCode>GFNC</TypeCode>
<Status>REQUEST</Status>
<Date>2015-06-25T09:48:28.147+03:00</Date>
<ExchangeType>6</ExchangeType>
</Message>
<MessageData>
<AppData>
<ns23:RequestMessage Id="B_e308b7c1-51b5-4d23-bc85-6553754667c7" senderIdentifier="20180c" timestamp="2015-06-25T09:48:28.147+03:00">
<ns22:ImportRequest>
<ns9:Package>
<ns9:Document>
<ns3:Charge Id="A_4bb5f744-22fe-453d-b22c-52c95ee20286" billDate="2015-06-08T00:00:00.000+03:00" supplierBillID="0210330810200000000000019">
<ns3:SupplierOrgInfo>
<ns4:Name>Архивный комитет Санкт-Петербурга</ns4:Name>
<ns4:INN>7812017177</ns4:INN>
<ns4:KPP>784201001</ns4:KPP>
<ns4:Account>
<ns4:AccountNumber>40101810800000010001</ns4:AccountNumber>
<ns4:Bank>
<ns4:BIK>049205001</ns4:BIK>
</ns4:Bank>
</ns4:Account>
</ns3:SupplierOrgInfo>
<ns3:BillFor>Оплата счета</ns3:BillFor>
<ns3:TotalAmount>155511</ns3:TotalAmount>
<ns5:ChangeStatus meaning="1"/>
<ns3:KBK>80311301992020600130</ns3:KBK>
<ns3:OKTMO>40911000</ns3:OKTMO>
<ns3:BudgetIndex>
<ns6:Status>24</ns6:Status>
<ns6:Purpose>0</ns6:Purpose>
<ns6:TaxPeriod>0</ns6:TaxPeriod>
<ns6:TaxDocNumber>0</ns6:TaxDocNumber>
<ns6:TaxDocDate>0</ns6:TaxDocDate>
<ns6:PaymentType>0</ns6:PaymentType>
</ns3:BudgetIndex>
<ns3:AltPayerIdentifier>1400000000011330067681643</ns3:AltPayerIdentifier>
<ns3:TreasureBranch>УФК по г.Санкт-Петербургу</ns3:TreasureBranch>
</ns3:Charge>
</ns9:Document>
</ns9:Package>
</ns22:ImportRequest>
</ns23:RequestMessage>
</AppData>
</MessageData>
</ns24:GISGMPTransferMsg>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
А когда я выдергиваю из этого сообщения Node сущности для добавления в нее подписи, она выглядит примерно так:
Код:
<ns3:Charge xmlns:ns3="http://roskazna.ru/gisgmp/xsd/116/Charge" Id="A_70a16544-8664-401c-bd28-027178e0e2d4" billDate="2015-06-08T00:00:00.000+03:00" supplierBillID="0210330810200000000000019">
<ns3:SupplierOrgInfo>
<ns4:Name xmlns:ns4="http://roskazna.ru/gisgmp/xsd/116/Organization">Архивный комитет Санкт-Петербурга</ns4:Name>
<ns4:INN xmlns:ns4="http://roskazna.ru/gisgmp/xsd/116/Organization">7812017177</ns4:INN>
<ns4:KPP xmlns:ns4="http://roskazna.ru/gisgmp/xsd/116/Organization">784201001</ns4:KPP>
<ns4:Account xmlns:ns4="http://roskazna.ru/gisgmp/xsd/116/Organization">
<ns4:AccountNumber>40101810800000010001</ns4:AccountNumber>
<ns4:Bank>
<ns4:BIK>049205001</ns4:BIK>
</ns4:Bank>
</ns4:Account>
</ns3:SupplierOrgInfo>
<ns3:BillFor>Оплата счета</ns3:BillFor>
<ns3:TotalAmount>155511</ns3:TotalAmount>
<ns5:ChangeStatus xmlns:ns5="http://roskazna.ru/gisgmp/xsd/116/Common" meaning="1"/>
<ns3:KBK>80311301992020600130</ns3:KBK>
<ns3:OKTMO>40911000</ns3:OKTMO>
<ns3:BudgetIndex>
<ns6:Status xmlns:ns6="http://roskazna.ru/gisgmp/xsd/116/BudgetIndex">24</ns6:Status>
<ns6:Purpose xmlns:ns6="http://roskazna.ru/gisgmp/xsd/116/BudgetIndex">0</ns6:Purpose>
<ns6:TaxPeriod xmlns:ns6="http://roskazna.ru/gisgmp/xsd/116/BudgetIndex">0</ns6:TaxPeriod>
<ns6:TaxDocNumber xmlns:ns6="http://roskazna.ru/gisgmp/xsd/116/BudgetIndex">0</ns6:TaxDocNumber>
<ns6:TaxDocDate xmlns:ns6="http://roskazna.ru/gisgmp/xsd/116/BudgetIndex">0</ns6:TaxDocDate>
<ns6:PaymentType xmlns:ns6="http://roskazna.ru/gisgmp/xsd/116/BudgetIndex">0</ns6:PaymentType>
</ns3:BudgetIndex>
<ns3:AltPayerIdentifier>1400000000011330067681643</ns3:AltPayerIdentifier>
<ns3:TreasureBranch>УФК по г.Санкт-Петербургу</ns3:TreasureBranch>
</ns3:Charge>
То есть объявления пространств имен наследуются от корневого элемента сообщения GISGMPTransferMsg. А в финальном сообщении, отправляемом в ГИС ГМП, эти объявления пространств имен у дочерних элементов отсутствуют. Отсюда, мне кажется, у меня hash подписи сущности, формируемый при подписи сущности в процессе формирования сообщения, отличается от hash сущности финального сообщения, отправляемого в ГИС ГМП. Так вот вопрос, это нормально что эти namespaces так наследуются или все таки их не должно быть? Судя по алгоритму формирования подписи XMLDSIG, описаному здесь http://www.di-mgt.com.au/xmldsig2.html, namespaces родителей как раз распространяются на дочерние элементы, перед формированием хэша. Но тогда как высчитывают хэш сущности ГИС ГМПшники, если когда им приходит сообщение, эти namespace-ы объявлены только у корневого элемента сообщения. Или я чего-то не понимаю/понимаю не правильно? Может кто пояснить, пожалуйста. upd. И еще, верификация подписи проходит сразу после ее формирования, т.е. если в проверку подсунуть документ сразу после добавления в него подпись. А вот если подсунуть в проверку финальный документ, который отправляется в ГИС ГМП, то верификация уже не проходит. Отредактировано пользователем 25 июня 2015 г. 11:15:28(UTC)
| Причина: Не указана
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 25.06.2015(UTC) Сообщений: 8
Поблагодарили: 2 раз в 1 постах
|
Автор: ARnikev Вопрос! Перед тем как ставить подпись на сущность сообщение у меня выглядит примерно так:
Код:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns24:GISGMPTransferMsg xmlns:ns24="http://roskazna.ru/gisgmp/02000000/SmevGISGMPService/" xmlns="http://smev.gosuslugi.ru/rev120315" xmlns:ns10="http://roskazna.ru/gisgmp/xsd/116/PackageStatusRequest" xmlns:ns11="http://roskazna.ru/gisgmp/xsd/116/Quittance" xmlns:ns12="http://roskazna.ru/gisgmp/xsd/116/DoAcknowledgment" xmlns:ns13="http://roskazna.ru/gisgmp/xsd/116/ExportQuittanceResponse" xmlns:ns14="http://roskazna.ru/gisgmp/xsd/116/ErrInfo" xmlns:ns15="http://roskazna.ru/gisgmp/xsd/116/Ticket" xmlns:ns16="http://roskazna.ru/gisgmp/xsd/116/PGU_DataRequest" xmlns:ns17="http://roskazna.ru/gisgmp/xsd/116/ChargeCreationRequest" xmlns:ns18="http://roskazna.ru/gisgmp/xsd/116/ChargeCreationResponse" xmlns:ns19="http://roskazna.ru/gisgmp/xsd/116/SelfAdministration" xmlns:ns2="http://www.w3.org/2004/08/xop/include" xmlns:ns20="http://roskazna.ru/gisgmp/xsd/116/PGU_ChargesResponse" xmlns:ns21="http://roskazna.ru/gisgmp/xsd/116/ExportPaymentsResponse" xmlns:ns22="http://roskazna.ru/gisgmp/xsd/116/MessageData" xmlns:ns23="http://roskazna.ru/gisgmp/xsd/116/Message" xmlns:ns3="http://roskazna.ru/gisgmp/xsd/116/Charge" xmlns:ns4="http://roskazna.ru/gisgmp/xsd/116/Organization" xmlns:ns5="http://roskazna.ru/gisgmp/xsd/116/Common" xmlns:ns6="http://roskazna.ru/gisgmp/xsd/116/BudgetIndex" xmlns:ns7="http://www.w3.org/2000/09/xmldsig#" xmlns:ns8="http://roskazna.ru/gisgmp/xsd/116/PaymentInfo" xmlns:ns9="http://roskazna.ru/gisgmp/xsd/116/PGU_ImportRequest">
<Message>
<Sender>
<Code>001801781</Code>
<Name>КИС СПб</Name>
</Sender>
<Recipient>
<Code>RKZN35001</Code>
<Name>Казначейство России</Name>
</Recipient>
<ServiceName>0018RKZNGISGMP116</ServiceName>
<TypeCode>GFNC</TypeCode>
<Status>REQUEST</Status>
<Date>2015-06-25T09:48:28.147+03:00</Date>
<ExchangeType>6</ExchangeType>
</Message>
<MessageData>
<AppData>
<ns23:RequestMessage Id="B_e308b7c1-51b5-4d23-bc85-6553754667c7" senderIdentifier="20180c" timestamp="2015-06-25T09:48:28.147+03:00">
<ns22:ImportRequest>
<ns9:Package>
<ns9:Document>
<ns3:Charge Id="A_4bb5f744-22fe-453d-b22c-52c95ee20286" billDate="2015-06-08T00:00:00.000+03:00" supplierBillID="0210330810200000000000019">
<ns3:SupplierOrgInfo>
<ns4:Name>Архивный комитет Санкт-Петербурга</ns4:Name>
<ns4:INN>7812017177</ns4:INN>
<ns4:KPP>784201001</ns4:KPP>
<ns4:Account>
<ns4:AccountNumber>40101810800000010001</ns4:AccountNumber>
<ns4:Bank>
<ns4:BIK>049205001</ns4:BIK>
</ns4:Bank>
</ns4:Account>
</ns3:SupplierOrgInfo>
<ns3:BillFor>Оплата счета</ns3:BillFor>
<ns3:TotalAmount>155511</ns3:TotalAmount>
<ns5:ChangeStatus meaning="1"/>
<ns3:KBK>80311301992020600130</ns3:KBK>
<ns3:OKTMO>40911000</ns3:OKTMO>
<ns3:BudgetIndex>
<ns6:Status>24</ns6:Status>
<ns6:Purpose>0</ns6:Purpose>
<ns6:TaxPeriod>0</ns6:TaxPeriod>
<ns6:TaxDocNumber>0</ns6:TaxDocNumber>
<ns6:TaxDocDate>0</ns6:TaxDocDate>
<ns6:PaymentType>0</ns6:PaymentType>
</ns3:BudgetIndex>
<ns3:AltPayerIdentifier>1400000000011330067681643</ns3:AltPayerIdentifier>
<ns3:TreasureBranch>УФК по г.Санкт-Петербургу</ns3:TreasureBranch>
</ns3:Charge>
</ns9:Document>
</ns9:Package>
</ns22:ImportRequest>
</ns23:RequestMessage>
</AppData>
</MessageData>
</ns24:GISGMPTransferMsg>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
А когда я выдергиваю из этого сообщения Node сущности для добавления в нее подписи, она выглядит примерно так:
Код:
<ns3:Charge xmlns:ns3="http://roskazna.ru/gisgmp/xsd/116/Charge" Id="A_70a16544-8664-401c-bd28-027178e0e2d4" billDate="2015-06-08T00:00:00.000+03:00" supplierBillID="0210330810200000000000019">
<ns3:SupplierOrgInfo>
<ns4:Name xmlns:ns4="http://roskazna.ru/gisgmp/xsd/116/Organization">Архивный комитет Санкт-Петербурга</ns4:Name>
<ns4:INN xmlns:ns4="http://roskazna.ru/gisgmp/xsd/116/Organization">7812017177</ns4:INN>
<ns4:KPP xmlns:ns4="http://roskazna.ru/gisgmp/xsd/116/Organization">784201001</ns4:KPP>
<ns4:Account xmlns:ns4="http://roskazna.ru/gisgmp/xsd/116/Organization">
<ns4:AccountNumber>40101810800000010001</ns4:AccountNumber>
<ns4:Bank>
<ns4:BIK>049205001</ns4:BIK>
</ns4:Bank>
</ns4:Account>
</ns3:SupplierOrgInfo>
<ns3:BillFor>Оплата счета</ns3:BillFor>
<ns3:TotalAmount>155511</ns3:TotalAmount>
<ns5:ChangeStatus xmlns:ns5="http://roskazna.ru/gisgmp/xsd/116/Common" meaning="1"/>
<ns3:KBK>80311301992020600130</ns3:KBK>
<ns3:OKTMO>40911000</ns3:OKTMO>
<ns3:BudgetIndex>
<ns6:Status xmlns:ns6="http://roskazna.ru/gisgmp/xsd/116/BudgetIndex">24</ns6:Status>
<ns6:Purpose xmlns:ns6="http://roskazna.ru/gisgmp/xsd/116/BudgetIndex">0</ns6:Purpose>
<ns6:TaxPeriod xmlns:ns6="http://roskazna.ru/gisgmp/xsd/116/BudgetIndex">0</ns6:TaxPeriod>
<ns6:TaxDocNumber xmlns:ns6="http://roskazna.ru/gisgmp/xsd/116/BudgetIndex">0</ns6:TaxDocNumber>
<ns6:TaxDocDate xmlns:ns6="http://roskazna.ru/gisgmp/xsd/116/BudgetIndex">0</ns6:TaxDocDate>
<ns6:PaymentType xmlns:ns6="http://roskazna.ru/gisgmp/xsd/116/BudgetIndex">0</ns6:PaymentType>
</ns3:BudgetIndex>
<ns3:AltPayerIdentifier>1400000000011330067681643</ns3:AltPayerIdentifier>
<ns3:TreasureBranch>УФК по г.Санкт-Петербургу</ns3:TreasureBranch>
</ns3:Charge>
То есть объявления пространств имен наследуются от корневого элемента сообщения GISGMPTransferMsg. А в финальном сообщении, отправляемом в ГИС ГМП, эти объявления пространств имен у дочерних элементов отсутствуют. Отсюда, мне кажется, у меня hash подписи сущности, формируемый при подписи сущности в процессе формирования сообщения, отличается от hash сущности финального сообщения, отправляемого в ГИС ГМП. Так вот вопрос, это нормально что эти namespaces так наследуются или все таки их не должно быть? Судя по алгоритму формирования подписи XMLDSIG, описаному здесь http://www.di-mgt.com.au/xmldsig2.html, namespaces родителей как раз распространяются на дочерние элементы, перед формированием хэша. Но тогда как высчитывают хэш сущности ГИС ГМПшники, если когда им приходит сообщение, эти namespace-ы объявлены только у корневого элемента сообщения. Или я чего-то не понимаю/понимаю не правильно? Может кто пояснить, пожалуйста. upd. И еще, верификация подписи проходит сразу после ее формирования, т.е. если в проверку подсунуть документ сразу после добавления в него подпись. А вот если подсунуть в проверку финальный документ, который отправляется в ГИС ГМП, то верификация уже не проходит. Абсолютно идентичная картина. Хэшируется локально одна xml (байты взятые из строки, представляющую собой xml фрагмент. Что происходит при проверке и какую xml ГИС ГМП хэширует пока не 100% ясно. Ясно,что хэшируется что-то другое. Пока жду ответа от службы поддержки ЕТК, может кто-то выложить xml подписываемой сущности? У моих сущностей есть префикс и namespace указан для этого префикса в корневом элементе сущности. А в soap-пакете namespace, используемый сущностями (FinalPayment, Charge), указан в тэге RequestMessage. На форматах 1.15.0 xml был одинаков везде (в soap-пакете и в сущности). Там нигде не было неймспейсов.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 16.10.2013(UTC) Сообщений: 56
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 2 раз в 1 постах
|
Цитата: Абсолютно идентичная картина. Хэшируется локально одна xml (байты взятые из строки, представляющую собой xml фрагмент. Что происходит при проверке и какую xml ГИС ГМП хэширует пока не 100% ясно. Ясно,что хэшируется что-то другое.
Пока жду ответа от службы поддержки ЕТК, может кто-то выложить xml подписываемой сущности?
У моих сущностей есть префикс и namespace указан для этого префикса в корневом элементе сущности. А в soap-пакете namespace, используемый сущностями (FinalPayment, Charge), указан в тэге RequestMessage.
На форматах 1.15.0 xml был одинаков везде (в soap-пакете и в сущности). Там нигде не было неймспейсов.
Выше я выкладывал свой подписанный запрос на импорт начисления. upd. Кстати тоже думаю, что дело как-то касается неймспейсов. Выяснил, что старая подпись XMLDsig тоже перестала работать с сообщением нового формата. Так и не могу понять почему, элемент сущности после ее подписи и после подписи всего сообщения визуально выглядит одинаково. Но при проверке подписи сущности финального документа DigestValue получается совсем другим. Проблема в том, что я неймспейсы руками не проставляю даже, они маршалятся из java классов, которые я с wsdl сервиса получил. Отредактировано пользователем 25 июня 2015 г. 17:15:34(UTC)
| Причина: Не указана
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close