KItinerary

dosipas1.h
1/*
2 SPDX-FileCopyrightText: 2025 Volker Krause <vkrause@kde.org>
3 SPDX-License-Identifier: LGPL-2.0-or-later
4*/
5
6#ifndef KITINERARY_DOSIPAS1_H
7#define KITINERARY_DOSIPAS1_H
8
9#include <kitinerary_export.h>
10
11#include "asn1/uperelement.h"
12#include "era/fcbticket.h"
13
14#include <QDateTime>
15#include <QList>
16#include <QVariant>
17
18namespace KItinerary {
19
20class UPERDecoder;
21
22/** UIC DOSIPAS container types.
23 * @see https://github.com/UnionInternationalCheminsdeFer/UIC-barcode
24 */
25namespace Dosipas {
26namespace v1 {
27
28class DataType {
29 UPER_GADGET
30 UPER_ELEMENT(QByteArray, dataFormat)
31 UPER_ELEMENT(QByteArray, data)
32 UPER_GADGET_FINALIZE
33 Q_PROPERTY(QVariant content READ content)
34public:
35 /** Decoded form of data, if in a supported format. */
36 [[nodiscard]] QVariant content() const;
37 /** Same as content(), but type-safe for FCB content. */
38 [[nodiscard]] std::optional<Fcb::UicRailTicketData> fcb() const;
39};
40
41class Level1DataType {
42 UPER_GADGET
43 UPER_ELEMENT_OPTIONAL(int, securityProviderNum)
44 UPER_ELEMENT_OPTIONAL(QByteArray, securityProviderIA5)
45 UPER_ELEMENT_OPTIONAL(int, keyId)
46 UPER_ELEMENT(QList<DataType>, dataSequence)
47 UPER_ELEMENT_OPTIONAL(QByteArray, level1KeyAlg)
48 UPER_ELEMENT_OPTIONAL(QByteArray, level2KeyAlg)
49 UPER_ELEMENT_OPTIONAL(QByteArray, level1SigningAlg)
50 UPER_ELEMENT_OPTIONAL(QByteArray, level2SigningAlg)
51 UPER_ELEMENT_OPTIONAL(QByteArray, level2PublicKey)
52 UPER_GADGET_FINALIZE
53};
54
55class Level2DataType {
56 UPER_GADGET
57 UPER_ELEMENT(Level1DataType, level1Data)
58 UPER_ELEMENT_OPTIONAL(QByteArray, level1Signature)
59 UPER_ELEMENT_OPTIONAL(DataType, level2Data)
60 UPER_GADGET_FINALIZE
61};
62
63class KITINERARY_EXPORT UicBarcodeHeader {
64 UPER_GADGET
65 UPER_ELEMENT(QByteArray, format)
66 UPER_ELEMENT(Level2DataType, level2SignedData)
67 UPER_ELEMENT_OPTIONAL(QByteArray, level2Signature)
68 UPER_GADGET_FINALIZE
69
70 Q_PROPERTY(QByteArray rawData READ rawData)
71public:
72 UicBarcodeHeader();
73 explicit UicBarcodeHeader(const QByteArray &data);
74 [[nodiscard]] bool isValid() const;
75
76 [[nodiscard]] QByteArray rawData() const;
77private:
78 QByteArray m_data;
79};
80
81
82}
83}
84}
85
86#endif
Decoder for data encoded according to X.691 ASN.1 Unaligned Packed Encoding Rules (UPER).
Definition uperdecoder.h:17
UIC DOSIPAS container types.
Definition dosipas1.h:25
Classes for reservation/travel data models, data extraction and data augmentation.
Definition berelement.h:17
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Mar 28 2025 11:59:49 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.