Skip to content

Commit

Permalink
Fix TAN request with response code 3955 during initialization of the …
Browse files Browse the repository at this point in the history
…dialog (#171)

* Fix TAN request with response code 3955 during initialization of the dialog

* Do not call client.is_tan_media_required() in minimal_interactive_cli_bootstrap if client.selected_tan_medium is already defined

---------

Co-authored-by: Johannes Meyer <[email protected]>
  • Loading branch information
meyerj and Johannes Meyer authored Oct 26, 2024
1 parent afb5de2 commit 50a224b
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 5 deletions.
4 changes: 2 additions & 2 deletions fints/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -1220,10 +1220,10 @@ def _get_tan_segment(self, orig_seg, tan_process, tan_seg=None):
raise NotImplementedError("TAN-Process 1 not implemented")

if tan_process in ('1', '3', '4') and self.is_tan_media_required():
if self.selected_tan_medium:
if self.selected_tan_medium is not None:
seg.tan_medium_name = self.selected_tan_medium
else:
seg.tan_medium_name = 'DUMMY'
seg.tan_medium_name = ''

if tan_process == '4' and tan_mechanism.VERSION >= 6:
seg.segment_type = orig_seg.header.type
Expand Down
5 changes: 3 additions & 2 deletions fints/dialog.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,12 +86,13 @@ def init(self, *extra_segments):

if tan_seg:
for resp in retval.responses(tan_seg):
if resp.code == '0030':
if resp.code in ('0030', '3955'):
self.client.init_tan_response = NeedTANResponse(
None,
retval.find_segment_first('HITAN'),
'_continue_dialog_initialization',
self.client.is_challenge_structured()
self.client.is_challenge_structured(),
resp.code == '3955',
)
self.need_init = False
return retval
Expand Down
2 changes: 1 addition & 1 deletion fints/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,7 @@ def minimal_interactive_cli_bootstrap(client):
choice = input("Choice: ").strip()
client.set_tan_mechanism(mechanisms[int(choice)][0])

if client.is_tan_media_required() and not client.selected_tan_medium:
if client.selected_tan_medium is None and client.is_tan_media_required():
print("We need the name of the TAN medium, let's fetch them from the bank")
m = client.get_tan_media()
if len(m[1]) == 1:
Expand Down

0 comments on commit 50a224b

Please sign in to comment.