Skip to content

Commit 6579ed4

Browse files
gil-obradorsCaioCSdev
authored andcommitted
add new functionalities : kwargs for verify_reply_signature / different cert verify response
update doc for new features updated CONTRIBUTORS.rst update wsse doc fix init MemorySignature for case with different cert file
1 parent 99606c3 commit 6579ed4

File tree

3 files changed

+18
-1
lines changed

3 files changed

+18
-1
lines changed

CONTRIBUTORS.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,5 +50,6 @@ Contributors
5050
* Raymond Piller
5151
* Zoltan Benedek
5252
* Øyvind Heddeland Instefjord
53+
* Gil Obradors
5354

5455

docs/wsse.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ Example usage A::
3737
... optional_password))
3838

3939

40+
To skip response signature verification set `verify_reply_signature=False`
41+
42+
To configure different certificate for response verify proces set `response_key_file` or
43+
and `response_certfile`.
44+
4045
.. _xmlsec: https://pypi.python.org/pypi/xmlsec
4146
.. _README: https://github.com/mehcode/python-xmlsec
4247

src/zeep/wsse/signature.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ def __init__(
5252
password=None,
5353
signature_method=None,
5454
digest_method=None,
55+
verify_reply_signature=True,
56+
response_cert_data=None
5557
):
5658
check_xmlsec_import()
5759

@@ -60,6 +62,8 @@ def __init__(
6062
self.password = password
6163
self.digest_method = digest_method
6264
self.signature_method = signature_method
65+
self.verify_reply_signature = verify_reply_signature
66+
self.response_cert_data= response_cert_data
6367

6468
def apply(self, envelope, headers):
6569
key = _make_sign_key(self.key_data, self.cert_data, self.password)
@@ -69,7 +73,10 @@ def apply(self, envelope, headers):
6973
return envelope, headers
7074

7175
def verify(self, envelope):
72-
key = _make_verify_key(self.cert_data)
76+
if not self.verify_reply_signature:
77+
return envelope
78+
key = _make_verify_key(self.cert_data if not self.response_cert_data else
79+
self.response_cert_data)
7380
_verify_envelope_with_key(envelope, key)
7481
return envelope
7582

@@ -84,13 +91,17 @@ def __init__(
8491
password=None,
8592
signature_method=None,
8693
digest_method=None,
94+
verify_reply_signature=True,
95+
response_certfile=None
8796
):
8897
super().__init__(
8998
_read_file(key_file),
9099
_read_file(certfile),
91100
password,
92101
signature_method,
93102
digest_method,
103+
verify_reply_signature,
104+
_read_file(response_certfile) if response_certfile else None
94105
)
95106

96107

0 commit comments

Comments
 (0)