Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Saalesparkasse: Exception: Cannot change TAN mechanism with a standing dialog #155

Closed
sweh opened this issue Dec 11, 2023 · 15 comments
Closed

Comments

@sweh
Copy link

sweh commented Dec 11, 2023

Hello,

I got new access data for my online banking and now the query via Fints no longer works. The new access data is stored correctly (if I change it, a different error message appears).

fints throws me two exceptions directly at

client = FinTS3PinTanClient(…)
with client:
Traceback (most recent call last):
   File "/home/verwaltung/deployment/work/portal/.appenv/ee2dd6b6/lib/python3.10/site-packages/fints/dialog.py", line 85, in init
     retval = self.send(*segments, internal_send=True)
   File "/home/verwaltung/deployment/work/portal/.appenv/ee2dd6b6/lib/python3.10/site-packages/fints/dialog.py", line 156, in send
     self.client.process_response_message(self, response, internal_send=internal_send)
   File "/home/verwaltung/deployment/work/portal/.appenv/ee2dd6b6/lib/python3.10/site-packages/fints/client.py", line 241, in process_response_message
     self._process_response(dialog, segment, response)
   File "/home/verwaltung/deployment/work/portal/.appenv/ee2dd6b6/lib/python3.10/site-packages/fints/client.py", line 1290, in _process_response
     self.set_tan_mechanism('999')
   File "/home/verwaltung/deployment/work/portal/.appenv/ee2dd6b6/lib/python3.10/site-packages/fints/client.py", line 1344, in set_tan_mechanism
     raise Exception("Cannot change TAN mechanism with a standing dialog")
Exception: Cannot change TAN mechanism with a standing dialog

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
   File "/home/verwaltung/deployment/work/portal/bin/import_transactions", line 8, in <module>
     sys.exit(import_transactions())
   File "/home/verwaltung/deployment/work/portal/.appenv/ee2dd6b6/lib/python3.10/site-packages/sw/allotmentclub/scripts.py", line 82, in import_transactions
     import_transactions_from_fints(user)
   File "/home/verwaltung/deployment/work/portal/.appenv/ee2dd6b6/lib/python3.10/site-packages/sw/allotmentclub/account.py", line 169, in import_transactions_from_fints
     with client:
   File "/home/verwaltung/deployment/work/portal/.appenv/ee2dd6b6/lib/python3.10/site-packages/fints/client.py", line 251, in __enter__
     self._standing_dialog.__enter__()
   File "/home/verwaltung/deployment/work/portal/.appenv/ee2dd6b6/lib/python3.10/site-packages/fints/dialog.py", line 37, in __enter__
     self.init()
   File "/home/verwaltung/deployment/work/portal/.appenv/ee2dd6b6/lib/python3.10/site-packages/fints/dialog.py", line 103, in init
     raise FinTSDialogInitError("Couldn't establish dialog with bank, Authentication data wrong?") from e
fints.exceptions.FinTSDialogInitError: Couldn't establish dialog with bank, Authentication data wrong?

The error also occurs with the test code from the documentation (extended to include the product_id parameter, which is mandatory since version 4.0.0).

I've already gone through the code with the debugger and noticed that self.get_tan_mechanisms() is always empty.

Does anyone have an idea what's going wrong here?

Thanks in advance!

@sweh
Copy link
Author

sweh commented Dec 11, 2023

Here the output of the debug script from the documentation:

