У меня есть сценарий, в котором я должен подписать некоторые данные и отправить их клиенту через сокет TCP.
Итак, на сервере я подписываю его с помощью xmlsign и отправляю в виде строки
#in server
signed_xml_obj = XMLSigner().sign(root, key=PRIVATEKEY)
xml_str = ElementTree.tostring(signed_xml_obj)
#sendtoclient(xml_str)
Чем в клиенте создать элемент ElementTree.Element из строки и попытаться проверить его, но это не удалось
#somewhere in client
signed_xml_obj = ElementTree.fromstring(signiautreString)
XMLVerifier().verify(signed_xml_obj, x509_cert=cer)
Traceback
Traceback (most recent call last):
File "/eltioni/.local/lib/python3.7/site-packages/signxml/__init__.py", line 729, in verify
verify(signing_cert, raw_signature, signed_info_c14n, signature_digest_method)
File "/usr/lib/python3/dist-packages/OpenSSL/crypto.py", line 2928, in verify
_raise_current_error()
File "/usr/lib/python3/dist-packages/OpenSSL/_util.py", line 54, in exception_from_error_queue
raise exception_type(errors)
OpenSSL.crypto.Error: [('rsa routines', 'int_rsa_verify', 'bad signature')]
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "sig.py", line 15, in <module>
XMLVerifier().verify(xml2, x509_cert=cert)
File "/eltioni/.local/lib/python3.7/site-packages/signxml/__init__.py", line 735, in verify
raise InvalidSignature("Signature verification failed: {}".format(reason))
signxml.exceptions.InvalidSignature: Signature verification failed: bad signature
Также кое-что, что я заметил, - то, что, когда я печатаю signature_xml_obj на сервере, я получаю
print(signed_xml_obj)
#<Element Student at 0x7ff94085f188>
И когда я печатаю в клиенте signature_xml_obj, я получаю «Student» (с кавычками)
print(signed_xml_obj)
#<Element 'Student' at 0x7ff94085f188>