From: Henryk Plötz Date: Thu, 9 Aug 2018 10:34:48 +0000 (+0200) Subject: Implement HITANS3 X-Git-Tag: v2.0.0~1^2~142 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d501b6437892d8f3565f05058e0cafe8098841d0;p=thirdparty%2Fpython-fints.git Implement HITANS3 --- diff --git a/fints/formals.py b/fints/formals.py index b95b89b..4992926 100644 --- a/fints/formals.py +++ b/fints/formals.py @@ -541,7 +541,7 @@ class AllowedTransaction(DataElementGroup): limit_amount = DataElementField(type='btg', required=False) limit_days = DataElementField(type='num', max_length=3, required=False) -class TwoStepParameters(DataElementGroup): +class TwoStepParameters1(DataElementGroup): security_function = DataElementField(type='code', max_length=3) tan_process = DataElementField(type='code', length=1) technical_identification_tan_process = DataElementField(type='id') @@ -554,9 +554,35 @@ class TwoStepParameters(DataElementGroup): multiple_tans_allowed = DataElementField(type='jn') tan_time_delayed_allowed = DataElementField(type='jn') -class ParameterTwostepTAN(DataElementGroup): +class TwoStepParameters3(DataElementGroup): + security_function = DataElementField(type='code', max_length=3) + tan_process = DataElementField(type='code', length=1) + technical_identification_tan_process = DataElementField(type='id') + name_twostep_process = DataElementField(type='an', max_length=30) + max_length_tan_entry = DataElementField(type='num', max_length=2) + allowed_format_tan_entry = DataElementField(type='code', length=1) + return_value_text = DataElementField(type='an', max_length=30) + max_length_return_value = DataElementField(type='num', max_length=3) + number_supported_tan_lists = DataElementField(type='num', length=1) + multiple_tans_allowed = DataElementField(type='jn') + tan_timedelayed_type = DataElementField(type='code', length=1) + tan_list_number_required = DataElementField(type='jn') + cancel_allowed = DataElementField(type='jn') + challenge_class_required = DataElementField(type='jn') + challenge_amount_required = DataElementField(type='jn') + initialisation_mode = DataElementField(type='code') + id_tan_medium_required = DataElementField(type='jn') + number_supported_tan_media = DataElementField(type='num', length=1, required=False) + +class ParameterTwostepTAN1(DataElementGroup): onestep_method_allowed = DataElementField(type='jn') multiple_tasks_allowed = DataElementField(type='jn') hash_algorithm = DataElementField(type='code', length=1) security_profile_bank_signature = DataElementField(type='code', length=1) - twostep_parameters = DataElementGroupField(type=TwoStepParameters, min_count=1, max_count=98) + twostep_parameters = DataElementGroupField(type=TwoStepParameters1, min_count=1, max_count=98) + +class ParameterTwostepTAN3(DataElementGroup): + onestep_method_allowed = DataElementField(type='jn') + multiple_tasks_allowed = DataElementField(type='jn') + hash_algorithm = DataElementField(type='code', length=1) + twostep_parameters = DataElementGroupField(type=TwoStepParameters3, min_count=1, max_count=98) diff --git a/fints/segments/__init__.py b/fints/segments/__init__.py index 5d1cdc0..b0e09b3 100644 --- a/fints/segments/__init__.py +++ b/fints/segments/__init__.py @@ -1,6 +1,6 @@ import re -from fints.formals import Container, ContainerMeta, SegmentHeader, DataElementGroupField, DataElementField, ReferenceMessage, SegmentSequenceField, SecurityProfile, SecurityIdentificationDetails, SecurityDateTime, EncryptionAlgorithm, KeyName, Certificate, HashAlgorithm, SignatureAlgorithm, UserDefinedSignature, Response, AccountInformation, AccountLimit, AllowedTransaction, ParameterTwostepTAN +from fints.formals import Container, ContainerMeta, SegmentHeader, DataElementGroupField, DataElementField, ReferenceMessage, SegmentSequenceField, SecurityProfile, SecurityIdentificationDetails, SecurityDateTime, EncryptionAlgorithm, KeyName, Certificate, HashAlgorithm, SignatureAlgorithm, UserDefinedSignature, Response, AccountInformation, AccountLimit, AllowedTransaction, ParameterTwostepTAN1, ParameterTwostepTAN3 from fints.utils import classproperty, SubclassesMixin @@ -138,4 +138,10 @@ class HITANS1(FinTS3Segment): max_number_tasks = DataElementField(type='num', max_length=3) min_number_signatures = DataElementField(type='num', length=1) security_class = DataElementField(type='num', length=1) - parameters_twostep_tan = DataElementGroupField(type=ParameterTwostepTAN) + parameters_twostep_tan = DataElementGroupField(type=ParameterTwostepTAN1) + +class HITANS3(FinTS3Segment): + max_number_tasks = DataElementField(type='num', max_length=3) + min_number_signatures = DataElementField(type='num', length=1) + security_class = DataElementField(type='num', length=1) + parameters_twostep_tan = DataElementGroupField(type=ParameterTwostepTAN3)