pycades не может подписать XML файл, вылетает ошибка 0x800705BA

Пытаюсь стандартно подписать XML файл используя CryptoPro 5.0 и библиотеку pycades.

def sign_xml(self, xml):
    
        import pycades
        
        store = pycades.Store()
        store.Open()
        certs = store.Certificates
        signer = pycades.Signer()
        signer.Certificate = certs.Item(1)
        signer.CheckCertificate = True
        signedXML = pycades.SignedXML()
        _xml = self.xml_example()
        signedXML.Content = _xml
        signedXML.SignatureType = pycades.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED | pycades.CADESCOM_XADES_BES
        signature = signedXML.Sign(signer)
        return signature

При попытке подписать XML возникает ошибка: Exception: An error was encountered while processing an XML digital signature. (0x800705BA)

Сам файл валидный и проходит верификацию без подписи на сервере, проблема при попытке подписать возникает из-за namespace файла. Примеры:

  1. XML, у которого удалены namespacы, подписывается успешно
  2. XML, исходный XML, который получается при заполнении данных, не подписывается
<?xml version='1.0' encoding='utf-8'?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
  <soap-env:Body>
    <NewShop>
      <CreateNewShop Request="c8763dad-c432-427b-a2b9-9be502ced07e" >
        <Shop>
          <Guid="38dae3ec-c2b0-43e5-8a27-b24dc0784807"/>
        </Shop>
      </CreateNewShop>
    </NewShop>
  </soap-env:Body>
</soap-env:Envelope>

<?xml version='1.0' encoding='utf-8'?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"">
  <soap-env:Body>
    <ns0:NewShop xmlns:ns0="shopcreator">
      <ns0:CreateNewShop Request="c8763dad-c432-427b-a2b9-9be502ced07e" >
        <ns0:Shop>
          <Guid="38dae3ec-c2b0-43e5-8a27-b24dc0784807"/>
        </ns0:Shop>
      </ns0:CreateNewShop>
    </ns0:NewShop>
  </soap-env:Body>
</soap-env:Envelope>

Вопрос, как настроить pycades так, чтобы он корректно обрабатывал namespace у файла?


Ответы (0 шт):