| 
	Статус: Новичок
 Группы: Участники
Зарегистрирован: 23.08.2021(UTC)
 Сообщений: 3
 
 Сказал(а) «Спасибо»: 1 раз
 | 
            
		      
                Добрый день.Через pycryptoprosdk можно получить altname сертификата. Есть ли возможность получить altname используя pycades?
 | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Администратор
 Группы: Участники
 Зарегистрирован: 01.03.2017(UTC) Сообщений: 133  Откуда: МоскваСказал(а) «Спасибо»: 9 разПоблагодарили: 56 раз в 41 постах
 
 |  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Новичок
 Группы: Участники
Зарегистрирован: 23.08.2021(UTC)
 Сообщений: 3
 
 Сказал(а) «Спасибо»: 1 раз
 | 
            
		      
                Автор: Ситдиков Денис  Из altname нужно будет получить ОГРНИП, а в GetInfo я ничего похожего не вижу. В pycryptoprosdk оно как-то через расширение сертификата достается. Или я все таки что-то не понимаю и это возможно? Отредактировано пользователем 23 августа 2021 г. 16:54:45(UTC)
 | Причина: Не указана | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Администратор
 Группы: Участники
 Зарегистрирован: 01.03.2017(UTC) Сообщений: 133  Откуда: МоскваСказал(а) «Спасибо»: 9 разПоблагодарили: 56 раз в 41 постах
 
 | 
            
		      
                К сожалению, ОГРНИП получить нельзя: в текущей реализации нет доступа к произвольным расширениям сертификата. | 
    | 
              1 пользователь поблагодарил Ситдиков Денис за этот пост. |  | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Новичок
 Группы: Участники
Зарегистрирован: 23.08.2021(UTC)
 Сообщений: 3
 
 Сказал(а) «Спасибо»: 1 раз
 |  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Активный участник
 Группы: Участники
Зарегистрирован: 29.12.2015(UTC)
 Сообщений: 40
 
 Сказал(а) «Спасибо»: 1 раз
 | 
            
		      
                Автор: Ситдиков Денис  К сожалению, ОГРНИП получить нельзя: в текущей реализации нет доступа к произвольным расширениям сертификата. А можно рассчитывать, что когда-нибудь такая возможность появится? | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Администратор
 Группы: Участники
 Зарегистрирован: 01.03.2017(UTC) Сообщений: 133  Откуда: МоскваСказал(а) «Спасибо»: 9 разПоблагодарили: 56 раз в 41 постах
 
 | 
            
		      
                Да, запрос завели, но по срокам не сориентируем. В ближайшее время доработки ждать не стоит. | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Новичок
 Группы: Участники
Зарегистрирован: 03.09.2021(UTC)
 Сообщений: 7
 
 Сказал(а) «Спасибо»: 2 раз
 | 
            
		      
                Добрый день! Подскажите, пожалуйста, как можно подписать xml в кодировке windows-1251. Сейчас происходит ошибка при следующих действиях: Код:
import pycades
store = pycades.Store()
store.Open(pycades.CADESCOM_CONTAINER_STORE, pycades.CAPICOM_MY_STORE, pycades.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED)
certs = store.Certificates
signer = pycades.Signer()
signer.Certificate = certs.Item(1)
signer.CheckCertificate = True
content_to_sign = "<?xml version=\"1.0\" encoding=\"windows-1251\"?><EXTRWT><WTFORMAT VERSION=\"2.8\"><DOCAZKREQUESTS><DOCAZKREQUEST ADVANCE_PAYMENT=\"0\" BUDGETNAME=\"\" CHECKFIO=\"\" CHECKFIOBOSSNAME=\"\" CHECKFIOGLAVBUHNAME=\"\" CHECKPAY=\"1\" CHECKPOSITION=\"\" CHECKPOSITIONBOSSNAME=\"\" CHECKPOSITIONGLAVBUHNAME=\"\" DOCCLASS=\"11\" DOCUMENTDATE=\"\" DOCUMENTNUMBER=\"\" ESTIMATENAME=\"\" GRBSCODE=\"711\" NDS=\"0.00\" OPERKINDID=\"01\" PAYERACCOUNTNUMBER=\"\" PAY_FOR_LIVE=\"0\" QUEUEKIND=\"5\" RECEIVERACCOUNTNUMBER=\"40101810800000010001\" RECEIVERBANKBRANCHNAME=\"\" RECEIVERBIC=\"049205001\" RECEIVERINN=\"1655005361\" RECEIVERKPP=\"165501001\" RECEIVERNAME=\"\"><LINES><LINE AMOUNT=\"6615.00\" BUDGRECEIVERINN=\"1654019570\" BUDGRECEIVERKPP=\"165545001\" BUDGRECEIVERNAME=\"Тестовая организация\" FUNDSSOURCECODE=\"1\" FUNDSSOURCETYPENAME=\"\" KCSR=\"1800102040\" KDE=\"000001\" KDF=\"11101\" KDR=\"219\" KFSR=\"0106\" KIF=\"1\" KVR=\"121\" KVSR=\"711\" PERMITDATE=\"2021-08-13\" PERMITNUMBER=\"1\" /></LINES></DOCAZKREQUEST></DOCAZKREQUESTS></WTFORMAT></EXTRWT>"
signedXML = pycades.SignedXML()
signedXML.Content = content_to_sign
signature = signedXML.Sign(signer)
 В результате получаем: Цитата:Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 Exception: The system was unable to parse the requested XML data. (0x800705B9)
 
 Если удалить "Тестовая организация", то подписание проходит. Если сменить кодировку на utf-8, то подписание проходит. Если выполнить подписание через https://www.cryptopro.ru...des_xmldsig_sample.html,  то оно тоже проходит. Какие еще магические настройки нужно сделать? Заранее спасибо | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Эксперт
 Группы: Участники
 Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602  Откуда: Иркутская областьСказал(а) «Спасибо»: 110 разПоблагодарили: 397 раз в 367 постах
 
 | 
            
		      
                Добрый день. Разберем по порядку. 1) Насколько я знаю, плагин (на основе которого построены расширения php и питон) принимает строковые данные в кодировке Юникод либо utf-8 (в зависимости от ОС). Соответствующее преобразование неявно делает браузер, увидев кодировку страницы с одной стороны (у страницы проверки плагина по ссылке легко видим  Код:<meta ... charset="utf-8" />
 ) и по спецификации расширений с другой стороны. Поэтому сказать, что в плагине подписывается именно windows-1251 будет неверно. Для сравнения, двоичное содержимое при подписи cades Вы можете закодировать в Base64 и выставить соответствующий параметр, что содержимое закодировано (это предотвращает преобразования браузера, так как строка Base64 в любой кодировке не меняется). 2) Для каноникализации в алгоритме подписи xmldsig/xades документ все равно преобразуется в utf-8, то есть хэш сумма для фрагмента в xmldsig/xades никак не зависит от исходной кодировки документа (если указан трансформ каноникализации). В итоге, подписывая документ не в utf-8, Вы вместо явного преобразования в utf-8 полагаетесь на неявное. Предположу, что сообщение об ошибке возникает как раз при неявном преобразовании. 3) Расширения php и питон распространяются для *nix систем, где все не гладко с поддержкой кодировки Windows-1251 и преобразование кодировки скорее проблема ОС. Там еще надо смотреть какую кодировку имеет консоль приложения с точки зрения *nix. Учитывая 2), Вы можете создать (перекодировать любым способом, который не крашится) документ в utf-8 (соответствующе изменив  Код:<?xml encoding="windows-1251"?>
  на utf-8), подписать, затем перекодировать документ в нужную кодировку (само собой кодировка должна содержать все символы использующиеся в документе плюс указать корректное новой значение encoding) и после этого документ все еще должен проходить проверку (в средствах проверки, в которых конвертация кодировки не крашится). | 
    | 
              1 пользователь поблагодарил two_oceans за этот пост. |  | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Новичок
 Группы: Участники
Зарегистрирован: 03.09.2021(UTC)
 Сообщений: 7
 
 Сказал(а) «Спасибо»: 2 раз
 | 
            
		      
                Автор: two_oceans  Добрый день. Разберем по порядку. 1) Насколько я знаю, плагин (на основе которого построены расширения php и питон) принимает строковые данные в кодировке Юникод либо utf-8 (в зависимости от ОС). Соответствующее преобразование неявно делает браузер, увидев кодировку страницы с одной стороны (у страницы проверки плагина по ссылке легко видим  Код:<meta ... charset="utf-8" />
 ) и по спецификации расширений с другой стороны. Поэтому сказать, что в плагине подписывается именно windows-1251 будет неверно. Для сравнения, двоичное содержимое при подписи cades Вы можете закодировать в Base64 и выставить соответствующий параметр, что содержимое закодировано (это предотвращает преобразования браузера, так как строка Base64 в любой кодировке не меняется). 2) Для каноникализации в алгоритме подписи xmldsig/xades документ все равно преобразуется в utf-8, то есть хэш сумма для фрагмента в xmldsig/xades никак не зависит от исходной кодировки документа (если указан трансформ каноникализации). В итоге, подписывая документ не в utf-8, Вы вместо явного преобразования в utf-8 полагаетесь на неявное. Предположу, что сообщение об ошибке возникает как раз при неявном преобразовании. 3) Расширения php и питон распространяются для *nix систем, где все не гладко с поддержкой кодировки Windows-1251 и преобразование кодировки скорее проблема ОС. Там еще надо смотреть какую кодировку имеет консоль приложения с точки зрения *nix. Учитывая 2), Вы можете создать (перекодировать любым способом, который не крашится) документ в utf-8 (соответствующе изменив  Код:<?xml encoding="windows-1251"?>
  на utf-8), подписать, затем перекодировать документ в нужную кодировку (само собой кодировка должна содержать все символы использующиеся в документе плюс указать корректное новой значение encoding) и после этого документ все еще должен проходить проверку (в средствах проверки, в которых конвертация кодировки не крашится). Большое спасибо за ответы! Разобрались с кодировками и прочими связанными ошибками.  После долгих разборов выяснили, что на принимающей стороне нужен xmldsig detached. После изучения информации появилось понимание, что detached в случае с xml - это лишь вопрос положения тегов документа и подписи относительно друг друга. Но судя по комментариям разработки принимающего продукта, у них формирование происходит именно по изначальному документа. Учитывая, что у них используется JCP, судя по всему выполняется что-то подобное JCPxml.dsig.internal.xmldsigri.tests.SignFileExample.  Вопрос: можно ли что-то аналогичное реализовать на pycades? | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
	                           
	
    
        Быстрый переход
         
	
    
    Вы не можете создавать новые темы в этом форуме.
	
	Вы не можете отвечать в этом форуме.
	
	Вы не можете удалять Ваши сообщения в этом форуме.
	
	Вы не можете редактировать Ваши сообщения в этом форуме.
	
	Вы не можете создавать опросы в этом форуме.
	
	Вы не можете голосовать в этом форуме.
	
	
    
    
        Important Information:
        The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
        
        
More Details
        Close