AusweisApp2
AccessRoleAndRight.h
gehe zur Dokumentation dieser Datei
1 
12 #pragma once
13 
14 #include "EnumHelper.h"
15 
16 #include <functional>
17 #include <QCoreApplication>
18 #include <QList>
19 #include <QString>
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<AccessRight>::type>(x)
70 defineTypedEnumType(AccessRightNames, std::underlying_type<AccessRight>::type,
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  Pseudonym = TYPE(AccessRight::RESTRICTED_IDENTIFICATION),
87  AddressVerification = TYPE(AccessRight::COMMUNITY_ID_VERIFICATION),
88  AgeVerification = TYPE(AccessRight::AGE_VERIFICATION),
89  WriteAddress = TYPE(AccessRight::WRITE_DG17),
90  WriteCommunityID = TYPE(AccessRight::WRITE_DG18),
91  WriteResidencePermitI = TYPE(AccessRight::WRITE_DG19),
92  WriteResidencePermitII = TYPE(AccessRight::WRITE_DG20)
93  )
94 #undef TYPE
95 
96 inline uint qHash(governikus::AccessRight pAccessRight)
97 {
98  return static_cast<uint>(pAccessRight);
99 }
100 
101 
102 defineEnumType(AccessRole,
103  CVCA = 3, DV_od = 2, DV_no_f = 1, AT = 0, UNKNOWN = -1
104  )
105 
106 
107 class AccessRoleAndRightsUtil
108 {
109  Q_DECLARE_TR_FUNCTIONS(governikus::AccessRoleAndRightsUtil)
110 
111  private:
112  static QList<AccessRight> mAllRights;
113  static QList<AccessRight> mAllDisplayedOrderedRights;
114  AccessRoleAndRightsUtil() = delete;
115  static bool fromTechnicalName(const char* const pStr, const std::function<void(AccessRight)>& pFunc);
116  static QStringList fromTechnicalName(const QStringList& pStr);
117 
118  public:
119  static const QList<AccessRight>& allDisplayedOrderedRights();
120  static const QList<AccessRight>& allRights();
121  static bool isWriteAccessRight(AccessRight pRight);
122  static QString toDisplayText(AccessRight pRight);
123  static QLatin1String toTechnicalName(AccessRight pRight);
124  static bool fromTechnicalName(const QString& pStr, const std::function<void(AccessRight)>& pFunc);
125  static QString joinFromTechnicalName(const QStringList& pStr, const QString& pJoin = QStringLiteral(", "));
126 };
127 
128 } // namespace governikus
129 
130 Q_DECLARE_TYPEINFO(governikus::AccessRight, Q_PRIMITIVE_TYPE);
governikus::Enum
Definition: EnumHelper.h:81
governikus::AgeVerification
AgeVerification
Definition: AccessRoleAndRight.h:88
governikus::UNKNOWN
UNKNOWN
Definition: SmartCardDefinitions.h:18
governikus::BirthName
BirthName
Definition: AccessRoleAndRight.h:75
governikus::PlaceOfBirth
PlaceOfBirth
Definition: AccessRoleAndRight.h:77
governikus::DateOfBirth
DateOfBirth
Definition: AccessRoleAndRight.h:78
governikus::Pseudonym
Pseudonym
Definition: AccessRoleAndRight.h:86
governikus::ResidencePermitI
ResidencePermitI
Definition: AccessRoleAndRight.h:72
governikus::WriteResidencePermitII
WriteResidencePermitII
Definition: AccessRoleAndRight.h:92
Q_DECLARE_TYPEINFO
Q_DECLARE_TYPEINFO(governikus::AccessRight, Q_PRIMITIVE_TYPE)
governikus::ResidencePermitII
ResidencePermitII
Definition: AccessRoleAndRight.h:71
governikus::CommunityID
ASN1_OCTET_STRING CommunityID
Definition: AuthenticatedAuxiliaryData.cpp:22
name
const char * name
Definition: http_parser.cpp:470
governikus::IssuingCountry
IssuingCountry
Definition: AccessRoleAndRight.h:84
AccessRoleAndRight.h
governikus::getEnumName
QLatin1String getEnumName(T pType)
Definition: EnumHelper.h:181
governikus::ValidUntil
ValidUntil
Definition: AccessRoleAndRight.h:83
governikus::FamilyName
FamilyName
Definition: AccessRoleAndRight.h:81
governikus::DocumentType
DocumentType
Definition: AccessRoleAndRight.h:85
TYPE
#define TYPE(x)
governikus::DoctoralDegree
DoctoralDegree
Definition: AccessRoleAndRight.h:79
governikus::defineTypedEnumType
defineTypedEnumType(AccessRight, uint, WRITE_DG17=37, WRITE_DG18=36, WRITE_DG19=35, WRITE_DG20=34, WRITE_DG21=33, RFU_32=32, RFU_31=31, RFU_30=30, RFU_29=29, READ_DG21=28, READ_DG20=27, READ_DG19=26, READ_DG18=25, READ_DG17=24, READ_DG16=23, READ_DG15=22, READ_DG14=21, READ_DG13=20, READ_DG12=19, READ_DG11=18, READ_DG10=17, READ_DG09=16, READ_DG08=15, READ_DG07=14, READ_DG06=13, READ_DG05=12, READ_DG04=11, READ_DG03=10, READ_DG02=9, READ_DG01=8, INSTALL_QUAL_CERT=7, INSTALL_CERT=6, PIN_MANAGEMENT=5, CAN_ALLOWED=4, PRIVILEGED_TERMINAL=3, RESTRICTED_IDENTIFICATION=2, COMMUNITY_ID_VERIFICATION=1, AGE_VERIFICATION=0) defineTypedEnumType(AccessRightNames
governikus::WriteResidencePermitI
WriteResidencePermitI
Definition: AccessRoleAndRight.h:91
governikus::ArtisticName
ArtisticName
Definition: AccessRoleAndRight.h:80
governikus::WriteAddress
WriteAddress
Definition: AccessRoleAndRight.h:89
governikus
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15
governikus::defineEnumType
defineEnumType(KeyAgreementType, DH, ECDH) defineEnumType(MappingType
Method used for key agreement:
governikus::Enum::fromString
static EnumTypeT fromString(const char *const pValue, EnumTypeT pDefault)
Definition: EnumHelper.h:136
governikus::qHash
uint qHash(const ReaderConfigurationInfo &info)
Definition: ReaderConfigurationInfo.h:90
governikus::AddressVerification
AddressVerification
Definition: AccessRoleAndRight.h:87
moc_AccessRoleAndRight.cpp
governikus::WriteCommunityID
WriteCommunityID
Definition: AccessRoleAndRight.h:90
EnumHelper.h
governikus::Address
Address
Definition: AccessRoleAndRight.h:74
governikus::GivenNames
GivenNames
Definition: AccessRoleAndRight.h:82
governikus::Nationality
Nationality
Definition: AccessRoleAndRight.h:76