def verify(self, res):
"""Verify response from server
Taken from https://github.com/madeddie/python-bunq - Thanks!
:param res: request to be verified
:type res: requests.models.Response
"""
if not self.server_pubkey:
print('No server public key defined, skipping verification')
return True
serv_headers = [
'X-Bunq-Client-Request-Id',
'X-Bunq-Client-Response-Id'
]
msg = '%s\n%s\n\n%s' % (
res.status_code,
'\n'.join(
['%s: %s' % (k, v) for k, v in sorted(
res.headers.items()
) if k in serv_headers]
),
res.text
)
signature = base64.b64decode(res.headers['X-Bunq-Server-Signature'])
try:
self.server_pubkey_pem.verify(
signature,
msg.encode(),
padding.PKCS1v15(),
hashes.SHA256()
)
except InvalidSignature:
print('Message failed verification, data might be tampered with')
return False
else:
return True
评论列表
文章目录