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

Уведомление

Icon
Error

9 Страницы«<789
Опции
К последнему сообщению К первому непрочитанному
Offline Dmitriy32546  
#161 Оставлено : 26 мая 2021 г. 19:51:50(UTC)
Dmitriy32546

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

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

Добрый день.
Задача - подписать конкретный тег xml документа.
Нашел несколько примеров, например тут:
https://www.cryptopro.ru...aspx?g=posts&t=11923

И для java тут:
https://github.com/alfa-...entSignatureExample.java

Код:
def sign_xmldsig():
    STATEMENT_SIGNATURE_ELEMENT_XPATH=("/*[local-name()='Document' and namespace-uri()='urn:iso:std:iso:20022:tech:xsd:camt.060.001.03']"
                                    +"/*[local-name()='AcctRptgReq' and namespace-uri()='urn:iso:std:iso:20022:tech:xsd:camt.060.001.03']"
                                    +"/*[local-name()='SplmtryData' and namespace-uri()='urn:iso:std:iso:20022:tech:xsd:camt.060.001.03']"
                                    +"/*[local-name()='Envlp' and namespace-uri()='urn:iso:std:iso:20022:tech:xsd:camt.060.001.03']"
                                    +"/*[local-name()='SngtrSt' and namespace-uri()='urn:iso:std:iso:20022:tech:xsd:camt.060.001.03']")

    try:
        doc = etree.parse('/home/py-app/xml_for_sign.xml', etree.XMLParser(encoding='ISO-8859-1', ns_clean=True, recover=True))

        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
        signer.KeyPin='...'               

        signedXML = pycades.SignedXML()
        signedXML.Content = etree.tostring(doc, pretty_print=False, encoding='unicode') #xml_data
        #signedXML.SignatureType = pycades.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED | pycades.CADESCOM_XADES_BES
        signedXML.SignatureType = pycades.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE | pycades.CADESCOM_XADES_BES
        signature = signedXML.Sign(signer) #, STATEMENT_SIGNATURE_ELEMENT_XPATH)
        
        return web.Response(text=signature, content_type="text/xml")

    except Exception as ex:
		print(ex)


Получаю ошибку:
'Cannot find object or property. (0x80092004)'

Если добавляю XPATH в метод Sign
signedXML.Sign(signer, STATEMENT_SIGNATURE_ELEMENT_XPATH)

Получаю ошибку:
'The parameter is incorrect. (0x80070057)'

xml:
Код:
<?xml version="1.0" encoding="utf-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.060.001.03" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
  <AcctRptgReq>
    <GrpHdr>
      <MsgId>00000000000000000000001</MsgId>
      <CreDtTm>2001-01-01T00:00:00</CreDtTm>
    </GrpHdr>
    <SplmtryData>
      <Envlp>
        <SngtrSt>
        </SngtrSt>
      </Envlp>
    </SplmtryData>
  </AcctRptgReq>
</Document>


Подскажите как правильно подписать тег на pycades?

Версии:
debian 10
pycades 0.1.22769
Offline Санчир Момолдаев  
#162 Оставлено : 27 мая 2021 г. 13:22:33(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 61 раз
Поблагодарили: 135 раз в 133 постах
Автор: Dmitriy32546 Перейти к цитате
Добрый день.
Задача - подписать конкретный тег xml документа.
Нашел несколько примеров, например тут:
https://www.cryptopro.ru...aspx?g=posts&t=11923

И для java тут:
https://github.com/alfa-...entSignatureExample.java

Код:
def sign_xmldsig():
    STATEMENT_SIGNATURE_ELEMENT_XPATH=("/*[local-name()='Document' and namespace-uri()='urn:iso:std:iso:20022:tech:xsd:camt.060.001.03']"
                                    +"/*[local-name()='AcctRptgReq' and namespace-uri()='urn:iso:std:iso:20022:tech:xsd:camt.060.001.03']"
                                    +"/*[local-name()='SplmtryData' and namespace-uri()='urn:iso:std:iso:20022:tech:xsd:camt.060.001.03']"
                                    +"/*[local-name()='Envlp' and namespace-uri()='urn:iso:std:iso:20022:tech:xsd:camt.060.001.03']"
                                    +"/*[local-name()='SngtrSt' and namespace-uri()='urn:iso:std:iso:20022:tech:xsd:camt.060.001.03']")

    try:
        doc = etree.parse('/home/py-app/xml_for_sign.xml', etree.XMLParser(encoding='ISO-8859-1', ns_clean=True, recover=True))

        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
        signer.KeyPin='...'               

        signedXML = pycades.SignedXML()
        signedXML.Content = etree.tostring(doc, pretty_print=False, encoding='unicode') #xml_data
        #signedXML.SignatureType = pycades.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED | pycades.CADESCOM_XADES_BES
        signedXML.SignatureType = pycades.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE | pycades.CADESCOM_XADES_BES
        signature = signedXML.Sign(signer) #, STATEMENT_SIGNATURE_ELEMENT_XPATH)
        
        return web.Response(text=signature, content_type="text/xml")

    except Exception as ex:
		print(ex)


Получаю ошибку:
'Cannot find object or property. (0x80092004)'

Если добавляю XPATH в метод Sign
signedXML.Sign(signer, STATEMENT_SIGNATURE_ELEMENT_XPATH)

Получаю ошибку:
'The parameter is incorrect. (0x80070057)'

xml:
Код:
<?xml version="1.0" encoding="utf-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.060.001.03" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
  <AcctRptgReq>
    <GrpHdr>
      <MsgId>00000000000000000000001</MsgId>
      <CreDtTm>2001-01-01T00:00:00</CreDtTm>
    </GrpHdr>
    <SplmtryData>
      <Envlp>
        <SngtrSt>
        </SngtrSt>
      </Envlp>
    </SplmtryData>
  </AcctRptgReq>
</Document>


Подскажите как правильно подписать тег на pycades?

Версии:
debian 10
pycades 0.1.22769


дубликат
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
9 Страницы«<789
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.