dialog = FinTSDialog(self.blz, self.username, self.pin, self.systemid, self.connection)
return dialog
- def _new_message(self, dialog: FinTSDialog, segments):
- return FinTSMessage(self.blz, self.username, self.pin, dialog.systemid, dialog.dialogid, dialog.msgno,
- segments, dialog.tan_mechs)
+ def _new_message(self, dialog: FinTSDialog, segments, tan=None):
+ return FinTSMessage(self.blz, self.username, pin, dialog.systemid, dialog.dialogid, dialog.msgno,
+ segments, dialog.tan_mechs, tan)
class FinTSMessage:
- def __init__(self, blz, username, pin, systemid, dialogid, msgno, encrypted_segments, tan_mechs=None):
+ def __init__(self, blz, username, pin, systemid, dialogid, msgno, encrypted_segments, tan_mechs=None, tan=None):
self.blz = blz
self.username = username
self.pin = pin
+ self.tan = tan
self.systemid = systemid
self.dialogid = dialogid
self.msgno = msgno
cur_count = len(encrypted_segments) + 3
- sig_end = HNSHA(cur_count, self.secref, self.pin)
+ sig_end = HNSHA(cur_count, self.secref, self.pin, self.tan)
self.append_enc_segment(sig_end)
self.segments.append(HNHBS(cur_count + 1, msgno))
SECURITY_SUPPLIER_ROLE = 1 # ISS
PINTAN_VERSION = 1 # 1-step
- def __init__(self, segno, secref, pin):
+ def __init__(self, segno, secref, pin, tan=None):
+ pintan = fints_escape(pin)
+ if tan:
+ pintan += ':' + fints_escape(tan)
data = [
secref,
'',
- fints_escape(pin)
+ pintan,
]
super().__init__(segno, data)