]> git.ipfire.org Git - thirdparty/python-fints.git/commitdiff
Implement HKTAN2 47/head
authorHenryk Plötz <henryk@ploetzli.ch>
Thu, 20 Dec 2018 21:19:51 +0000 (22:19 +0100)
committerHenryk Plötz <henryk@ploetzli.ch>
Thu, 20 Dec 2018 22:28:41 +0000 (23:28 +0100)
docs/tans.rst
fints/client.py
fints/segments/auth.py

index e8e8dcf5719f75c0a933bd10dd8ee10850b5d86f..c45ef2f44e4389e581c6c439575b95734b37d8bb 100644 (file)
@@ -144,6 +144,14 @@ You SHOULD use this facility together with the client and dialog state restorati
 Reference
 ---------
 
+.. autoclass:: fints.formals.TwoStepParameters2
+   :noindex:
+   :undoc-members:
+   :members:
+   :inherited-members:
+   :member-order: bysource
+   :exclude-members: is_unset, naive_parse, print_nested
+
 .. autoclass:: fints.formals.TwoStepParameters3
    :noindex:
    :undoc-members:
index ecc10dbc1021c384ba136078f75dfc44fad6bf21..5c2ddfec74e4a0535147ae41e957d74167fae93b 100644 (file)
@@ -25,7 +25,7 @@ from .security import (
     PinTanTwoStepAuthenticationMechanism,
 )
 from .segments.accounts import HISPA1, HKSPA1
-from .segments.auth import HIPINS1, HKTAB4, HKTAB5, HKTAN3, HKTAN5
+from .segments.auth import HIPINS1, HKTAB4, HKTAB5, HKTAN2, HKTAN3, HKTAN5
 from .segments.bank import HIBPA3, HIUPA4, HKKOM4
 from .segments.debit import (
     HKDBS1, HKDBS2, HKDMB1, HKDMC1, HKDME1, HKDME2,
@@ -960,6 +960,7 @@ class NeedTANResponse(NeedRetryResponse):
 #  which may require TANs for many more operations including dialog initialization.
 #  We do not currently support that.
 IMPLEMENTED_HKTAN_VERSIONS = {
+    2: HKTAN2,
     3: HKTAN3,
     5: HKTAN5,
 }
@@ -1047,7 +1048,7 @@ class FinTS3PinTanClient(FinTS3Client):
                 seg.account = account_
             raise NotImplementedError("TAN-Process 1 not implemented")
 
-        if tan_process in ('1', '3', '4') and \
+        if tan_process in ('1', '3', '4') and hasattr(tan_mechanism, 'supported_media_number') and \
             tan_mechanism.supported_media_number > 1 and \
             tan_mechanism.description_required == DescriptionRequired.MUST:
                 seg.tan_medium_name = self.selected_tan_medium
index 39d294ed6e7c513a9b7dc5d706de873f656df534..e23d9cdd7df3a01c02c066fb207b44aa45c7f78b 100644 (file)
@@ -32,6 +32,20 @@ class HKVVB3(FinTS3Segment):
     product_version = DataElementField(type='an', max_length=5, _d="Produktversion")
 
 
+class HKTAN2(FinTS3Segment):
+    """Zwei-Schritt-TAN-Einreichung, version 2
+
+    Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Sicherheitsverfahren PIN/TAN"""
+    tan_process = DataElementField(type='code', length=1, _d="TAN-Prozess")
+    task_hash_value = DataElementField(type='bin', max_length=256, required=False, _d="Auftrags-Hashwert")
+    task_reference = DataElementField(type='an', max_length=35, required=False, _d="Auftragsreferenz")
+    tan_list_number = DataElementField(type='an', max_length=20, required=False, _d="TAN-Listennummer")
+    further_tan_follows = DataElementField(type='jn', length=1, required=False, _d="Weitere TAN folgt")
+    cancel_task = DataElementField(type='jn', length=1, required=False, _d="Auftrag stornieren")
+    challenge_class = DataElementField(type='num', max_length=2, required=False, _d="Challenge-Klasse")
+    parameter_challenge_class = DataElementGroupField(type=ParameterChallengeClass, required=False, _d="Parameter Challenge-Klasse")
+
+
 class HKTAN3(FinTS3Segment):
     """Zwei-Schritt-TAN-Einreichung, version 3
 
@@ -83,6 +97,19 @@ class HKTAN6(FinTS3Segment):
     response_hhd_uc = DataElementGroupField(type=ResponseHHDUC, required=False, _d="Antwort HHD_UC")
 
 
+class HITAN2(FinTS3Segment):
+    """Zwei-Schritt-TAN-Einreichung Rückmeldung, version 2
+
+    Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Sicherheitsverfahren PIN/TAN"""
+    tan_process = DataElementField(type='code', length=1, _d="TAN-Prozess")
+    task_hash_value = DataElementField(type='bin', max_length=256, required=False, _d="Auftrags-Hashwert")
+    task_reference = DataElementField(type='an', max_length=35, required=False, _d="Auftragsreferenz")
+    challenge = DataElementField(type='an', max_length=2048, required=False, _d="Challenge")
+    challenge_valid_until = DataElementGroupField(type=ChallengeValidUntil, required=False, _d="Gültigkeitsdatum und -uhrzeit für Challenge")
+    tan_list_number = DataElementField(type='an', max_length=20, required=False, _d="TAN-Listennummer")
+    ben = DataElementField(type='an', max_length=99, required=False, _d="BEN")
+
+
 class HITAN3(FinTS3Segment):
     """Zwei-Schritt-TAN-Einreichung Rückmeldung, version 3