Skip to content

Implement HKTAN2 #46

@henryk

Description

@henryk

IMPLEMENTED_HKTAN_VERSIONS in client.py should include HKTAN2, maybe HKTAN4.

Reason: comdirect has distinct TAN mechanisms in HITANS2 and HITANS5, and it may be that a user is only allowed a single mechanism (via HIRMS 3920) which is not in HITANS5.

                        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 = 'UPD nicht mehr aktuell, aktuelle Version enthalten.',
                                        ),
                                        fints.formals.Response( # Rückmeldung
                                            code = '3050',
                                            reference_element = None,
                                            text = 'BPD nicht mehr aktuell, aktuelle Version enthalten.',
                                        ),
                                        fints.formals.Response( # Rückmeldung
                                            code = '0020',
                                            reference_element = None,
                                            text = 'Dialog initialisiert.',
                                        ),
                                        fints.formals.Response( # Rückmeldung
                                            code = '3920',
                                            reference_element = None,
                                            text = 'Verfügbare TAN-Verfahren: iTAN.',
                                            parameters = [
                                                    '900',
                                                ],
                                        ),
                                ],
                        ),

                        fints.segments.auth.HITANS2(
                            header = fints.formals.SegmentHeader('HITANS', 29, 2, 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.ParameterTwostepTAN2(
                                    onestep_method_allowed = False,
                                    multiple_tasks_allowed = False,
                                    task_hash_algorithm = fints.formals.TaskHashAlgorithm.NONE, # Auftrags-Hashwertverfahren: Auftrags-Hashwert nicht unterstützt
                                    twostep_parameters = [
                                                fints.formals.TwoStepParameters2(
                                                    security_function = '900', # Sicherheitsfunktion kodiert
                                                    tan_process = '2', # TAN-Prozess
                                                    tech_id = 'TechnicalId', # Technische Identifikation TAN-Verfahren
                                                    name = 'iTAN-Verfahren', # 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 = 'Freigabe durch lfd. iTAN-Nr.', # 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
                                                    number_of_supported_lists = 1, # Anzahl unterstützter aktiver TAN-Listen
                                                    multiple_tans_allowed = False, # Mehrfach-TAN erlaubt
                                                    tan_time_dialog_association = fints.formals.TANTimeDialogAssociation.NOT_APPLICABLE, # TAN Zeit- und Dialogbezug: nicht zutreffend
                                                    tan_list_number_required = fints.formals.TANListNumberRequired.NO, # TAN-Listennummer erforderlich: Nein
                                                    cancel_allowed = False, # Auftragsstorno erlaubt
                                                    challenge_class_required = False, # Challenge-Klasse erforderlich
                                                    challenge_value_required = False, # Challenge-Betrag erforderlich
                                                ),
                                                fints.formals.TwoStepParameters2(
                                                    security_function = '901', # Sicherheitsfunktion kodiert
                                                    tan_process = '2', # TAN-Prozess
                                                    tech_id = 'TechnicalId901', # Technische Identifikation TAN-Verfahren
                                                    name = 'mobileTAN-Verfahren', # 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 = 'Freigabe durch mobileTAN', # Text zur Belegung des Rückgabewertes im Zwei-Schritt-Verfahren
                                                    max_length_return_value = 1, # Maximale Länge des Rückgabewertes im Zwei-Schritt-Verfahren
                                                    number_of_supported_lists = 1, # Anzahl unterstützter aktiver TAN-Listen
                                                    multiple_tans_allowed = False, # Mehrfach-TAN erlaubt
                                                    tan_time_dialog_association = fints.formals.TANTimeDialogAssociation.NOT_APPLICABLE, # TAN Zeit- und Dialogbezug: nicht zutreffend
                                                    tan_list_number_required = fints.formals.TANListNumberRequired.NO, # TAN-Listennummer erforderlich: Nein
                                                    cancel_allowed = False, # Auftragsstorno erlaubt
                                                    challenge_class_required = False, # Challenge-Klasse erforderlich
                                                    challenge_value_required = False, # Challenge-Betrag erforderlich
                                                ),
                                        ],
                                ),
                        ),
                        fints.segments.auth.HITANS5(
                            header = fints.formals.SegmentHeader('HITANS', 30, 5, 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.ParameterTwostepTAN5(
                                    onestep_method_allowed = False,
                                    multiple_tasks_allowed = False,
                                    task_hash_algorithm = fints.formals.TaskHashAlgorithm.NONE, # Auftrags-Hashwertverfahren: Auftrags-Hashwert nicht unterstützt
                                    twostep_parameters = [
                                                fints.formals.TwoStepParameters5(
                                                    security_function = '902', # Sicherheitsfunktion kodiert
                                                    tan_process = '2', # TAN-Prozess
                                                    tech_id = 'MS1.0.0', # Technische Identifikation TAN-Verfahren
                                                    zka_id = None, # ZKA TAN-Verfahren
                                                    zka_version = None, # Version ZKA TAN-Verfahren
                                                    name = 'photoTAN-Verfahren', # 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 = 'Freigabe durch photoTAN', # Text zur Belegung des Rückgabewertes im Zwei-Schritt-Verfahren
                                                    max_length_return_value = 1, # Maximale Länge des Rückgabewertes im Zwei-Schritt-Verfahren
                                                    number_of_supported_lists = 1, # Anzahl unterstützter aktiver TAN-Listen
                                                    multiple_tans_allowed = False, # Mehrfach-TAN erlaubt
                                                    tan_time_dialog_association = fints.formals.TANTimeDialogAssociation.NOT_APPLICABLE, # TAN Zeit- und Dialogbezug: nicht zutreffend
                                                    tan_list_number_required = fints.formals.TANListNumberRequired.NO, # TAN-Listennummer erforderlich: Nein
                                                    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
                                                ),
                                        ],
                                ),
                        ),

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions