Статус: Эксперт
  Группы: Участники
 Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602  Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 397 раз в 367 постах
  
	 
	
     | 
    
        
            
		      
                Цитата:Помогите разобраться с ошибкой. Пытаюсь подписать запрос для отправки в СМЭВ. При попытке подписать XML в режиме CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE, получаю ошибку "An error was encountered while processing an XML digital signature"  Добрый день. Странно, что пример по структуре для смэв 2, да и то не хватает AppData. На смэв 3 вообще непохоже ни структурой ни подписью. Ближе к вопросу - предположу, что как минимум дело в том, что в шаблоне указаны алгоритмы гост-2001, а реальный ключ скорее всего гост-2012, так как гост-2001 запрещен в 2020 году. SignatureMethod должен совпадать с алгоритмом ключа, ну и реальный СМЭВ скорее всего откажется принимать смешанный вариант когда DigestMethod и SignatureMethod разных алгоритмов. Код:urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256
urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256 
 Цитата:1. Может ли данное расширение работать с ключами, на контейнеры которых установлен пароль? 2. Если нет, подскажите пожалуйста, методы в интерфейсе С, которые могут работать с такими запароленными контейнерами. 3. Как задать свой адрес ocsp-сервиса? Я правильно понимаю, что в таком случае проверка любой подписи, в сертификате которой не указан oscp, пойдет через этот "свой ocsp-сервис"? 4. Может ли так оказаться что после запроса в сторону своего ocsp-сервиса, продолжится проверка по crl спискам из сертификата подписи?   1. Нужно задать пароль до фактического использования ключа. Полагаю, что это возможно в расширении (точнее надо искать в справке). Многое зависит будет ли приложение в серверном режиме без пользователя или тихом режиме или пользователь сможет ввести пароль. Если пользователь может ввести пароль можно вообще не беспокоиться, а вот в серверном или тихом режиме пароль надо или задать в приложении или запомнить средствами криптопровайдера. 2. Насколько помню для этого можно использовать CryptSetProvParam  PP_EXCHANGE_PIN (или PP_SIGNATURE_PIN) Там есть градации от криптопровайдера и носителя, некоторые носители поддерживают также смену пинкода этой функцией, но большинство только указывает пароль для следующей операции с ключом. 3. можно задать отдельно при проверке по мере необходимости. В справке говорится про специальные свойства хранилища сертификатов для сертификата УЦ - так можно адресовать конкретный УЦ. И потом уже групповая политика - для всех подписей. 4. полагаю да, если ocsp ответа не будет или сам ответ не удается проверить. Отредактировано пользователем 28 декабря 2020 г. 11:08:58(UTC)
 | Причина: Не указана  
            
	  
         
     | 
    
        
              1 пользователь поблагодарил two_oceans за этот пост.  
     | 
    
        
            bsoft оставлено 14.01.2021(UTC)
          
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Администратор
  Группы: Участники
 Зарегистрирован: 01.03.2017(UTC) Сообщений: 133  Откуда: Москва Сказал(а) «Спасибо»: 9 раз Поблагодарили: 56 раз в 41 постах
  
	 
	
     | 
    
        
            
		      
                Цитата:Цитата: 1. Может ли данное расширение работать с ключами, на контейнеры которых установлен пароль? 2. Если нет, подскажите пожалуйста, методы в интерфейсе С, которые могут работать с такими запароленными контейнерами. 3. Как задать свой адрес ocsp-сервиса? Я правильно понимаю, что в таком случае проверка любой подписи, в сертификате которой не указан oscp, пойдет через этот "свой ocsp-сервис"? 4. Может ли так оказаться что после запроса в сторону своего ocsp-сервиса, продолжится проверка по crl спискам из сертификата подписи?
  1. Нужно задать пароль до фактического использования ключа. Полагаю, что это возможно в расширении (точнее надо искать в справке). Многое зависит будет ли приложение в серверном режиме без пользователя или тихом режиме или пользователь сможет ввести пароль. Если пользователь может ввести пароль можно вообще не беспокоиться, а вот в серверном или тихом режиме пароль надо или задать в приложении или запомнить средствами криптопровайдера. 2. Насколько помню для этого можно использовать CryptSetProvParam PP_EXCHANGE_PIN (или PP_SIGNATURE_PIN) Там есть градации от криптопровайдера и носителя, некоторые носители поддерживают также смену пинкода этой функцией, но большинство только указывает пароль для следующей операции с ключом. 3. можно задать отдельно при проверке по мере необходимости. В справке говорится про специальные свойства хранилища сертификатов для сертификата УЦ - так можно адресовать конкретный УЦ. И потом уже групповая политика - для всех подписей. 4. полагаю да, если ocsp ответа не будет или сам ответ не удается проверить.  Добрый день. 1. Да, может. В коде задать пароль можно, используя свойтво  Signer.KeyPin. 3. Можно воспользоваться  групповыми политиками или задать в свойствах сертификата издателя для данного сертификата. Порядок обхода указан  здесь. Если определить статус сертификата через OCSP не удалось, используются CRL. 4. Да. Отредактировано пользователем 28 декабря 2020 г. 12:27:54(UTC)
 | Причина: Не указана  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Участник
  Группы: Участники
 Зарегистрирован: 08.12.2020(UTC) Сообщений: 17  Сказал(а) «Спасибо»: 11 раз
  
	 
	
     | 
    
        
            
		      
                Автор: two_oceans  Странно, что пример по структуре для смэв 2, да и то не хватает AppData. На смэв 3 вообще непохоже ни структурой ни подписью.  Это Региональный СМЭВ. Оператор РСМЭВ создал на его базе функционал по централизованной регистрации заявлений на государственные (муниципальные) услуги. Я пишу адаптер для муниципальной информационной системы. Автор: two_oceans  Ближе к вопросу - предположу, что как минимум дело в том, что в шаблоне указаны алгоритмы гост-2001, а реальный ключ скорее всего гост-2012, так как гост-2001 запрещен в 2020 году. SignatureMethod должен совпадать с алгоритмом ключа, ну и реальный СМЭВ скорее всего откажется принимать смешанный вариант когда DigestMethod и SignatureMethod разных алгоритмов.  Спасибо! Помогло.  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 25.11.2019(UTC) Сообщений: 54
  Сказал(а) «Спасибо»: 3 раз Поблагодарили: 1 раз в 1 постах
  
	 
	
     | 
    
        
            
		      
                Добрый день. Не могу разобраться с отделенной подписью. Код:
import sys
sys.path.append(r'/usr/local/lib/python3.8/pycades.so')
import pycades
store = pycades.Store()
store.Open(pycades.CADESCOM_CONTAINER_STORE, pycades.CAPICOM_MY_STORE, pycades.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED)
certs = store.Certificates
print(certs.Count)
assert(certs.Count != 0), "Certificates with private key not found"
signer = pycades.Signer()
signer.Certificate = certs.Item(1)
content = "test"
signedData = pycades.SignedData()
signedData.Content = content
signature = signedData.SignCades(signer, pycades.CADESCOM_CADES_BES, True)
print("--Signature--")
print(signature)
print(len(signature))
print("----")
_signedData = pycades.SignedData()
_signedData.Content = content
_signedData.VerifyCades(signature, pycades.CADESCOM_CADES_BES, True)
 
 Получаю подпись. Размер подписи (base64  c переносами) = 8180 символов. Далее создаю текстовый файл с содержимым "test" и пытаюсь проверить эту подпись в криптоАРМ. Получаю отрицательный результат. Создаю отделенную подпись при помощи расширения pycryptoprosdk. Проверяю в том же криптоАрме с тем же файлом "test" - получаю положительный вариант. При этом, если создать присоединенную подпись в pycades, то в криптоАрме она проверяется нормально. Так же в структуре подписи, созданной в pycades: Код:
            SEQUENCE (2 elem)
              OBJECT IDENTIFIER 1.2.840.113549.1.9.4 messageDigest (PKCS #9)
              SET (1 elem)
                OCTET STRING (32 byte) 8BE25D8DB2AF0414B08307B23EF01892DE51D0A164605B41BDDE36ADAC5C6413
 
 В структуре подписи, созданной pycryptoprosdk: Код:
            SEQUENCE (2 elem)
              OBJECT IDENTIFIER 1.2.840.113549.1.9.4 messageDigest (PKCS #9)
              SET (1 elem)
                OCTET STRING (32 byte) 12A50838191B5504F1E5F2FD078714CF6B592B9D29AF99D0B10D8D02881C3857
 
 Если хэшировать файл с содержимым "test" в консольной утилите, на выходе получаем хэш: Код:
/opt/cprocsp/bin/amd64/cryptcp -hash -dir /tmp -hashAlg 1.2.643.7.1.1.2.2 -hex /tmp/test
12A50838191B5504F1E5F2FD078714CF6B592B9D29AF99D0B10D8D02881C3857
 
 При этом само расширение pycades собственную подпись проверяет успешно. Отредактировано пользователем 29 декабря 2020 г. 20:16:01(UTC)
 | Причина: Не указана  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 25.11.2019(UTC) Сообщений: 54
  Сказал(а) «Спасибо»: 3 раз Поблагодарили: 1 раз в 1 постах
  
	 
	
     | 
    
        
            
		      
                А можно ли, имея на руках подпись, используя данное расширение получить данные сертификата, ключем которого эта подпись создавалась? 
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Сотрудник
  Группы: Администраторы, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,234  Сказал(а) «Спасибо»: 105 раз Поблагодарили: 296 раз в 276 постах
  
	 
	
     | 
    
        
            
		      
                Добрый день! обратите внимание на  https://docs.cryptopro.r.../plugin/content-encodingзадайте ContentEncoding в CADESCOM_BASE64_TO_BINARY = 0x01 затем данные закодируйте в base64 и подайте в signedData.Content т.к. content = "test" в STRING_TO_UCS2LE будет иметь совершенно другой вид.    | 
 | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 25.11.2019(UTC) Сообщений: 54
  Сказал(а) «Спасибо»: 3 раз Поблагодарили: 1 раз в 1 постах
  
	 
	
     | 
    
        
            
		      
                Автор: Санчир Момолдаев  Добрый день! обратите внимание на  https://docs.cryptopro.r.../plugin/content-encodingзадайте ContentEncoding в CADESCOM_BASE64_TO_BINARY = 0x01 затем данные закодируйте в base64 и подайте в signedData.Content т.к. content = "test" в STRING_TO_UCS2LE будет иметь совершенно другой вид.  Да, после установки CADESCOM_BASE64_TO_BINARY работает корректно. Благодарю )  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Сотрудник
  Группы: Администраторы, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,234  Сказал(а) «Спасибо»: 105 раз Поблагодарили: 296 раз в 276 постах
  
	 
	
     | 
    
        
            
		      
                Автор: mstdoc  А можно ли, имея на руках подпись, используя данное расширение получить данные сертификата, ключем которого эта подпись создавалась?  у проверяемого SignedData получить список Signer и т.д.    | 
 | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Новичок
  Группы: Участники
 Зарегистрирован: 02.01.2021(UTC) Сообщений: 2
  Сказал(а) «Спасибо»: 1 раз
  
	 
	
     | 
    
        
            
		      
                Добрый день, я бы хотел создать сайт на django для учёбы, чтобы там была возможность войти по ЭЦП и организовать подписание документов. Возможно ли реализовать это при помощи данного расширения? Или есть готовые решения?  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Сотрудник
  Группы: Администраторы, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,234  Сказал(а) «Спасибо»: 105 раз Поблагодарили: 296 раз в 276 постах
  
	 
	
     | 
    
        
            
		      
                Автор: Clutcher  Добрый день, я бы хотел создать сайт на django для учёбы, чтобы там была возможность войти по ЭЦП и организовать подписание документов. Возможно ли реализовать это при помощи данного расширения? Или есть готовые решения?   Добрый день. Именно на python примера нет. Общая мысль: у клиента должна подписываться некоторая уникальная строка которая приходит с сервера. На сервере проверяется подпись и сравниваются подписанные данные. Front: html + js (cades plugin) Backend: python + pycades    | 
 | 
            
	 
        
    
    
        
              1 пользователь поблагодарил Санчир Момолдаев за этот пост.  
     | 
    
        
     | 
    | 
        
	
     | 
        
        
        
    
	                           
	
    
        Быстрый переход
         
	
    
    Вы не можете создавать новые темы в этом форуме.
	
	Вы не можете отвечать в этом форуме.
	
	Вы не можете удалять Ваши сообщения в этом форуме.
	
	Вы не можете редактировать Ваши сообщения в этом форуме.
	
	Вы не можете создавать опросы в этом форуме.
	
	Вы не можете голосовать в этом форуме.
	
	
    
    
        Important Information:
        The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
        
        
More Details
        Close