AusweisApp
Lade ...
Suche ...
Keine Treffer
AccessRoleAndRight.h
gehe zur Dokumentation dieser Datei
1
14#pragma once
15
16#include "EnumHelper.h"
17
18#include <QCoreApplication>
19#include <QList>
20#include <QString>
21#include <functional>
22
23
24namespace governikus
25{
26
27defineTypedEnumType(AccessRight, uint,
28 WRITE_DG17 = 37,
29 WRITE_DG18 = 36,
30 WRITE_DG19 = 35,
31 WRITE_DG20 = 34,
32 WRITE_DG21 = 33,
33 RFU_32 = 32, /* Reserved for Future Use */
34 RFU_31 = 31, /* Reserved for Future Use */
35 RFU_30 = 30, /* Reserved for Future Use */
36 RFU_29 = 29, /* Reserved for Future Use */
37 READ_DG21 = 28,
38 READ_DG20 = 27,
39 READ_DG19 = 26,
40 READ_DG18 = 25,
41 READ_DG17 = 24,
42 READ_DG16 = 23,
43 READ_DG15 = 22,
44 READ_DG14 = 21,
45 READ_DG13 = 20,
46 READ_DG12 = 19,
47 READ_DG11 = 18,
48 READ_DG10 = 17,
49 READ_DG09 = 16,
50 READ_DG08 = 15,
51 READ_DG07 = 14,
52 READ_DG06 = 13,
53 READ_DG05 = 12,
54 READ_DG04 = 11,
55 READ_DG03 = 10,
56 READ_DG02 = 9,
57 READ_DG01 = 8,
58
59 INSTALL_QUAL_CERT = 7,
60 INSTALL_CERT = 6,
61 PIN_MANAGEMENT = 5,
62 CAN_ALLOWED = 4,
63 PRIVILEGED_TERMINAL = 3,
64 RESTRICTED_IDENTIFICATION = 2,
65 COMMUNITY_ID_VERIFICATION = 1,
66 AGE_VERIFICATION = 0
67 )
68
69// do NOT change any key/value as this is used as an unique identifier!
70// if you add entries you need to modify the SDK documentation.
71#define TYPE(x) static_cast<std::underlying_type_t<AccessRight>>(x)
72defineTypedEnumType(AccessRightNames, std::underlying_type_t<AccessRight>,
73 ResidencePermitII = TYPE(AccessRight::READ_DG20),
74 ResidencePermitI = TYPE(AccessRight::READ_DG19),
75 CommunityID = TYPE(AccessRight::READ_DG18),
76 Address = TYPE(AccessRight::READ_DG17),
77 BirthName = TYPE(AccessRight::READ_DG13),
78 Nationality = TYPE(AccessRight::READ_DG10),
79 PlaceOfBirth = TYPE(AccessRight::READ_DG09),
80 DateOfBirth = TYPE(AccessRight::READ_DG08),
81 DoctoralDegree = TYPE(AccessRight::READ_DG07),
82 ArtisticName = TYPE(AccessRight::READ_DG06),
83 FamilyName = TYPE(AccessRight::READ_DG05),
84 GivenNames = TYPE(AccessRight::READ_DG04),
85 ValidUntil = TYPE(AccessRight::READ_DG03),
86 IssuingCountry = TYPE(AccessRight::READ_DG02),
87 DocumentType = TYPE(AccessRight::READ_DG01),
88 CanAllowed = TYPE(AccessRight::CAN_ALLOWED),
89 Pseudonym = TYPE(AccessRight::RESTRICTED_IDENTIFICATION),
90 AddressVerification = TYPE(AccessRight::COMMUNITY_ID_VERIFICATION),
91 AgeVerification = TYPE(AccessRight::AGE_VERIFICATION),
92 WriteAddress = TYPE(AccessRight::WRITE_DG17),
93 WriteCommunityID = TYPE(AccessRight::WRITE_DG18),
94 WriteResidencePermitI = TYPE(AccessRight::WRITE_DG19),
95 WriteResidencePermitII = TYPE(AccessRight::WRITE_DG20),
96 PinManagement = TYPE(AccessRight::PIN_MANAGEMENT)
97 )
98#undef TYPE
99
100[[nodiscard]] inline uint qHash(governikus::AccessRight pAccessRight)
101{
102 return static_cast<uint>(pAccessRight);
103}
104
105
106defineEnumType(AccessRole,
107 CVCA = 3, DV_od = 2, DV_no_f = 1, AT = 0, UNKNOWN = -1
108 )
109
110
111class AccessRoleAndRightsUtil
112{
113 Q_DECLARE_TR_FUNCTIONS(governikus::AccessRoleAndRightsUtil)
114
115 public:
116 enum JoinRight
117 {
118 READ = 0x1,
119 WRITE = 0x2,
120 READWRITE = 0x3
121 };
122 Q_DECLARE_FLAGS(JoinRights, JoinRight)
123
124 private:
125 static QList<AccessRight> mAllRights;
126 static QList<AccessRight> mAllDisplayedOrderedRights;
127
128 static bool fromTechnicalName(const char* const pStr, const std::function<void(AccessRight)>& pFunc);
129 static QStringList fromTechnicalName(const QStringList& pStr, JoinRights pJoinRight);
130
131 AccessRoleAndRightsUtil() = delete;
132 ~AccessRoleAndRightsUtil() = delete;
133
134 public:
135 static const QList<AccessRight>& allDisplayedOrderedRights();
136 static const QList<AccessRight>& allRights();
137 [[nodiscard]] static bool isWriteAccessRight(AccessRight pRight);
138 static QString toDisplayText(AccessRight pRight);
139 static QLatin1String toTechnicalName(AccessRight pRight);
140 static bool fromTechnicalName(const QString& pStr, const std::function<void(AccessRight)>& pFunc);
141 static QString joinFromTechnicalName(const QStringList& pStr,
142 JoinRights pJoinRight = JoinRight::READWRITE,
143 const QString& pJoin = QStringLiteral(", "));
144};
145
146Q_DECLARE_OPERATORS_FOR_FLAGS(AccessRoleAndRightsUtil::JoinRights)
147
148} // namespace governikus
149
150Q_DECLARE_TYPEINFO(governikus::AccessRight, Q_PRIMITIVE_TYPE);
#define TYPE(x)
Q_DECLARE_TYPEINFO(governikus::AccessRight, Q_PRIMITIVE_TYPE)
#define defineTypedEnumType(enumName, enumType,...)
Definition: EnumHelper.h:59
#define defineEnumType(enumName,...)
Definition: EnumHelper.h:90
Implementation of GeneralAuthenticate response APDUs.
Definition: CommandApdu.h:16
UNKNOWN
Definition: ResponseApdu.h:63
BirthName
Definition: AccessRoleAndRight.h:77
PinManagement
Definition: AccessRoleAndRight.h:96
GivenNames
Definition: AccessRoleAndRight.h:84
Pseudonym
Definition: AccessRoleAndRight.h:89
AddressVerification
Definition: AccessRoleAndRight.h:90
auto qHash(const Oid &pOid)
Definition: Oid.h:164
WriteCommunityID
Definition: AccessRoleAndRight.h:93
Address
Definition: AccessRoleAndRight.h:76
WriteAddress
Definition: AccessRoleAndRight.h:92
DateOfBirth
Definition: AccessRoleAndRight.h:80
CanAllowed
Definition: AccessRoleAndRight.h:88
WriteResidencePermitII
Definition: AccessRoleAndRight.h:95
ASN1_OCTET_STRING CommunityID
Definition: AuthenticatedAuxiliaryData.cpp:22
ResidencePermitI
Definition: AccessRoleAndRight.h:74
Nationality
Definition: AccessRoleAndRight.h:78
ResidencePermitII
Definition: AccessRoleAndRight.h:73
FamilyName
Definition: AccessRoleAndRight.h:83
DocumentType
Definition: AccessRoleAndRight.h:87
ValidUntil
Definition: AccessRoleAndRight.h:85
ArtisticName
Definition: AccessRoleAndRight.h:82
IssuingCountry
Definition: AccessRoleAndRight.h:86
AgeVerification
Definition: AccessRoleAndRight.h:91
WriteResidencePermitI
Definition: AccessRoleAndRight.h:94
PlaceOfBirth
Definition: AccessRoleAndRight.h:79
DoctoralDegree
Definition: AccessRoleAndRight.h:81