File: message.py

package info (click to toggle)
python-fints 4.0.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 700 kB
  • sloc: python: 5,021; makefile: 196
file content (75 lines) | stat: -rw-r--r-- 4,263 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
from fints.fields import (
    CodeField, DataElementField, DataElementGroupField,
    SegmentSequenceField, ZeroPaddedNumericField,
)
from fints.formals import (
    Certificate, CompressionFunction, EncryptionAlgorithm,
    HashAlgorithm, KeyName, ReferenceMessage, SecurityApplicationArea,
    SecurityDateTime, SecurityIdentificationDetails, SecurityProfile,
    SecurityRole, SignatureAlgorithm, UserDefinedSignature,
)

from .base import FinTS3Segment


class HNHBK3(FinTS3Segment):
    """Nachrichtenkopf"""
    message_size = ZeroPaddedNumericField(length=12, _d="Größe der Nachricht (nach Verschlüsselung und Komprimierung)")
    hbci_version = DataElementField(type='num', max_length=3, _d="HBCI-Version")
    dialog_id = DataElementField(type='id', _d="Dialog-ID")
    message_number = DataElementField(type='num', max_length=4, _d="Nachrichtennummer")
    reference_message = DataElementGroupField(type=ReferenceMessage, required=False, _d="Bezugsnachricht")


class HNHBS1(FinTS3Segment):
    """Nachrichtenabschluss"""
    message_number = DataElementField(type='num', max_length=4, _d="Nachrichtennummer")


class HNVSK3(FinTS3Segment):
    """Verschlüsselungskopf, version 3

    Source: FinTS Financial Transaction Services, Sicherheitsverfahren HBCI"""
    security_profile = DataElementGroupField(type=SecurityProfile, _d="Sicherheitsprofil")
    security_function = DataElementField(type='code', max_length=3, _d="Sicherheitsfunktion, kodiert")
    security_role = CodeField(SecurityRole, max_length=3, _d="Rolle des Sicherheitslieferanten, kodiert")
    security_identification_details = DataElementGroupField(type=SecurityIdentificationDetails, _d="Sicherheitsidentifikation, Details")
    security_datetime = DataElementGroupField(type=SecurityDateTime, _d="Sicherheitsdatum und -uhrzeit")
    encryption_algorithm = DataElementGroupField(type=EncryptionAlgorithm, _d="Verschlüsselungsalgorithmus")
    key_name = DataElementGroupField(type=KeyName, _d="Schlüsselname")
    compression_function = CodeField(CompressionFunction, max_length=3, _d="Komprimierungsfunktion")
    certificate = DataElementGroupField(type=Certificate, required=False, _d="Zertifikat")


class HNVSD1(FinTS3Segment):
    """Verschlüsselte Daten, version 1

    Source: FinTS Financial Transaction Services, Sicherheitsverfahren HBCI"""
    data = SegmentSequenceField(_d="Daten, verschlüsselt")


class HNSHK4(FinTS3Segment):
    """Signaturkopf, version 4

    Source: FinTS Financial Transaction Services, Sicherheitsverfahren HBCI"""
    security_profile = DataElementGroupField(type=SecurityProfile, _d="Sicherheitsprofil")
    security_function = DataElementField(type='code', max_length=3, _d="Sicherheitsfunktion, kodiert")
    security_reference = DataElementField(type='an', max_length=14, _d="Sicherheitskontrollreferenz")
    security_application_area = CodeField(SecurityApplicationArea, max_length=3, _d="Bereich der Sicherheitsapplikation, kodiert")
    security_role = CodeField(SecurityRole, max_length=3, _d="Rolle des Sicherheitslieferanten, kodiert")
    security_identification_details = DataElementGroupField(type=SecurityIdentificationDetails, _d="Sicherheitsidentifikation, Details")
    security_reference_number = DataElementField(type='num', max_length=16, _d="Sicherheitsreferenznummer")
    security_datetime = DataElementGroupField(type=SecurityDateTime, _d="Sicherheitsdatum und -uhrzeit")
    hash_algorithm = DataElementGroupField(type=HashAlgorithm, _d="Hashalgorithmus")
    signature_algorithm = DataElementGroupField(type=SignatureAlgorithm, _d="Signaturalgorithmus")
    key_name = DataElementGroupField(type=KeyName, _d="Schlüsselname")
    certificate = DataElementGroupField(type=Certificate, required=False, _d="Zertifikat")


class HNSHA2(FinTS3Segment):
    """Signaturabschluss, version 2

    Source: FinTS Financial Transaction Services, Sicherheitsverfahren HBCI"""
    security_reference = DataElementField(type='an', max_length=14, _d="Sicherheitskontrollreferenz")
    validation_result = DataElementField(type='bin', max_length=512, required=False, _d="Validierungsresultat")
    user_defined_signature = DataElementGroupField(type=UserDefinedSignature, required=False, _d="Benutzerdefinierte Signatur")