AusweisApp2
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 
22 namespace governikus
23 {
24 
25 defineTypedEnumType(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)
70 defineTypedEnumType(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 
104 defineEnumType(AccessRole,
105  CVCA = 3, DV_od = 2, DV_no_f = 1, AT = 0, UNKNOWN = -1
106  )
107 
108 
109 class 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 
144 Q_DECLARE_OPERATORS_FOR_FLAGS(AccessRoleAndRightsUtil::JoinRights)
145 
146 } // namespace governikus
147 
148 Q_DECLARE_TYPEINFO(governikus::AccessRight, Q_PRIMITIVE_TYPE);
#define TYPE(x)
Q_DECLARE_TYPEINFO(governikus::AccessRight, Q_PRIMITIVE_TYPE)
A simple template renderer.
Definition: ActivationContext.h:15
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
defineEnumType(ActivationType, UNKNOWN, SHOWUI, STATUS, TCTOKENURL) defineEnumType(StatusFormat
Format types for status responses.
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
defineTypedEnumType(Ins, uchar, UNKNOWN=0x00, MSE_SET=0x22, EXTERNAL_AUTHENTICATE=0x82, GET_CHALLENGE=0x84, GENERAL_AUTHENTICATE=0x86, PSO_VERIFY=0x2A, PSO_COMPUTE=0x2B, RESET_RETRY_COUNTER=0x2C, SELECT=0xA4, READ_BINARY=0xB0, GET_RESPONSE=0xC0, UPDATE_BINARY=0xD6) class CommandApdu
Definition: CommandApdu.h:17
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