From: Henryk Plötz Date: Thu, 20 Sep 2018 19:30:20 +0000 (+0200) Subject: Add decoding of matrix like challenges (PhotoTAN). Fully untested X-Git-Tag: v2.0.0~1^2~31 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ee777d535f4f99caf15f66583b7504019e57d632;p=thirdparty%2Fpython-fints.git Add decoding of matrix like challenges (PhotoTAN). Fully untested --- diff --git a/fints/client.py b/fints/client.py index bb1b717..3904bfa 100644 --- a/fints/client.py +++ b/fints/client.py @@ -821,6 +821,7 @@ class NeedTANResponse(NeedRetryResponse): challenge = None #: Textual challenge to be displayed to the user challenge_html = None #: HTML-safe challenge text, possibly with formatting challenge_hhduc = None #: HHD_UC challenge to be transmitted to the TAN generator + challenge_matrix = None #: Matrix code challenge: tuple(mime_type, data) def __init__(self, command_seg, tan_request, resume_method=None, tan_request_structured=False): self.command_seg = command_seg @@ -862,10 +863,25 @@ class NeedTANResponse(NeedRetryResponse): self.challenge = self.challenge_raw self.challenge_html = None self.challenge_hhduc = None + self.challenge_matrix = None if hasattr(self.tan_request, 'challenge_hhduc'): if self.tan_request.challenge_hhduc: - self.challenge_hhduc = self.tan_request.challenge_hhduc.decode('us-ascii') + if len(self.tan_request.challenge_hhduc) < 256: + self.challenge_hhduc = self.tan_request.challenge_hhduc.decode('us-ascii') + else: + data = self.tan_request.challenge_hhduc + type_len_field, data = data[:2], data[2:] + if len(type_len_field) == 2: + type_len = type_len_field[0]*256 + type_len_field[1] + type_data, data = data[:type_len], data[type_len:] + + content_len_field, data = data[:2], data[2:] + if len(content_len_field) == 2: + content_len = content_len_field[0]*256 + content_len_field[1] + content_data, data = data[:content_len], data[content_len:] + + self.challenge_matrix = (type_data.decode('us-ascii', 'replace'), content_data) if self.challenge.startswith('CHLGUC '): l = self.challenge[8:12]