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