DEBUG:fints.connection:Sending >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	fints.message.FinTSCustomerMessage([
	    fints.segments.message.HNHBK3( # Nachrichtenkopf
	        header = fints.formals.SegmentHeader('HNHBK', 1, 3), # Segmentkopf
	        message_size = 401, # Größe der Nachricht (nach Verschlüsselung und Komprimierung)
	        hbci_version = 300, # HBCI-Version
	        dialog_id = '0', # Dialog-ID
	        message_number = 1, # Nachrichtennummer
	    ),
	    fints.segments.message.HNVSK3( # Verschlüsselungskopf, version 3
	        header = fints.formals.SegmentHeader('HNVSK', 998, 3), # Segmentkopf
	        security_profile = fints.formals.SecurityProfile( # Sicherheitsprofil
	                security_method = fints.formals.SecurityMethod.PIN, # Sicherheitsverfahren
	                security_method_version = 1, # Version des Sicherheitsverfahrens
	            ),
	        security_function = '998', # Sicherheitsfunktion, kodiert
	        security_role = fints.formals.SecurityRole.ISS, # Rolle des Sicherheitslieferanten, kodiert: Erfasser, Erstsignatur
	        security_identification_details = fints.formals.SecurityIdentificationDetails( # Sicherheitsidentifikation, Details
	                identified_role = fints.formals.IdentifiedRole.MS, # Message Sender
	                cid = None,
	                identifier = '0',
	            ),
	        security_datetime = fints.formals.SecurityDateTime( # Sicherheitsdatum und -uhrzeit
	                date_time_type = fints.formals.DateTimeType.STS, # Sicherheitszeitstempel
	                date = datetime.date(2023, 12, 11),
	                time = datetime.time(15, 2, 36, 643587),
	            ),
	        encryption_algorithm = fints.formals.EncryptionAlgorithm( # Verschlüsselungsalgorithmus
	                usage_encryption = fints.formals.UsageEncryption.OSY, # Owner Symmetric
	                operation_mode = fints.formals.OperationMode.CBC, # Cipher Block Chaining
	                encryption_algorithm = fints.formals.EncryptionAlgorithmCoded.TWOKEY3DES, # 2-Key-Triple-DES
	                algorithm_parameter_value = b'\x00\x00\x00\x00\x00\x00\x00\x00',
	                algorithm_parameter_name = fints.formals.AlgorithmParameterName.KYE, # Symmetrischer Schlüssel, verschlüsselt mit symmetrischem Schlüssel
	                algorithm_parameter_iv_name = fints.formals.AlgorithmParameterIVName.IVC, # Initialization value, clear text
	            ),
	        key_name = fints.formals.KeyName( # Schlüsselname
	                bank_identifier = fints.formals.BankIdentifier(
	                        country_identifier = '280',
	                        bank_code = '80053762',
	                    ),
	                user_id = 'MatthiasSchulz',
	                key_type = fints.formals.KeyType.V, # Schlüsselart: Chiffrierschlüssel
	                key_number = 0,
	                key_version = 0,
	            ),
	        compression_function = fints.formals.CompressionFunction.NULL, # Komprimierungsfunktion: Keine Kompression
	    ),
	    fints.segments.message.HNVSD1( # Verschlüsselte Daten, version 1
	        header = fints.formals.SegmentHeader('HNVSD', 999, 1), # Segmentkopf
	        data = fints.types.SegmentSequence([ # Daten, verschlüsselt
	                fints.segments.message.HNSHK4( # Signaturkopf, version 4
	                    header = fints.formals.SegmentHeader('HNSHK', 2, 4), # Segmentkopf
	                    security_profile = fints.formals.SecurityProfile( # Sicherheitsprofil
	                            security_method = fints.formals.SecurityMethod.PIN, # Sicherheitsverfahren
	                            security_method_version = 1, # Version des Sicherheitsverfahrens
	                        ),
	                    security_function = '999', # Sicherheitsfunktion, kodiert
	                    security_reference = '7980934', # Sicherheitskontrollreferenz
	                    security_application_area = fints.formals.SecurityApplicationArea.SHM, # Bereich der Sicherheitsapplikation, kodiert: Signaturkopf und HBCI-Nutzdaten
	                    security_role = fints.formals.SecurityRole.ISS, # Rolle des Sicherheitslieferanten, kodiert: Erfasser, Erstsignatur
	                    security_identification_details = fints.formals.SecurityIdentificationDetails( # Sicherheitsidentifikation, Details
	                            identified_role = fints.formals.IdentifiedRole.MS, # Message Sender
	                            cid = None,
	                            identifier = '0',
	                        ),
	                    security_reference_number = 1, # Sicherheitsreferenznummer
	                    security_datetime = fints.formals.SecurityDateTime( # Sicherheitsdatum und -uhrzeit
	                            date_time_type = fints.formals.DateTimeType.STS, # Sicherheitszeitstempel
	                            date = datetime.date(2023, 12, 11),
	                            time = datetime.time(15, 2, 36, 642778),
	                        ),
	                    hash_algorithm = fints.formals.HashAlgorithm( # Hashalgorithmus
	                            usage_hash = '1',
	                            hash_algorithm = '999',
	                            algorithm_parameter_name = '1',
	                        ),
	                    signature_algorithm = fints.formals.SignatureAlgorithm( # Signaturalgorithmus
	                            usage_signature = '6',
	                            signature_algorithm = '10',
	                            operation_mode = '16',
	                        ),
	                    key_name = fints.formals.KeyName( # Schlüsselname
	                            bank_identifier = fints.formals.BankIdentifier(
	                                    country_identifier = '280',
	                                    bank_code = '80053762',
	                                ),
	                            user_id = 'MatthiasSchulz',
	                            key_type = fints.formals.KeyType.S, # Schlüsselart: Signierschlüssel
	                            key_number = 0,
	                            key_version = 0,
	                        ),
	                ),
	                fints.segments.auth.HKIDN2( # Identifikation, version 2
	                    header = fints.formals.SegmentHeader('HKIDN', 3, 2), # Segmentkopf
	                    bank_identifier = fints.formals.BankIdentifier( # Kreditinstitutskennung
	                            country_identifier = '280',
	                            bank_code = '80053762',
	                        ),
	                    customer_id = 'MatthiasSchulz', # Kunden-ID
	                    system_id = '0', # Kundensystem-ID
	                    system_id_status = fints.formals.SystemIDStatus.ID_NECESSARY, # Kundensystem-Status: Kundensystem-ID wird benötigt
	                ),
	                fints.segments.auth.HKVVB3( # Verarbeitungsvorbereitung, version 3
	                    header = fints.formals.SegmentHeader('HKVVB', 4, 3), # Segmentkopf
	                    bpd_version = 0, # BPD-Version
	                    upd_version = 0, # UPD-Version
	                    language = fints.formals.Language2.DE, # Dialogsprache: Deutsch, 'de', Subset Deutsch, Codeset 1 (Latin 1)
	                    product_name = '2AC02E69EB63F836395DAE10A', # Produktbezeichnung
	                    product_version = '4.0.0', # Produktversion
	                ),
	                fints.segments.dialog.HKSYN3( # Synchronisierung, version 3
	                    header = fints.formals.SegmentHeader('HKSYN', 5, 3), # Segmentkopf
	                    synchronization_mode = fints.formals.SynchronizationMode.NEW_SYSTEM_ID, # Neue Kundensystem-ID zurückmelden
	                ),
	                fints.segments.message.HNSHA2( # Signaturabschluss, version 2
	                    header = fints.formals.SegmentHeader('HNSHA', 6, 2), # Segmentkopf
	                    security_reference = '7980934', # Sicherheitskontrollreferenz
	                    user_defined_signature = fints.formals.UserDefinedSignature( # Benutzerdefinierte Signatur
	                            pin = '***',
	                        ),
	                ),
	            ]),
	    ),
	    fints.segments.message.HNHBS1( # Nachrichtenabschluss
	        header = fints.formals.SegmentHeader('HNHBS', 7, 1), # Segmentkopf
	        message_number = 1, # Nachrichtennummer
	    ),
	])

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): banking-st5.s-fints-pt-st.de:443
DEBUG:urllib3.connectionpool:https://banking-st5.s-fints-pt-st.de:443 "POST /fints30 HTTP/1.1" 200 14572
DEBUG:fints.connection:Received <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
	fints.message.FinTSInstituteMessage([
	    fints.segments.message.HNHBK3( # Nachrichtenkopf
	        header = fints.formals.SegmentHeader('HNHBK', 1, 3), # Segmentkopf
	        message_size = 10649, # Größe der Nachricht (nach Verschlüsselung und Komprimierung)
	        hbci_version = 300, # HBCI-Version
	        dialog_id = '915348896396=747655803543CN8H=', # Dialog-ID
	        message_number = 1, # Nachrichtennummer
	        reference_message = fints.formals.ReferenceMessage( # Bezugsnachricht
	                dialog_id = '915348896396=747655803543CN8H=',
	                message_number = 1,
	            ),
	    ),
	    fints.segments.message.HNVSK3( # Verschlüsselungskopf, version 3
	        header = fints.formals.SegmentHeader('HNVSK', 998, 3), # Segmentkopf
	        security_profile = fints.formals.SecurityProfile( # Sicherheitsprofil
	                security_method = fints.formals.SecurityMethod.PIN, # Sicherheitsverfahren
	                security_method_version = 1, # Version des Sicherheitsverfahrens
	            ),
	        security_function = '998', # Sicherheitsfunktion, kodiert
	        security_role = fints.formals.SecurityRole.ISS, # Rolle des Sicherheitslieferanten, kodiert: Erfasser, Erstsignatur
	        security_identification_details = fints.formals.SecurityIdentificationDetails( # Sicherheitsidentifikation, Details
	                identified_role = fints.formals.IdentifiedRole.MR, # Message Receiver
	                cid = None,
	                identifier = '0',
	            ),
	        security_datetime = fints.formals.SecurityDateTime( # Sicherheitsdatum und -uhrzeit
	                date_time_type = fints.formals.DateTimeType.STS, # Sicherheitszeitstempel
	                date = datetime.date(2023, 12, 11),
	                time = datetime.time(15, 2, 36),
	            ),
	        encryption_algorithm = fints.formals.EncryptionAlgorithm( # Verschlüsselungsalgorithmus
	                usage_encryption = fints.formals.UsageEncryption.OSY, # Owner Symmetric
	                operation_mode = fints.formals.OperationMode.CBC, # Cipher Block Chaining
	                encryption_algorithm = fints.formals.EncryptionAlgorithmCoded.TWOKEY3DES, # 2-Key-Triple-DES
	                algorithm_parameter_value = b'\x00\x00\x00\x00\x00\x00\x00\x00',
	                algorithm_parameter_name = fints.formals.AlgorithmParameterName.KYE, # Symmetrischer Schlüssel, verschlüsselt mit symmetrischem Schlüssel
	                algorithm_parameter_iv_name = fints.formals.AlgorithmParameterIVName.IVC, # Initialization value, clear text
	            ),
	        key_name = fints.formals.KeyName( # Schlüsselname
	                bank_identifier = fints.formals.BankIdentifier(
	                        country_identifier = '280',
	                        bank_code = '80053762',
	                    ),
	                user_id = 'MatthiasSchulz',
	                key_type = fints.formals.KeyType.V, # Schlüsselart: Chiffrierschlüssel
	                key_number = 0,
	                key_version = 0,
	            ),
	        compression_function = fints.formals.CompressionFunction.NULL, # Komprimierungsfunktion: Keine Kompression
	    ),
	    fints.segments.message.HNVSD1( # Verschlüsselte Daten, version 1
	        header = fints.formals.SegmentHeader('HNVSD', 999, 1), # Segmentkopf
	        data = fints.types.SegmentSequence([ # Daten, verschlüsselt
	                fints.segments.message.HNSHK4( # Signaturkopf, version 4
	                    header = fints.formals.SegmentHeader('HNSHK', 2, 4), # Segmentkopf
	                    security_profile = fints.formals.SecurityProfile( # Sicherheitsprofil
	                            security_method = fints.formals.SecurityMethod.PIN, # Sicherheitsverfahren
	                            security_method_version = 1, # Version des Sicherheitsverfahrens
	                        ),
	                    security_function = '999', # Sicherheitsfunktion, kodiert
	                    security_reference = '7980934', # Sicherheitskontrollreferenz
	                    security_application_area = fints.formals.SecurityApplicationArea.SHM, # Bereich der Sicherheitsapplikation, kodiert: Signaturkopf und HBCI-Nutzdaten
	                    security_role = fints.formals.SecurityRole.ISS, # Rolle des Sicherheitslieferanten, kodiert: Erfasser, Erstsignatur
	                    security_identification_details = fints.formals.SecurityIdentificationDetails( # Sicherheitsidentifikation, Details
	                            identified_role = fints.formals.IdentifiedRole.MR, # Message Receiver
	                            cid = None,
	                            identifier = '0',
	                        ),
	                    security_reference_number = 1, # Sicherheitsreferenznummer
	                    security_datetime = fints.formals.SecurityDateTime( # Sicherheitsdatum und -uhrzeit
	                            date_time_type = fints.formals.DateTimeType.STS, # Sicherheitszeitstempel
	                            date = datetime.date(2023, 12, 11),
	                            time = datetime.time(15, 2, 36),
	                        ),
	                    hash_algorithm = fints.formals.HashAlgorithm( # Hashalgorithmus
	                            usage_hash = '1',
	                            hash_algorithm = '999',
	                            algorithm_parameter_name = '1',
	                        ),
	                    signature_algorithm = fints.formals.SignatureAlgorithm( # Signaturalgorithmus
	                            usage_signature = '6',
	                            signature_algorithm = '10',
	                            operation_mode = '16',
	                        ),
	                    key_name = fints.formals.KeyName( # Schlüsselname
	                            bank_identifier = fints.formals.BankIdentifier(
	                                    country_identifier = '280',
	                                    bank_code = '80053762',
	                                ),
	                            user_id = 'MatthiasSchulz',
	                            key_type = fints.formals.KeyType.S, # Schlüsselart: Signierschlüssel
	                            key_number = 0,
	                            key_version = 0,
	                        ),
	                ),
	                fints.segments.dialog.HIRMG2( # Rückmeldungen zur Gesamtnachricht
	                    header = fints.formals.SegmentHeader('HIRMG', 3, 2), # Segmentkopf
	                    responses = [ # Rückmeldung
	                                fints.formals.Response( # Rückmeldung
	                                    code = '3060',
	                                    reference_element = None,
	                                    text = 'Bitte beachten Sie die enthaltenen Warnungen/Hinweise.',
	                                ),
	                        ],
	                ),
	                fints.segments.dialog.HIRMS2( # Rückmeldungen zu Segmenten
	                    header = fints.formals.SegmentHeader('HIRMS', 4, 2, 5), # Segmentkopf
	                    responses = [ # Rückmeldung
	                                fints.formals.Response( # Rückmeldung
	                                    code = '0020',
	                                    reference_element = None,
	                                    text = 'Auftrag ausgeführt.',
	                                ),
	                        ],
	                ),
	                fints.segments.dialog.HIRMS2( # Rückmeldungen zu Segmenten
	                    header = fints.formals.SegmentHeader('HIRMS', 5, 2, 4), # Segmentkopf
	                    responses = [ # Rückmeldung
	                                fints.formals.Response( # Rückmeldung
	                                    code = '3050',
	                                    reference_element = None,
	                                    text = 'BPD nicht mehr aktuell, aktuelle Version enthalten.',
	                                ),
	                                fints.formals.Response( # Rückmeldung
	                                    code = '3920',
	                                    reference_element = None,
	                                    text = 'Zugelassene Zwei-Schritt-Verfahren für den Benutzer.',
	                                    parameters = [
	                                            '923',
	                                        ],
	                                ),
	                                fints.formals.Response( # Rückmeldung
	                                    code = '0020',
	                                    reference_element = None,
	                                    text = 'Der Auftrag wurde ausgeführt.',
	                                ),
	                        ],
	                ),
	                fints.segments.bank.HIBPA3( # Bankparameter allgemein, version 3
	                    header = fints.formals.SegmentHeader('HIBPA', 6, 3, 4), # Segmentkopf
	                    bpd_version = 12, # BPD-Version
	                    bank_identifier = fints.formals.BankIdentifier( # Kreditinstitutskennung
	                            country_identifier = '280',
	                            bank_code = '80053762',
	                        ),
	                    bank_name = 'Saalesparkasse', # Kreditinstitutsbezeichnung
	                    number_tasks = 3, # Anzahl Geschäftsvorfallarten pro Nachricht
	                    supported_languages = fints.formals.SupportedLanguages2( # Unterstützte Sprachen
	                            languages = [
	                                    fints.formals.Language2.DE, # Deutsch, 'de', Subset Deutsch, Codeset 1 (Latin 1)
	                                ],
	                        ),
	                    supported_hbci_version = fints.formals.SupportedHBCIVersions2( # Unterstützte HBCI-Versionen
	                            versions = [
	                                    '300',
	                                ],
	                        ),
	                ),
	                fints.segments.bank.HIKOM4( # Kommunikationszugang rückmelden, version 4
	                    header = fints.formals.SegmentHeader('HIKOM', 7, 4, 4), # Segmentkopf
	                    bank_identifier = fints.formals.BankIdentifier( # Kreditinstitutskennung
	                            country_identifier = '280',
	                            bank_code = '80053762',
	                        ),
	                    default_language = fints.formals.Language2.DE, # Standardsprache: Deutsch, 'de', Subset Deutsch, Codeset 1 (Latin 1)
	                    communication_parameters = [ # Kommunikationsparameter
	                                fints.formals.CommunicationParameter2( # Kommunikationsparameter
	                                    service_type = fints.formals.ServiceType2.HTTPS, # Kommunikationsdienst: https
	                                    address = 'banking-st5.s-fints-pt-st.de/fints30', # Kommunikationsadresse
	                                ),
	                        ],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HISHV', 8, 3, 4), # Segmentkopf
	                    _additional_data = ['N', ['PIN', '1']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HICSUS', 9, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['INTC;CORT', 'urn:iso:std:iso:20022:tech:xsd:pain.001.001.03']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIPKBS', 10, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', 'N'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIPKAS', 11, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HISALS', 12, 8, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', 'J'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIPCRS', 13, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIPWES', 14, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', 'J'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIPWLS', 15, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['N', 'J', 'J']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIPWBS', 16, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['N', 'N']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIPWAS', 17, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', 'J'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIBMBS', 18, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['J', 'J']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIDMLS', 19, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIBMLS', 20, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.debit.HIDMBS1( # Bestand terminierter SEPA-Sammellastschriften Parameter, version 1
	                    header = fints.formals.SegmentHeader('HIDMBS', 21, 1, 4), # Segmentkopf
	                    max_number_tasks = 1, # Maximale Anzahl Aufträge
	                    min_number_signatures = 1, # Anzahl Signaturen mindestens
	                    security_class = fints.formals.SecurityClass.NONE, # Sicherheitsklasse: Kein Sicherheitsdienst erforderlich
	                    parameter = fints.formals.QueryScheduledBatchDebitParameter1( # Parameter Bestand terminierter SEPA-Sammellastschriften
	                            max_number_responses_allowed = True, # Eingabe Anzahl Einträge erlaubt
	                            date_range_allowed = True, # Zeitraum möglich
	                        ),
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIIPZS', 22, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', [';', 'urn:iso:std:iso:20022:tech:xsd:pain.001.001.03']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIIPSS', 23, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['10', 'urn:iso:std:iso:20022:tech:xsd:pain.001.001.03']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIWOKS', 24, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['9999999,99', 'EUR']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIWDHS', 25, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['J', 'N', '730']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIBVES', 26, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', 'E'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIPTZS', 27, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', 'J'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIEEAS', 28, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['DKPTZ', '1', 'N']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIALES', 29, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['V-EC-KARTE', 'V-S-CARD', 'V-WERTKARTE']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIALLS', 30, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIALNS', 31, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['V-EC-KARTE', 'V-S-CARD', 'V-WERTKARTE']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIANAS', 32, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['1', '15']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIANLS', 33, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIBAZS', 34, 2, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['J', 'J']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIBKDS', 35, 4, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIBKUS', 36, 3, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['J', 'N']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIBUMS', 37, 3, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', 'N'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIBVAS', 38, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIBVBS', 39, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIBVDS', 40, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIBVKS', 41, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['J', 'V-EC-KARTE', 'V-S-CARD', 'V-WERTKARTE']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIBVPS', 42, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['8', '20']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIBVRS', 43, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['8', '20', None, 'N', 'N']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIBVSS', 44, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIBVSS', 45, 2, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIDFAS', 46, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', 'N'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIDFBS', 47, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIDFCS', 48, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIDFDS', 49, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIDFLS', 50, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIDFUS', 51, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', 'N'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIDFUS', 52, 2, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', 'N'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIDIHS', 53, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIDFSS', 54, 2, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['N', '1;DekaBank-Konzern;5;Swisscanto;7;JPMorgan Fleming;8;Lombard Odier;10;Franklin Templeton;11;Gartmore;12;Goldman Sachs;13;Black Rock Merrill;14;Threadneedle;15;UBS;16;Schroders', '10_10', 'Aktienfonds Asien - Pazifik ohne Japan', '10_20', 'Aktienfonds Branche', '10_30', 'Aktienfonds Deutschland', '10_40', 'Aktienfonds Emerging Markets', '10_50', 'Aktienfonds Euroland', '10_60', 'Aktienfonds Europa Länder', '10_70', 'Aktienfonds Europa', '10_80', 'Aktienfonds Japan', '10_90', 'Aktienfonds Lateinamerika', '10_100', 'Aktienfonds Nordamerika', '10_110', 'Aktienfonds Osteuropa', '10_120', 'Aktienfonds Welt', '10_400', 'Aktienfonds Afrika', '10_410', 'Aktienfonds Mittlerer Osten', '10_420', 'Aktienfonds Nordeuropa', '20_130', 'Dachfonds Chance Plus', '20_140', 'Dachfonds Chance', '20_150', 'Dachfonds Ertrag Plus', '20_160', 'Dachfonds Ertrag', '20_170', 'Dachfonds Wachstum', '20_180', 'Dachfonds laufzeitbegrenzt', '30_430', 'Garantiefonds', '40_200', 'Geldmarktfonds', '40_210', 'Geldmarktnahe Fonds', '50_220', 'Alternative Investmentfonds Hedgefonds', '50_230', 'Alternative Investmentfonds Private Equity', '50_240', 'Alternative Investmentfonds Rohstofffonds', '60_250', 'Sonderkonzepte Absolute-/Total-Returnstrategiefonds', '60_260', 'Sonderkonzepte Altersvorsorgefonds', '60_270', 'Sonderkonzepte Institutionelle Fondskonzepte', '60_280', 'Sonderkonzepte Steuerorientierte Fonds', '70_30', 'Immobilienfonds Deutschland', '70_70', 'Immobilienfonds Europa', '70_120', 'Immobilienfonds Welt', '80_50', 'Mischfonds Euroland', '80_290', 'Mischfonds ausgewogen', '80_300', 'Mischfonds dynamisch', '80_310', 'Mischfonds flexibel', '80_320', 'Mischfonds konservativ', '90_330', 'Rentenfonds Inflationsindexierte Anleihen', '90_340', 'Rentenfonds Laufzeitfonds', '90_350', 'Rentenfonds MBS', '90_360', 'Rentenfonds Nachranganleihen', '90_370', 'Rentenfonds Staatsanleihen', '90_380', 'Rentenfonds Unternehmensanleihen', '90_390', 'Rentenfonds Wandelanleihen']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIDDIS', 55, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['DKDOF;2', 'DKDFO;2']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIDFOS', 56, 2, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIDFPS', 57, 2, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIDPFS', 58, 2, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIDFES', 59, 2, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIDEFS', 60, 2, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIDOFS', 61, 2, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIFAFS', 62, 2, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['N', 'N']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIGBAS', 63, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIGBSS', 64, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', 'J'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIKAUS', 65, 3, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', 'N'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIKKAS', 66, 2, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['N', 'N', '2']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIKKSS', 67, 3, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.statement.DIKKUS2( # Kreditkartenumsätze anfordern Parameter, version 2
	                    header = fints.formals.SegmentHeader('DIKKUS', 68, 2, 4), # Segmentkopf
	                    max_number_tasks = 1, # Maximale Anzahl Aufträge
	                    min_number_signatures = 1, # Anzahl Signaturen mindestens
	                    security_class = fints.formals.SecurityClass.NONE, # Sicherheitsklasse: Kein Sicherheitsdienst erforderlich
	                    parameter = fints.formals.QueryCreditCardStatements2( # Parameter Kreditkartenumsätze anfordern
	                            cutoff_days = 90, # Maximale Vorhaltezeit der Umsätze
	                            max_number_responses_allowed = False, # Eingabe Anzahl Einträge erlaubt
	                            date_range_allowed = True, # Zeitraum möglich
	                        ),
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIPAES', 69, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIPSAS', 70, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIPSPS', 71, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIQUOS', 72, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIQUTS', 73, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DITLAS', 74, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DITLFS', 75, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', 'N'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DITLFS', 76, 2, 4), # Segmentkopf
	                    _additional_data = ['1', '1', 'N'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DITSPS', 77, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', 'N'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIVVDS', 78, 1, 4), # Segmentkopf
	                    _additional_data = ['3', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIVVUS', 79, 1, 4), # Segmentkopf
	                    _additional_data = ['3', '1', '0', ['N', 'J']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIWAPS', 80, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', ['J', 'STOP;SLOS;LMTO;MAKT', 'J', 'J', 'GDAY;GTMO;GTHD', 'J', '1', 'N', 'N', 'N', '9999999,99', 'EUR']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIWAPS', 81, 4, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['J', 'STOP;STLI;LMTO;MAKT;OCOO;TRST', 'J', 'J', 'J', 'J', 'J', 'GDAY;GTMO;GTHD', 'J', '1', 'N', 'N', 'N', '9999999,99', 'EUR']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIWDGS', 82, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['J', 'N', 'N']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIWGVS', 83, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['J', '730', 'N']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIWLVS', 84, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['J', '365', 'N']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DINZPS', 85, 3, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['N', 'N', '4', 'N', 'N', None, None, 'N', 'J']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIFOPS', 86, 3, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['N', '4', 'N', 'N', 'N', None, None, None, 'MAKT', 'N', 'J']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIFPOS', 87, 3, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['N', '4', 'N', 'N', None, None, 'N', 'J']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIWOPS', 88, 5, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['0', 'N', '4', 'N', 'N', None, None, None, '9999999,99', 'EUR', 'STOP;STLI;LMTO;MAKT;OCOO;TRST', 'BUYI;SELL;AUCT;CONT;ALNO;DIHA', 'GDAY;GTMO;GTHD;GTCA;IOCA;OPEN;CLOS;FIKI', 'N', 'J']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIWVBS', 89, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['N', 'N']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIZDFS', 90, 2, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('DIZDLS', 91, 2, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIAUBS', 92, 5, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '1'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIBMES', 93, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['2', '28', '2', '28', '1000', 'J', 'N']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIBSES', 94, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['2', '28', '2', '28']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HICAZS', 95, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['450', 'N', 'N', 'urn:iso:std:iso:20022:tech:xsd:camt.052.001.02', 'urn:iso:std:iso:20022:tech:xsd:camt.052.001.08']],
	                ),
	                fints.segments.transfer.HICCMS1( # SEPA-Sammelüberweisung Parameter, version 1
	                    header = fints.formals.SegmentHeader('HICCMS', 96, 1, 4), # Segmentkopf
	                    max_number_tasks = 1, # Maximale Anzahl Aufträge
	                    min_number_signatures = 1, # Anzahl Signaturen mindestens
	                    security_class = fints.formals.SecurityClass.NONE, # Sicherheitsklasse: Kein Sicherheitsdienst erforderlich
	                    parameter = fints.formals.BatchTransferParameter1( # Parameter SEPA-Sammelüberweisung
	                            max_transfer_count = 1000, # Maximale Anzahl CreditTransferTransactionInformation
	                            sum_amount_required = True, # Summenfeld benötigt
	                            single_booking_allowed = False, # Einzelbuchung erlaubt
	                        ),
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HICCSS', 97, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HICDBS', 98, 1, 4), # Segmentkopf
	                    _additional_data = ['3', '1', '0', 'N'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HICDES', 99, 1, 4), # Segmentkopf
	                    _additional_data = ['3', '1', '0', ['4', '0', '9999', '0102030612', '01020304050607080910111213141516171819202122232425262728293099']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HICDLS', 100, 1, 4), # Segmentkopf
	                    _additional_data = ['3', '1', '0', ['0', '9999', 'J', 'J']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HICDNS', 101, 1, 4), # Segmentkopf
	                    _additional_data = ['3', '1', '0', ['0', '0', '9999', 'J', 'J', 'J', 'J', 'J', 'N', 'J', 'J', 'J', '0102030612', '01020304050607080910111213141516171819202122232425262728293099']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HICDUS', 102, 1, 4), # Segmentkopf
	                    _additional_data = ['3', '1', '0', ['1', '0', '9999', '1', 'N', 'N']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HICMBS', 103, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['N', 'J']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HICMES', 104, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['1', '360', '1000', 'J', 'N']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HICMLS', 105, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HICSAS', 106, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['1', '360']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HICSBS', 107, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['N', 'J']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HICSES', 108, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['1', '360']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HICSLS', 109, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', 'J'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HICUBS', 110, 1, 4), # Segmentkopf
	                    _additional_data = ['3', '1', '0', 'J'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HICUMS', 111, 1, 4), # Segmentkopf
	                    _additional_data = ['3', '1', '0', [';', 'urn:iso:std:iso:20022:tech:xsd:pain.001.001.03']],
	                ),
	                fints.segments.debit.HIDMES1( # Terminierte SEPA-Sammellastschrift einreichen Parameter, version 1
	                    header = fints.formals.SegmentHeader('HIDMES', 112, 1, 4), # Segmentkopf
	                    max_number_tasks = 1, # Maximale Anzahl Aufträge
	                    min_number_signatures = 1, # Anzahl Signaturen mindestens
	                    security_class = fints.formals.SecurityClass.NONE, # Sicherheitsklasse: Kein Sicherheitsdienst erforderlich
	                    parameter = fints.formals.ScheduledBatchDebitParameter1( # Parameter terminierte SEPA-Sammellastschrift einreichen
	                            min_advance_notice_FNAL_RCUR = 2, # Minimale Vorlaufzeit FNAL/RCUR
	                            max_advance_notice_FNAL_RCUR = 28, # Maximale Vorlaufzeit FNAL/RCUR
	                            min_advance_notice_FRST_OOFF = 2, # Minimale Vorlaufzeit FRST/OOFF
	                            max_advance_notice_FRST_OOFF = 28, # Maximale Vorlaufzeit FRST/OOFF
	                            max_debit_count = 1000, # Maximale Anzahl DirectDebitTransfer TransactionInformation
	                            sum_amount_required = True, # Summenfeld benötigt
	                            single_booking_allowed = False, # Einzelbuchung erlaubt
	                        ),
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIDSBS', 113, 1, 4), # Segmentkopf
	                    _additional_data = ['3', '1', '0', ['J', 'J', '56']],
	                ),
	                fints.segments.debit.HIDSES1( # Terminierte SEPA-Einzellastschrift einreichen Parameter, version 1
	                    header = fints.formals.SegmentHeader('HIDSES', 114, 1, 4), # Segmentkopf
	                    max_number_tasks = 1, # Maximale Anzahl Aufträge
	                    min_number_signatures = 1, # Anzahl Signaturen mindestens
	                    security_class = fints.formals.SecurityClass.NONE, # Sicherheitsklasse: Kein Sicherheitsdienst erforderlich
	                    parameter = fints.formals.ScheduledDebitParameter1( # Parameter terminierte SEPA-Sammellastschrift einreichen
	                            min_advance_notice_FNAL_RCUR = 2, # Minimale Vorlaufzeit FNAL/RCUR
	                            max_advance_notice_FNAL_RCUR = 28, # Maximale Vorlaufzeit FNAL/RCUR
	                            min_advance_notice_FRST_OOFF = 2, # Minimale Vorlaufzeit FRST/OOFF
	                            max_advance_notice_FRST_OOFF = 28, # Maximale Vorlaufzeit FRST/OOFF
	                        ),
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIDSWS', 115, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', 'N'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIEKAS', 116, 2, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['J', 'J', 'N', '1']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIEKAS', 117, 3, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['J', 'J', 'N', '1']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIEKPS', 118, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['J', 'J', 'N']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIFGBS', 119, 2, 4), # Segmentkopf
	                    _additional_data = ['3', '1'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIFGBS', 120, 3, 4), # Segmentkopf
	                    _additional_data = ['3', '1'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIFRDS', 121, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIFRDS', 122, 4, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['N', 'J', 'N', '0', 'Kreditinstitut', '1', 'DekaBank']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIKAZS', 123, 4, 4), # Segmentkopf
	                    _additional_data = ['1', '1', ['360', 'J']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIKAZS', 124, 5, 4), # Segmentkopf
	                    _additional_data = ['1', '1', ['360', 'J', 'N']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIKDMS', 125, 2, 4), # Segmentkopf
	                    _additional_data = ['3', '0', '2048'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIKDMS', 126, 3, 4), # Segmentkopf
	                    _additional_data = ['3', '0', '2048'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIKDMS', 127, 4, 4), # Segmentkopf
	                    _additional_data = ['3', '0', '2048'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIKIFS', 128, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIKIFS', 129, 4, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['J', 'J']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIKIFS', 130, 5, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['J', 'J']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIKIFS', 131, 6, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['J', 'J']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIMTAS', 132, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', 'N'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIMTAS', 133, 2, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['N', 'J']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIMTFS', 134, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIMTRS', 135, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', 'N'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIMTRS', 136, 2, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['N', 'J']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HINEAS', 137, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', ['1', '2', '3', '4']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HINEZS', 138, 3, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['N', 'N', '4', 'N', 'N', None, None, 'N', 'J']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIWFOS', 139, 3, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['N', '4', 'N', 'N', 'N', None, None, None, 'MAKT', 'N', 'J']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIWPOS', 140, 5, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['0', 'N', '4', 'N', 'N', None, None, None, '9999999,99', 'EUR', 'STOP;STLI;LMTO;MAKT;OCOO;TRST', 'BUYI;SELL;AUCT;CONT;ALNO;DIHA', 'GDAY;GTMO;GTHD;GTCA;IOCA;OPEN;CLOS;FIKI', 'N', 'J']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIWSDS', 141, 5, 4), # Segmentkopf
	                    _additional_data = ['3', '1', '0', ['J', 'A;Inland DAX', 'B;Inland Sonstige', 'C;Ausland Europa', 'D;Ausland Sonstige']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIFPOS', 142, 3, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['N', '4', 'N', 'N', None, None, 'N', 'J']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIPAES', 143, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIPPDS', 144, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['1', 'Telekom', 'Xtra-Card', 'N', None, None, '15;30;50', '2', 'Vodafone', 'CallYa', 'N', None, None, '15;25;50', '3', 'E-Plus', 'Free and easy', 'N', None, None, '15;20;30', '4', 'O2', 'Loop', 'N', None, None, '15;20;30', '5', 'congstar', 'congstar', 'N', None, None, '15;30;50', '6', 'blau', 'blau', 'N', None, None, '15;20;30', '8', 'o.tel.o', 'o.tel.o', 'N', None, None, '9;19;29', '9', 'SIM Guthaben', 'SIM Guthaben', 'N', None, None, '15;30;50']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIQTGS', 145, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HISALS', 146, 5, 4), # Segmentkopf
	                    _additional_data = ['1', '1'],
	                ),
	                fints.segments.accounts.HISPAS1( # SEPA-Kontoverbindung anfordern, Parameter, version 1
	                    header = fints.formals.SegmentHeader('HISPAS', 147, 1, 4), # Segmentkopf
	                    max_number_tasks = 1, # Maximale Anzahl Aufträge
	                    min_number_signatures = 1, # Anzahl Signaturen mindestens
	                    security_class = fints.formals.SecurityClass.NONE, # Sicherheitsklasse: Kein Sicherheitsdienst erforderlich
	                    parameter = fints.formals.GetSEPAAccountParameter1( # Parameter SEPA-Kontoverbindung anfordern
	                            single_account_query_allowed = True, # Einzelkontenabruf erlaubt
	                            national_account_allowed = False, # Nationale Kontoverbindung erlaubt
	                            structured_purpose_allowed = False, # Strukturierter Verwendungszweck erlaubt
	                            supported_sepa_formats = [ # Unterstützte SEPA-Datenformate
	                                    'urn:iso:std:iso:20022:tech:xsd:pain.001.001.03', # Unterstützte SEPA-Datenformate
	                                    'urn:iso:std:iso:20022:tech:xsd:pain.008.001.02', # Unterstützte SEPA-Datenformate
	                                ],
	                        ),
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HISPAS', 148, 2, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['J', 'N', 'N', 'N', 'urn:iso:std:iso:20022:tech:xsd:pain.001.001.03', 'urn:iso:std:iso:20022:tech:xsd:pain.008.001.02']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIIPES', 149, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['0', '5', '360', '1000', 'J', ';', 'urn:iso:std:iso:20022:tech:xsd:pain.001.001.03', 'urn:iso:std:iso:20022:tech:xsd:pain.001.001.08']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIIPMS', 150, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['1000', 'J', ';', 'urn:iso:std:iso:20022:tech:xsd:pain.001.001.03']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIISSS', 151, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['5', 'urn:iso:std:iso:20022:tech:xsd:pain.002.001.03']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HITABS', 152, 2, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HITABS', 153, 3, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HITABS', 154, 4, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HITAUS', 155, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['N', 'N', 'J']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HITAZS', 156, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HITAZS', 157, 2, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HITMLS', 158, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HITSYS', 159, 1, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['N', 'N']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIWDUS', 160, 4, 4), # Segmentkopf
	                    _additional_data = ['3', '1', '999'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIWFPS', 161, 2, 4), # Segmentkopf
	                    _additional_data = ['3', '1', ['RENTEN', 'INVESTMENTFONDS', 'GENUSSSCHEINE', 'SPARBRIEFE', 'UNTERNEHMENSANLEIHEN', 'EMERGING MARKET ANLEIHEN', 'STRUKTURIERTE ANLEIHEN', 'ZERTIFIKATE', 'AKTIEN', 'OPTIONSSCHEINE', 'ALLE ANGEBOTE EIGENES INSTITUT', 'ALLE ANGEBOTE UEBERGEORD. INSTITUTE']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIWOAS', 162, 2, 4), # Segmentkopf
	                    _additional_data = ['1', '1', ['J', 'STOP;SLOS;LMTO;MAKT', 'J', 'J', 'GDAY;GTMO;GTHD', 'J', '1', 'N', 'N', 'N', '9999999,99', 'EUR']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIWOAS', 163, 4, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '0', ['J', 'STOP;STLI;LMTO;MAKT;OCOO;TRST', 'J', 'J', 'J', 'J', 'J', 'GDAY;GTMO;GTHD', 'J', '1', 'N', 'N', 'N', '9999999,99', 'EUR']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIWPDS', 164, 5, 4), # Segmentkopf
	                    _additional_data = ['1', '1', ['J', 'N', 'N']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIWPRS', 165, 1, 4), # Segmentkopf
	                    _additional_data = ['3', '1', ['J', 'J', 'N', 'N', None, 'Aktien', 'Festverzinsliche Wertpapiere', 'Fonds', 'Fremdwährungsanleihen', 'Genussscheine', 'Indexzertifikate', 'Optionsscheine', 'Wandel- und Optionsanleihen cum']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIWPSS', 166, 1, 4), # Segmentkopf
	                    _additional_data = ['3', '1', 'J'],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIWSOS', 167, 4, 4), # Segmentkopf
	                    _additional_data = ['3', '1', '0', ['J', 'J', '90', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11']],
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HIWSOS', 168, 5, 4), # Segmentkopf
	                    _additional_data = ['3', '1', '0', ['J', 'J', '90', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17']],
	                ),
	                fints.segments.auth.HITANS6(
	                    header = fints.formals.SegmentHeader('HITANS', 169, 6, 4), # Segmentkopf
	                    max_number_tasks = 1, # Maximale Anzahl Aufträge
	                    min_number_signatures = 1, # Anzahl Signaturen mindestens
	                    security_class = fints.formals.SecurityClass.AUTH, # Sicherheitsklasse: Sicherheitsdienst 'Authentikation'
	                    parameter = fints.formals.ParameterTwostepTAN6(
	                            onestep_method_allowed = True,
	                            multiple_tasks_allowed = False,
	                            task_hash_algorithm = fints.formals.TaskHashAlgorithm.NONE, # Auftrags-Hashwertverfahren: Auftrags-Hashwert nicht unterstützt
	                            twostep_parameters = [
	                                        fints.formals.TwoStepParameters6(
	                                            security_function = '910', # Sicherheitsfunktion kodiert
	                                            tan_process = '2', # TAN-Prozess
	                                            tech_id = 'HHD1.3.0', # Technische Identifikation TAN-Verfahren
	                                            zka_id = None, # ZKA TAN-Verfahren
	                                            zka_version = None, # Version ZKA TAN-Verfahren
	                                            name = 'chipTAN manuell', # Name des Zwei-Schritt-Verfahrens
	                                            max_length_input = 6, # Maximale Länge des Eingabewertes im Zwei-Schritt-Verfahren
	                                            allowed_format = fints.formals.AllowedFormat.NUMERIC, # Erlaubtes Format im Zwei-Schritt-Verfahren: numerisch
	                                            text_return_value = 'TAN-Nummer', # Text zur Belegung des Rückgabewertes im Zwei-Schritt-Verfahren
	                                            max_length_return_value = 3, # Maximale Länge des Rückgabewertes im Zwei-Schritt-Verfahren
	                                            multiple_tans_allowed = True, # Mehrfach-TAN erlaubt
	                                            tan_time_dialog_association = fints.formals.TANTimeDialogAssociation.ALLOWED, # TAN Zeit- und Dialogbezug: TAN zeitversetzt / dialogübergreifend erlaubt
	                                            cancel_allowed = False, # Auftragsstorno erlaubt
	                                            sms_charge_account_required = fints.formals.SMSChargeAccountRequired.MUST_NOT, # SMS-Abbuchungskonto erforderlich: SMS-Abbuchungskonto darf nicht angegeben werden
	                                            principal_account_required = fints.formals.PrincipalAccountRequired.MUST_NOT, # Auftraggeberkonto erforderlich: Auftraggeberkonto darf nicht angegeben werden
	                                            challenge_class_required = False, # Challenge-Klasse erforderlich
	                                            challenge_structured = False, # Challenge strukturiert
	                                            initialization_mode = fints.formals.InitializationMode.CLEARTEXT_PIN_NO_TAN, # Initialisierungsmodus: Initialisierungsverfahren mit Klartext-PIN und ohne TAN
	                                            description_required = fints.formals.DescriptionRequired.MUST_NOT, # Bezeichnung des TAN-Medium erforderlich: Bezeichnung des TAN-Mediums darf nicht angegeben werden
	                                            response_hhd_uc_required = False, # Antwort HHD_UC erforderlich
	                                            supported_media_number = 1, # Anzahl unterstützter aktiver TAN-Medien
	                                        ),
	                                        fints.formals.TwoStepParameters6(
	                                            security_function = '911', # Sicherheitsfunktion kodiert
	                                            tan_process = '2', # TAN-Prozess
	                                            tech_id = 'HHD1.3.2OPT', # Technische Identifikation TAN-Verfahren
	                                            zka_id = 'HHDOPT1', # ZKA TAN-Verfahren
	                                            zka_version = '1.3.2', # Version ZKA TAN-Verfahren
	                                            name = 'chipTAN optisch', # Name des Zwei-Schritt-Verfahrens
	                                            max_length_input = 6, # Maximale Länge des Eingabewertes im Zwei-Schritt-Verfahren
	                                            allowed_format = fints.formals.AllowedFormat.NUMERIC, # Erlaubtes Format im Zwei-Schritt-Verfahren: numerisch
	                                            text_return_value = 'TAN-Nummer', # Text zur Belegung des Rückgabewertes im Zwei-Schritt-Verfahren
	                                            max_length_return_value = 3, # Maximale Länge des Rückgabewertes im Zwei-Schritt-Verfahren
	                                            multiple_tans_allowed = True, # Mehrfach-TAN erlaubt
	                                            tan_time_dialog_association = fints.formals.TANTimeDialogAssociation.ALLOWED, # TAN Zeit- und Dialogbezug: TAN zeitversetzt / dialogübergreifend erlaubt
	                                            cancel_allowed = False, # Auftragsstorno erlaubt
	                                            sms_charge_account_required = fints.formals.SMSChargeAccountRequired.MUST_NOT, # SMS-Abbuchungskonto erforderlich: SMS-Abbuchungskonto darf nicht angegeben werden
	                                            principal_account_required = fints.formals.PrincipalAccountRequired.MUST_NOT, # Auftraggeberkonto erforderlich: Auftraggeberkonto darf nicht angegeben werden
	                                            challenge_class_required = False, # Challenge-Klasse erforderlich
	                                            challenge_structured = False, # Challenge strukturiert
	                                            initialization_mode = fints.formals.InitializationMode.CLEARTEXT_PIN_NO_TAN, # Initialisierungsmodus: Initialisierungsverfahren mit Klartext-PIN und ohne TAN
	                                            description_required = fints.formals.DescriptionRequired.MUST_NOT, # Bezeichnung des TAN-Medium erforderlich: Bezeichnung des TAN-Mediums darf nicht angegeben werden
	                                            response_hhd_uc_required = False, # Antwort HHD_UC erforderlich
	                                            supported_media_number = 1, # Anzahl unterstützter aktiver TAN-Medien
	                                        ),
	                                        fints.formals.TwoStepParameters6(
	                                            security_function = '912', # Sicherheitsfunktion kodiert
	                                            tan_process = '2', # TAN-Prozess
	                                            tech_id = 'HHD1.3.2USB', # Technische Identifikation TAN-Verfahren
	                                            zka_id = 'HHDUSB1', # ZKA TAN-Verfahren
	                                            zka_version = '1.3.2', # Version ZKA TAN-Verfahren
	                                            name = 'chipTAN-USB', # Name des Zwei-Schritt-Verfahrens
	                                            max_length_input = 6, # Maximale Länge des Eingabewertes im Zwei-Schritt-Verfahren
	                                            allowed_format = fints.formals.AllowedFormat.NUMERIC, # Erlaubtes Format im Zwei-Schritt-Verfahren: numerisch
	                                            text_return_value = 'TAN-Nummer', # Text zur Belegung des Rückgabewertes im Zwei-Schritt-Verfahren
	                                            max_length_return_value = 3, # Maximale Länge des Rückgabewertes im Zwei-Schritt-Verfahren
	                                            multiple_tans_allowed = True, # Mehrfach-TAN erlaubt
	                                            tan_time_dialog_association = fints.formals.TANTimeDialogAssociation.ALLOWED, # TAN Zeit- und Dialogbezug: TAN zeitversetzt / dialogübergreifend erlaubt
	                                            cancel_allowed = False, # Auftragsstorno erlaubt
	                                            sms_charge_account_required = fints.formals.SMSChargeAccountRequired.MUST_NOT, # SMS-Abbuchungskonto erforderlich: SMS-Abbuchungskonto darf nicht angegeben werden
	                                            principal_account_required = fints.formals.PrincipalAccountRequired.MUST_NOT, # Auftraggeberkonto erforderlich: Auftraggeberkonto darf nicht angegeben werden
	                                            challenge_class_required = False, # Challenge-Klasse erforderlich
	                                            challenge_structured = False, # Challenge strukturiert
	                                            initialization_mode = fints.formals.InitializationMode.CLEARTEXT_PIN_NO_TAN, # Initialisierungsmodus: Initialisierungsverfahren mit Klartext-PIN und ohne TAN
	                                            description_required = fints.formals.DescriptionRequired.MUST_NOT, # Bezeichnung des TAN-Medium erforderlich: Bezeichnung des TAN-Mediums darf nicht angegeben werden
	                                            response_hhd_uc_required = False, # Antwort HHD_UC erforderlich
	                                            supported_media_number = 1, # Anzahl unterstützter aktiver TAN-Medien
	                                        ),
	                                        fints.formals.TwoStepParameters6(
	                                            security_function = '913', # Sicherheitsfunktion kodiert
	                                            tan_process = '2', # TAN-Prozess
	                                            tech_id = 'Q1S', # Technische Identifikation TAN-Verfahren
	                                            zka_id = 'Secoder_UC', # ZKA TAN-Verfahren
	                                            zka_version = '1.2.0', # Version ZKA TAN-Verfahren
	                                            name = 'chipTAN-QR', # Name des Zwei-Schritt-Verfahrens
	                                            max_length_input = 6, # Maximale Länge des Eingabewertes im Zwei-Schritt-Verfahren
	                                            allowed_format = fints.formals.AllowedFormat.NUMERIC, # Erlaubtes Format im Zwei-Schritt-Verfahren: numerisch
	                                            text_return_value = 'TAN-Nummer', # Text zur Belegung des Rückgabewertes im Zwei-Schritt-Verfahren
	                                            max_length_return_value = 3, # Maximale Länge des Rückgabewertes im Zwei-Schritt-Verfahren
	                                            multiple_tans_allowed = True, # Mehrfach-TAN erlaubt
	                                            tan_time_dialog_association = fints.formals.TANTimeDialogAssociation.ALLOWED, # TAN Zeit- und Dialogbezug: TAN zeitversetzt / dialogübergreifend erlaubt
	                                            cancel_allowed = False, # Auftragsstorno erlaubt
	                                            sms_charge_account_required = fints.formals.SMSChargeAccountRequired.MUST_NOT, # SMS-Abbuchungskonto erforderlich: SMS-Abbuchungskonto darf nicht angegeben werden
	                                            principal_account_required = fints.formals.PrincipalAccountRequired.MUST_NOT, # Auftraggeberkonto erforderlich: Auftraggeberkonto darf nicht angegeben werden
	                                            challenge_class_required = False, # Challenge-Klasse erforderlich
	                                            challenge_structured = False, # Challenge strukturiert
	                                            initialization_mode = fints.formals.InitializationMode.CLEARTEXT_PIN_NO_TAN, # Initialisierungsmodus: Initialisierungsverfahren mit Klartext-PIN und ohne TAN
	                                            description_required = fints.formals.DescriptionRequired.MUST_NOT, # Bezeichnung des TAN-Medium erforderlich: Bezeichnung des TAN-Mediums darf nicht angegeben werden
	                                            response_hhd_uc_required = False, # Antwort HHD_UC erforderlich
	                                            supported_media_number = 1, # Anzahl unterstützter aktiver TAN-Medien
	                                        ),
	                                        fints.formals.TwoStepParameters6(
	                                            security_function = '920', # Sicherheitsfunktion kodiert
	                                            tan_process = '2', # TAN-Prozess
	                                            tech_id = 'smsTAN', # Technische Identifikation TAN-Verfahren
	                                            zka_id = None, # ZKA TAN-Verfahren
	                                            zka_version = None, # Version ZKA TAN-Verfahren
	                                            name = 'smsTAN', # Name des Zwei-Schritt-Verfahrens
	                                            max_length_input = 6, # Maximale Länge des Eingabewertes im Zwei-Schritt-Verfahren
	                                            allowed_format = fints.formals.AllowedFormat.NUMERIC, # Erlaubtes Format im Zwei-Schritt-Verfahren: numerisch
	                                            text_return_value = 'TAN-Nummer', # Text zur Belegung des Rückgabewertes im Zwei-Schritt-Verfahren
	                                            max_length_return_value = 3, # Maximale Länge des Rückgabewertes im Zwei-Schritt-Verfahren
	                                            multiple_tans_allowed = True, # Mehrfach-TAN erlaubt
	                                            tan_time_dialog_association = fints.formals.TANTimeDialogAssociation.ALLOWED, # TAN Zeit- und Dialogbezug: TAN zeitversetzt / dialogübergreifend erlaubt
	                                            cancel_allowed = False, # Auftragsstorno erlaubt
	                                            sms_charge_account_required = fints.formals.SMSChargeAccountRequired.MUST_NOT, # SMS-Abbuchungskonto erforderlich: SMS-Abbuchungskonto darf nicht angegeben werden
	                                            principal_account_required = fints.formals.PrincipalAccountRequired.MUST_NOT, # Auftraggeberkonto erforderlich: Auftraggeberkonto darf nicht angegeben werden
	                                            challenge_class_required = False, # Challenge-Klasse erforderlich
	                                            challenge_structured = False, # Challenge strukturiert
	                                            initialization_mode = fints.formals.InitializationMode.CLEARTEXT_PIN_NO_TAN, # Initialisierungsmodus: Initialisierungsverfahren mit Klartext-PIN und ohne TAN
	                                            description_required = fints.formals.DescriptionRequired.MUST, # Bezeichnung des TAN-Medium erforderlich: Bezeichnung des TAN-Mediums muss angegeben werden
	                                            response_hhd_uc_required = False, # Antwort HHD_UC erforderlich
	                                            supported_media_number = 5, # Anzahl unterstützter aktiver TAN-Medien
	                                        ),
	                                        fints.formals.TwoStepParameters6(
	                                            security_function = '921', # Sicherheitsfunktion kodiert
	                                            tan_process = '2', # TAN-Prozess
	                                            tech_id = 'pushTAN', # Technische Identifikation TAN-Verfahren
	                                            zka_id = None, # ZKA TAN-Verfahren
	                                            zka_version = None, # Version ZKA TAN-Verfahren
	                                            name = 'pushTAN', # Name des Zwei-Schritt-Verfahrens
	                                            max_length_input = 6, # Maximale Länge des Eingabewertes im Zwei-Schritt-Verfahren
	                                            allowed_format = fints.formals.AllowedFormat.NUMERIC, # Erlaubtes Format im Zwei-Schritt-Verfahren: numerisch
	                                            text_return_value = 'TAN-Nummer', # Text zur Belegung des Rückgabewertes im Zwei-Schritt-Verfahren
	                                            max_length_return_value = 3, # Maximale Länge des Rückgabewertes im Zwei-Schritt-Verfahren
	                                            multiple_tans_allowed = True, # Mehrfach-TAN erlaubt
	                                            tan_time_dialog_association = fints.formals.TANTimeDialogAssociation.ALLOWED, # TAN Zeit- und Dialogbezug: TAN zeitversetzt / dialogübergreifend erlaubt
	                                            cancel_allowed = False, # Auftragsstorno erlaubt
	                                            sms_charge_account_required = fints.formals.SMSChargeAccountRequired.MUST_NOT, # SMS-Abbuchungskonto erforderlich: SMS-Abbuchungskonto darf nicht angegeben werden
	                                            principal_account_required = fints.formals.PrincipalAccountRequired.MUST_NOT, # Auftraggeberkonto erforderlich: Auftraggeberkonto darf nicht angegeben werden
	                                            challenge_class_required = False, # Challenge-Klasse erforderlich
	                                            challenge_structured = False, # Challenge strukturiert
	                                            initialization_mode = fints.formals.InitializationMode.CLEARTEXT_PIN_NO_TAN, # Initialisierungsmodus: Initialisierungsverfahren mit Klartext-PIN und ohne TAN
	                                            description_required = fints.formals.DescriptionRequired.MUST, # Bezeichnung des TAN-Medium erforderlich: Bezeichnung des TAN-Mediums muss angegeben werden
	                                            response_hhd_uc_required = False, # Antwort HHD_UC erforderlich
	                                            supported_media_number = 2, # Anzahl unterstützter aktiver TAN-Medien
	                                        ),
	                                        fints.formals.TwoStepParameters6(
	                                            security_function = '900', # Sicherheitsfunktion kodiert
	                                            tan_process = '2', # TAN-Prozess
	                                            tech_id = 'iTAN', # Technische Identifikation TAN-Verfahren
	                                            zka_id = None, # ZKA TAN-Verfahren
	                                            zka_version = None, # Version ZKA TAN-Verfahren
	                                            name = 'iTAN', # Name des Zwei-Schritt-Verfahrens
	                                            max_length_input = 6, # Maximale Länge des Eingabewertes im Zwei-Schritt-Verfahren
	                                            allowed_format = fints.formals.AllowedFormat.NUMERIC, # Erlaubtes Format im Zwei-Schritt-Verfahren: numerisch
	                                            text_return_value = 'TAN-Nummer', # Text zur Belegung des Rückgabewertes im Zwei-Schritt-Verfahren
	                                            max_length_return_value = 3, # Maximale Länge des Rückgabewertes im Zwei-Schritt-Verfahren
	                                            multiple_tans_allowed = True, # Mehrfach-TAN erlaubt
	                                            tan_time_dialog_association = fints.formals.TANTimeDialogAssociation.ALLOWED, # TAN Zeit- und Dialogbezug: TAN zeitversetzt / dialogübergreifend erlaubt
	                                            cancel_allowed = False, # Auftragsstorno erlaubt
	                                            sms_charge_account_required = fints.formals.SMSChargeAccountRequired.MUST_NOT, # SMS-Abbuchungskonto erforderlich: SMS-Abbuchungskonto darf nicht angegeben werden
	                                            principal_account_required = fints.formals.PrincipalAccountRequired.MUST_NOT, # Auftraggeberkonto erforderlich: Auftraggeberkonto darf nicht angegeben werden
	                                            challenge_class_required = False, # Challenge-Klasse erforderlich
	                                            challenge_structured = False, # Challenge strukturiert
	                                            initialization_mode = fints.formals.InitializationMode.CLEARTEXT_PIN_NO_TAN, # Initialisierungsmodus: Initialisierungsverfahren mit Klartext-PIN und ohne TAN
	                                            description_required = fints.formals.DescriptionRequired.MUST_NOT, # Bezeichnung des TAN-Medium erforderlich: Bezeichnung des TAN-Mediums darf nicht angegeben werden
	                                            response_hhd_uc_required = False, # Antwort HHD_UC erforderlich
	                                            supported_media_number = 0, # Anzahl unterstützter aktiver TAN-Medien
	                                        ),
	                                ],
	                        ),
	                ),
	                fints.segments.base.FinTS3Segment(
	                    header = fints.formals.SegmentHeader('HITANS', 170, 7, 4), # Segmentkopf
	                    _additional_data = ['1', '1', '1', ['N', 'N', '0', '922', '2', 'pushTAN-dec', 'Decoupled', None, 'pushTAN 2.0', None, None, 'Aufforderung', '2048', 'J', '2', 'N', '0', '0', 'N', 'N', '00', '2', 'N', '2', '180', '1', '1', 'J', 'J', '923', '2', 'pushTAN-cas', 'Decoupled', None, 'pushTAN 2.0', None, None, 'Aufforderung', '2048', 'J', '2', 'N', '0', '0', 'N', 'N', '00', '2', 'N', '5', '180', '1', '1', 'J', 'J']],
	                ),
	                fints.segments.auth.HIPINS1( # PIN/TAN-spezifische Informationen, version 1
	                    header = fints.formals.SegmentHeader('HIPINS', 171, 1, 4), # Segmentkopf
	                    max_number_tasks = 1, # Maximale Anzahl Aufträge
	                    min_number_signatures = 1, # Anzahl Signaturen mindestens
	                    security_class = fints.formals.SecurityClass.NONE, # Sicherheitsklasse: Kein Sicherheitsdienst erforderlich
	                    parameter = fints.formals.ParameterPinTan( # Parameter PIN/TAN-spezifische Informationen
	                            min_pin_length = 5,
	                            max_pin_length = 38,
	                            max_tan_length = 6,
	                            user_id_field_text = 'USERID',
	                            customer_id_field_text = 'CUSTID',
	                            transaction_tans_required = [
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKCSU',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKPKB',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKPKA',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKSAL',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKPCR',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKPWE',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKPWL',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKPWB',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKPWA',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKBMB',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKDML',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKBML',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKDMB',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKIPZ',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKIPS',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKWOK',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKWDH',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKBVE',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKPTZ',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKEEA',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKALE',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKALL',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKALN',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKANA',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKANL',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKBAZ',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKBKD',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKBKU',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKBUM',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKBVA',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKBVB',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKBVD',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKBVK',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKBVP',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKBVR',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKBVS',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKDFA',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKDFB',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKDFC',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKDFD',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKDFL',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKDFU',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKDIH',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKDFS',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKDDI',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKDFO',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKDFP',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKDPF',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKDFE',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKDEF',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKDOF',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKFAF',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKGBA',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKGBS',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKKAU',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKKKA',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKKKS',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKKKU',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKPAE',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKPSA',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKPSP',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKQUO',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKQUT',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKTLA',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKTLF',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKTSP',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKVVD',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKVVU',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKWAP',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKWDG',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKWGV',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKWLV',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKNZP',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKFOP',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKFPO',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKWOP',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKWVB',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKZDF',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'DKZDL',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKAUB',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKBME',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKBSE',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKCAZ',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKCCM',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKCCS',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKCDB',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKCDE',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKCDL',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKCDN',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKCDU',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKCMB',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKCME',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKCML',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKCSA',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKCSB',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKCSE',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKCSL',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKCUB',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKCUM',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKDME',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKDSB',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKDSE',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKDSW',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKEKA',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKEKP',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKFGB',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKFRD',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKKAZ',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKKDM',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKKIF',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKMTA',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKMTF',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKMTR',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKNEA',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKNEZ',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKWFO',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKWPO',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKWSD',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKFPO',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKPAE',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKPPD',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKQTG',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKSPA',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKIPE',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKIPM',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKISS',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKTAB',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKTAU',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKTAZ',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKTML',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKTSY',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKWDU',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKWFP',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKWOA',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKWPD',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKWPR',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKWPS',
	                                            tan_required = True,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKWSO',
	                                            tan_required = False,
	                                        ),
	                                        fints.formals.TransactionTanRequired(
	                                            transaction = 'HKTAN',
	                                            tan_required = False,
	                                        ),
	                                ],
	                        ),
	                ),
	                fints.segments.dialog.HISYN4( # Synchronisierungsantwort
	                    header = fints.formals.SegmentHeader('HISYN', 172, 4, 5), # Segmentkopf
	                    system_id = '18d105370282417086c6b3761baae9', # Kundensystem-ID
	                ),
	                fints.segments.message.HNSHA2( # Signaturabschluss, version 2
	                    header = fints.formals.SegmentHeader('HNSHA', 173, 2), # Segmentkopf
	                    security_reference = '7980934', # Sicherheitskontrollreferenz
	                ),
	            ]),
	    ),
	    fints.segments.message.HNHBS1( # Nachrichtenabschluss
	        header = fints.formals.SegmentHeader('HNHBS', 174, 1), # Segmentkopf
	        message_number = 1, # Nachrichtennummer
	    ),
	])

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

DEBUG:fints.connection:Sending >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	fints.message.FinTSCustomerMessage([
	    fints.segments.message.HNHBK3( # Nachrichtenkopf
	        header = fints.formals.SegmentHeader('HNHBK', 1, 3), # Segmentkopf
	        message_size = 427, # Größe der Nachricht (nach Verschlüsselung und Komprimierung)
	        hbci_version = 300, # HBCI-Version
	        dialog_id = '915348896396=747655803543CN8H=', # Dialog-ID
	        message_number = 2, # Nachrichtennummer
	    ),
	    fints.segments.message.HNVSK3( # Verschlüsselungskopf, version 3
	        header = fints.formals.SegmentHeader('HNVSK', 998, 3), # Segmentkopf
	        security_profile = fints.formals.SecurityProfile( # Sicherheitsprofil
	                security_method = fints.formals.SecurityMethod.PIN, # Sicherheitsverfahren
	                security_method_version = 1, # Version des Sicherheitsverfahrens
	            ),
	        security_function = '998', # Sicherheitsfunktion, kodiert
	        security_role = fints.formals.SecurityRole.ISS, # Rolle des Sicherheitslieferanten, kodiert: Erfasser, Erstsignatur
	        security_identification_details = fints.formals.SecurityIdentificationDetails( # Sicherheitsidentifikation, Details
	                identified_role = fints.formals.IdentifiedRole.MS, # Message Sender
	                cid = None,
	                identifier = '18d105370282417086c6b3761baae9',
	            ),
	        security_datetime = fints.formals.SecurityDateTime( # Sicherheitsdatum und -uhrzeit
	                date_time_type = fints.formals.DateTimeType.STS, # Sicherheitszeitstempel
	                date = datetime.date(2023, 12, 11),
	                time = datetime.time(15, 2, 37, 170645),
	            ),
	        encryption_algorithm = fints.formals.EncryptionAlgorithm( # Verschlüsselungsalgorithmus
	                usage_encryption = fints.formals.UsageEncryption.OSY, # Owner Symmetric
	                operation_mode = fints.formals.OperationMode.CBC, # Cipher Block Chaining
	                encryption_algorithm = fints.formals.EncryptionAlgorithmCoded.TWOKEY3DES, # 2-Key-Triple-DES
	                algorithm_parameter_value = b'\x00\x00\x00\x00\x00\x00\x00\x00',
	                algorithm_parameter_name = fints.formals.AlgorithmParameterName.KYE, # Symmetrischer Schlüssel, verschlüsselt mit symmetrischem Schlüssel
	                algorithm_parameter_iv_name = fints.formals.AlgorithmParameterIVName.IVC, # Initialization value, clear text
	            ),
	        key_name = fints.formals.KeyName( # Schlüsselname
	                bank_identifier = fints.formals.BankIdentifier(
	                        country_identifier = '280',
	                        bank_code = '80053762',
	                    ),
	                user_id = 'MatthiasSchulz',
	                key_type = fints.formals.KeyType.V, # Schlüsselart: Chiffrierschlüssel
	                key_number = 0,
	                key_version = 0,
	            ),
	        compression_function = fints.formals.CompressionFunction.NULL, # Komprimierungsfunktion: Keine Kompression
	    ),
	    fints.segments.message.HNVSD1( # Verschlüsselte Daten, version 1
	        header = fints.formals.SegmentHeader('HNVSD', 999, 1), # Segmentkopf
	        data = fints.types.SegmentSequence([ # Daten, verschlüsselt
	                fints.segments.message.HNSHK4( # Signaturkopf, version 4
	                    header = fints.formals.SegmentHeader('HNSHK', 2, 4), # Segmentkopf
	                    security_profile = fints.formals.SecurityProfile( # Sicherheitsprofil
	                            security_method = fints.formals.SecurityMethod.PIN, # Sicherheitsverfahren
	                            security_method_version = 1, # Version des Sicherheitsverfahrens
	                        ),
	                    security_function = '999', # Sicherheitsfunktion, kodiert
	                    security_reference = '4656607', # Sicherheitskontrollreferenz
	                    security_application_area = fints.formals.SecurityApplicationArea.SHM, # Bereich der Sicherheitsapplikation, kodiert: Signaturkopf und HBCI-Nutzdaten
	                    security_role = fints.formals.SecurityRole.ISS, # Rolle des Sicherheitslieferanten, kodiert: Erfasser, Erstsignatur
	                    security_identification_details = fints.formals.SecurityIdentificationDetails( # Sicherheitsidentifikation, Details
	                            identified_role = fints.formals.IdentifiedRole.MS, # Message Sender
	                            cid = None,
	                            identifier = '18d105370282417086c6b3761baae9',
	                        ),
	                    security_reference_number = 1, # Sicherheitsreferenznummer
	                    security_datetime = fints.formals.SecurityDateTime( # Sicherheitsdatum und -uhrzeit
	                            date_time_type = fints.formals.DateTimeType.STS, # Sicherheitszeitstempel
	                            date = datetime.date(2023, 12, 11),
	                            time = datetime.time(15, 2, 37, 169712),
	                        ),
	                    hash_algorithm = fints.formals.HashAlgorithm( # Hashalgorithmus
	                            usage_hash = '1',
	                            hash_algorithm = '999',
	                            algorithm_parameter_name = '1',
	                        ),
	                    signature_algorithm = fints.formals.SignatureAlgorithm( # Signaturalgorithmus
	                            usage_signature = '6',
	                            signature_algorithm = '10',
	                            operation_mode = '16',
	                        ),
	                    key_name = fints.formals.KeyName( # Schlüsselname
	                            bank_identifier = fints.formals.BankIdentifier(
	                                    country_identifier = '280',
	                                    bank_code = '80053762',
	                                ),
	                            user_id = 'MatthiasSchulz',
	                            key_type = fints.formals.KeyType.S, # Schlüsselart: Signierschlüssel
	                            key_number = 0,
	                            key_version = 0,
	                        ),
	                ),
	                fints.segments.dialog.HKEND1( # Dialogende, version 1
	                    header = fints.formals.SegmentHeader('HKEND', 3, 1), # Segmentkopf
	                    dialog_id = '915348896396=747655803543CN8H=', # Dialog-ID
	                ),
	                fints.segments.message.HNSHA2( # Signaturabschluss, version 2
	                    header = fints.formals.SegmentHeader('HNSHA', 4, 2), # Segmentkopf
	                    security_reference = '4656607', # Sicherheitskontrollreferenz
	                    user_defined_signature = fints.formals.UserDefinedSignature( # Benutzerdefinierte Signatur
	                            pin = '***',
	                        ),
	                ),
	            ]),
	    ),
	    fints.segments.message.HNHBS1( # Nachrichtenabschluss
	        header = fints.formals.SegmentHeader('HNHBS', 5, 1), # Segmentkopf
	        message_number = 2, # Nachrichtennummer
	    ),
	])

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): banking-st5.s-fints-pt-st.de:443
DEBUG:urllib3.connectionpool:https://banking-st5.s-fints-pt-st.de:443 "POST /fints30 HTTP/1.1" 200 610
DEBUG:fints.connection:Received <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
	fints.message.FinTSInstituteMessage([
	    fints.segments.message.HNHBK3( # Nachrichtenkopf
	        header = fints.formals.SegmentHeader('HNHBK', 1, 3), # Segmentkopf
	        message_size = 446, # Größe der Nachricht (nach Verschlüsselung und Komprimierung)
	        hbci_version = 300, # HBCI-Version
	        dialog_id = '915348896396=747655803543CN8H=', # Dialog-ID
	        message_number = 2, # Nachrichtennummer
	        reference_message = fints.formals.ReferenceMessage( # Bezugsnachricht
	                dialog_id = '915348896396=747655803543CN8H=',
	                message_number = 2,
	            ),
	    ),
	    fints.segments.message.HNVSK3( # Verschlüsselungskopf, version 3
	        header = fints.formals.SegmentHeader('HNVSK', 998, 3), # Segmentkopf
	        security_profile = fints.formals.SecurityProfile( # Sicherheitsprofil
	                security_method = fints.formals.SecurityMethod.PIN, # Sicherheitsverfahren
	                security_method_version = 1, # Version des Sicherheitsverfahrens
	            ),
	        security_function = '998', # Sicherheitsfunktion, kodiert
	        security_role = fints.formals.SecurityRole.ISS, # Rolle des Sicherheitslieferanten, kodiert: Erfasser, Erstsignatur
	        security_identification_details = fints.formals.SecurityIdentificationDetails( # Sicherheitsidentifikation, Details
	                identified_role = fints.formals.IdentifiedRole.MR, # Message Receiver
	                cid = None,
	                identifier = '18d105370282417086c6b3761baae9',
	            ),
	        security_datetime = fints.formals.SecurityDateTime( # Sicherheitsdatum und -uhrzeit
	                date_time_type = fints.formals.DateTimeType.STS, # Sicherheitszeitstempel
	            ),
	        encryption_algorithm = fints.formals.EncryptionAlgorithm( # Verschlüsselungsalgorithmus
	                usage_encryption = fints.formals.UsageEncryption.OSY, # Owner Symmetric
	                operation_mode = fints.formals.OperationMode.CBC, # Cipher Block Chaining
	                encryption_algorithm = fints.formals.EncryptionAlgorithmCoded.TWOKEY3DES, # 2-Key-Triple-DES
	                algorithm_parameter_value = b'\x00\x00\x00\x00\x00\x00\x00\x00',
	                algorithm_parameter_name = fints.formals.AlgorithmParameterName.KYE, # Symmetrischer Schlüssel, verschlüsselt mit symmetrischem Schlüssel
	                algorithm_parameter_iv_name = fints.formals.AlgorithmParameterIVName.IVC, # Initialization value, clear text
	            ),
	        key_name = fints.formals.KeyName( # Schlüsselname
	                bank_identifier = fints.formals.BankIdentifier(
	                        country_identifier = '280',
	                        bank_code = '80053762',
	                    ),
	                user_id = 'MatthiasSchulz',
	                key_type = fints.formals.KeyType.V, # Schlüsselart: Chiffrierschlüssel
	                key_number = 0,
	                key_version = 0,
	            ),
	        compression_function = fints.formals.CompressionFunction.NULL, # Komprimierungsfunktion: Keine Kompression
	    ),
	    fints.segments.message.HNVSD1( # Verschlüsselte Daten, version 1
	        header = fints.formals.SegmentHeader('HNVSD', 999, 1), # Segmentkopf
	        data = fints.types.SegmentSequence([ # Daten, verschlüsselt
	                fints.segments.message.HNSHK4( # Signaturkopf, version 4
	                    header = fints.formals.SegmentHeader('HNSHK', 2, 4), # Segmentkopf
	                    security_profile = fints.formals.SecurityProfile( # Sicherheitsprofil
	                            security_method = fints.formals.SecurityMethod.PIN, # Sicherheitsverfahren
	                            security_method_version = 1, # Version des Sicherheitsverfahrens
	                        ),
	                    security_function = '999', # Sicherheitsfunktion, kodiert
	                    security_reference = '4656607', # Sicherheitskontrollreferenz
	                    security_application_area = fints.formals.SecurityApplicationArea.SHM, # Bereich der Sicherheitsapplikation, kodiert: Signaturkopf und HBCI-Nutzdaten
	                    security_role = fints.formals.SecurityRole.ISS, # Rolle des Sicherheitslieferanten, kodiert: Erfasser, Erstsignatur
	                    security_identification_details = fints.formals.SecurityIdentificationDetails( # Sicherheitsidentifikation, Details
	                            identified_role = fints.formals.IdentifiedRole.MR, # Message Receiver
	                            cid = None,
	                            identifier = '18d105370282417086c6b3761baae9',
	                        ),
	                    security_reference_number = 1, # Sicherheitsreferenznummer
	                    security_datetime = fints.formals.SecurityDateTime( # Sicherheitsdatum und -uhrzeit
	                            date_time_type = fints.formals.DateTimeType.STS, # Sicherheitszeitstempel
	                        ),
	                    hash_algorithm = fints.formals.HashAlgorithm( # Hashalgorithmus
	                            usage_hash = '1',
	                            hash_algorithm = '999',
	                            algorithm_parameter_name = '1',
	                        ),
	                    signature_algorithm = fints.formals.SignatureAlgorithm( # Signaturalgorithmus
	                            usage_signature = '6',
	                            signature_algorithm = '10',
	                            operation_mode = '16',
	                        ),
	                    key_name = fints.formals.KeyName( # Schlüsselname
	                            bank_identifier = fints.formals.BankIdentifier(
	                                    country_identifier = '280',
	                                    bank_code = '80053762',
	                                ),
	                            user_id = 'MatthiasSchulz',
	                            key_type = fints.formals.KeyType.S, # Schlüsselart: Signierschlüssel
	                            key_number = 0,
	                            key_version = 0,
	                        ),
	                ),
	                fints.segments.dialog.HIRMG2( # Rückmeldungen zur Gesamtnachricht
	                    header = fints.formals.SegmentHeader('HIRMG', 3, 2), # Segmentkopf
	                    responses = [ # Rückmeldung
	                                fints.formals.Response( # Rückmeldung
	                                    code = '0010',
	                                    reference_element = None,
	                                    text = 'Nachricht entgegengenommen.',
	                                ),
	                                fints.formals.Response( # Rückmeldung
	                                    code = '0100',
	                                    reference_element = None,
	                                    text = 'Dialog beendet.',
	                                ),
	                        ],
	                ),
	                fints.segments.message.HNSHA2( # Signaturabschluss, version 2
	                    header = fints.formals.SegmentHeader('HNSHA', 4, 2), # Segmentkopf
	                    security_reference = '4656607', # Sicherheitskontrollreferenz
	                ),
	            ]),
	    ),
	    fints.segments.message.HNHBS1( # Nachrichtenabschluss
	        header = fints.formals.SegmentHeader('HNHBS', 5, 1), # Segmentkopf
	        message_number = 2, # Nachrichtennummer
	    ),
	])

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Traceback (most recent call last):
  File "/home/verwaltung/deployment/work/portal/test_sk.py", line 21, in <module>
    minimal_interactive_cli_bootstrap(f)
  File "/home/verwaltung/deployment/work/portal/lib/python3.10/site-packages/fints/utils.py", line 319, in minimal_interactive_cli_bootstrap
    if client.is_tan_media_required() and not client.selected_tan_medium:
  File "/home/verwaltung/deployment/work/portal/lib/python3.10/site-packages/fints/client.py", line 1180, in is_tan_media_required
    tan_mechanism = self.get_tan_mechanisms()[self.get_current_tan_mechanism()]
KeyError: '999'

@Julzk
Copy link

Julzk commented Dec 11, 2023

Yes, I get the same error. I was able to narrow down the problem somewhat: it occurs at sparkasse that have switched to bpd_version 13. I still have access to sparkasse that work with bpd_vesion 12, so it still works.

They only give 923 as allowed_security_functions. but this is no longer found.
image

@sweh
Copy link
Author

sweh commented Dec 13, 2023

Hi there,

I can confirm @Julzk findings: I still have access to another working account and when I put the debug output of the fints library side by side, the only key difference is the approved two-step procedures returned for the user. Working: 921, 922, not working: 923.

diff

Does the fints library need an update here?

Best regards,
Sebastian

@sweh
Copy link
Author

sweh commented Dec 13, 2023

This seems to be about the possible TAN authentications, at least that's what I can see from the log:

922: pushTAN-dec (working)
923: pushTAN-cas (not working)

What's the difference here and can you possibly configure this yourself in your account?

@Julzk
Copy link

Julzk commented Dec 13, 2023

now i use
https://github.com/torstenklement/libfintx
it works with 923

@sweh
Copy link
Author

sweh commented Dec 15, 2023

I just spoke on the phone to a technology employee at the savings bank. It is actually the case that the Sparkasse is currently rolling out a newer version of the pushTAN. My account (the one that works) is still on the old one, the one that doesn't work is already on the new method.

@raphaelm: Do you have the capacity to build support for the new procedure (pushTAN-cas, 923) into the library? Unfortunately, I completely lack the technical background here.

@raphaelm
Copy link
Owner

I currently don't, if I have, I will check if my Sparkasse is already part of the rollout. Adding support for something I can't test is usually too time-consuming.

@mntmn
Copy link

mntmn commented Feb 21, 2024

We also suddenly have this issue since about a week with Berliner Sparkasse. For 1-2 years it was working fine, but it suddenly broke and i also see only '923' under parameters of 'Zugelassene Zwei-Schritt-Verfahren für den Benutzer.'

@saddy001
Copy link

The same here since a week. I found some details about the pushTAN CAS standard.

Im FinTS Standard am besten mal nach HKTAN 7 und Status-Abruf schauen. Darauf beruht die ganze Magie letztlich.
Nachdem der Auftrag abgeschickt wurde wird mittels HKTAN-Statusabruf per polling oder auf Aufforderung des Kunden die asynchrone Freigabe abgefragt.
https://www.hbci-zka.de/spec/aenderungen/kk_3_0_sec_pt.htm
und speziell: https://www.hbci-zka.de/dokume…KTAN_7.pdf

Füge primär erstmal den Support für HKTAN7 hinzu. Das ist nicht so viel Aufwand, da sich gegenüber HKTAN6 nicht viel geändert hat (im Wesentlichen sind in den BPD ein paar neue Parameter für PushTAN decoupled hinzugekommen). Das Polling im Hintergrund habe ich in Hibiscus weggelassen, weil es den ganzen Prozess multi-threaded und damit deutlich komplexer gemacht hätte. Im Wesentlichen muss man nur erkennen, ob es sich um ein TAN-loses Verfahren handelt (im ZKA-Methodennamen des Verfahrens steht irgendwas mit "Decouple*". Wenn das der Fall ist, zeige ich statt dem Dialog zur Eingabe der TAN einen quasi eingabelosen Dialog an, der nur einen OK- und Abbrechen-Knopf enthält und den von der Bank übermittelten Text. Sobald der User auf "OK" klickt, gehe ich davon aus, dass der User die Freigabe in der App durchgeführt hat. Der restliche Prozess ist quasi 1:1 der selbe wie mit TAN - nur mit dem Unterschied, dass in der Nachricht nur noch die PIN geschickt wird und die TAN ein Leerstring ist.

Aufpassen muss man dann nur noch bei der TAN-Prozess-Schritten. Neben den Schritten 1,2 und 4 ist jetzt noch ein Schritt "S" hinzugekommen, der in dem Fall stattdessen verwendet wird. Finde ich etwas unglücklich, weil man den Wert jetzt nicht mehr als Integer parsen kann sondern intern als String behandeln muss.

@raphaelm
Copy link
Owner

Interesting! I have someone willing to pay me to fix that, but I'm lacking an account to test with still.

@saddy001
Copy link

If you give me a branch, I'll give you the tracebacks.

@raphaelm
Copy link
Owner

Can you have a look at #162?

@saddy001
Copy link

Checked the main branch. Throws error. Installed the branch. It works. There are only a few warnings:

pip install "git+https://github.com/raphaelm/python-fints@hktan7"

$ python test.py
Dialog response: 3060 - Bitte beachten Sie die enthaltenen Warnungen/Hinweise.
Dialog response: 3076 - Starke Kundenauthentifizierung nicht notwendig.
Dialog response: 3060 - Bitte beachten Sie die enthaltenen Warnungen/Hinweise.
Dialog response: 3076 - Starke Kundenauthentifizierung nicht notwendig.
Dialog response: 3060 - Bitte beachten Sie die enthaltenen Warnungen/Hinweise.
Dialog response: 3076 - Starke Kundenauthentifizierung nicht notwendig.
Dialog response: 3060 - Bitte beachten Sie die enthaltenen Warnungen/Hinweise.
Dialog response: 3076 - Starke Kundenauthentifizierung nicht notwendig.
Dialog response: 3060 - Bitte beachten Sie die enthaltenen Warnungen/Hinweise.
Dialog response: 3076 - Starke Kundenauthentifizierung nicht notwendig.

@sweh
Copy link
Author

sweh commented Mar 28, 2024

Nice one, will check this out soon. 👍🏻

@tloebhard
Copy link

tloebhard commented Apr 22, 2024

I also tried it - it works, thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants