Потребовалось немного возиться с источником zeep
, xmlsec
и даже попробовать lxml
конструкторов, но вот оно:
from zeep.wsse.signature import sign_envelope
from lxml import etree
raw_xml = open('unsigned-soapenv.xml').read()
xml_root_element = etree.fromstring(raw_xml)
signed = sign_envelope(
xml_root_element,
'rsakey.pem',
'rsacert.pem'
)
tree = etree.ElementTree(xml_root_element)
tree.write('signed-soapenv.xml')
unsigned-soapenv.xml
- ваш конверт.
Если вам нужны образец подписи и сертификата, они взяты из python-xmlsec
тестовых данных .
То, что было бесценным, было ipdb
, который является отладчиком савтозаполнение.Попробуйте это так в своем терминале: import ipdb; ipdb.set_trace()