AusweisApp2
SelfAuthenticationData.h
gehe zur Dokumentation dieser Datei
1 
7 #pragma once
8 
9 #include "EnumHelper.h"
10 
11 #include <functional>
12 
13 #include <QCoreApplication>
14 #include <QDateTime>
15 #include <QJsonObject>
16 #include <QJsonValue>
17 #include <QMap>
18 #include <QPair>
19 #include <QSharedData>
20 #include <QString>
21 #include <QVector>
22 
23 namespace governikus
24 {
25 
26 defineEnumType(SelfAuthDataPermission,
27  UNKNOWN /* used for parser only */,
28  ALLOWED,
29  PROHIBITED,
30  NOTONCHIP)
31 
32 defineEnumType(SelfAuthData,
33  UNKNOWN, /* used for parser only */
37  GivenNames,
41  BirthName,
50  /* additional fields */
55  PlaceOfResidenceNoPlaceInfo)
56 
57 
59 {
60  public:
61  using OrderedSelfData = QVector<QPair<QString, QString>>;
62 
63  private:
64  class SelfData
65  : public QSharedData
66  {
67  Q_DECLARE_TR_FUNCTIONS(governikus::SelfData)
68 
69  private:
70  bool parse(const QByteArray& pData);
71  bool parseOperationsAllowedByUser(const QJsonObject& pObject);
72  bool parsePersonalData(const QJsonObject& pObject);
73  void parseStructuredPlace(const QJsonObject& pObjectm, SelfAuthDataPermission pPermission);
74  bool tryToInsertChild(const QJsonValue& pValue, SelfAuthData pAuthData);
75  void add(OrderedSelfData& pSelfData, const QString& pGroupName, const QString& pGroupValue) const;
76  void addAddress(OrderedSelfData& pSelfData) const;
77  static QString formatDate(const QString& pDate);
78 
79  public:
80  bool mValid;
81  const QDateTime mDateTime;
82  QMap<SelfAuthData, SelfAuthDataPermission> mOperationsAllowed;
83  QMap<SelfAuthData, QString> mSelfAuthData;
84 
85  explicit SelfData(const QByteArray& pData);
86  QString getValue(SelfAuthData pData) const;
87  OrderedSelfData getOrderedSelfInfo() const;
88  };
89 
90  QSharedDataPointer<SelfData> d;
91 
92  public:
93  explicit SelfAuthenticationData(const QByteArray& pData = QByteArray());
95 
99  [[nodiscard]] bool isValid() const;
100  [[nodiscard]] QString getValue(SelfAuthData pData) const;
101  [[nodiscard]] const QDateTime& getDateTime() const;
102  [[nodiscard]] OrderedSelfData getOrderedSelfData() const;
103 };
104 
105 } // namespace governikus
Definition: SelfAuthenticationData.h:59
QVector< QPair< QString, QString > > OrderedSelfData
Definition: SelfAuthenticationData.h:61
Implementation of GeneralAuthenticate response APDUs.
Definition: CommandApdu.h:16
UNKNOWN
Definition: ResponseApdu.h:63
DateOfExpiry
Definition: SelfAuthenticationData.h:36
RestrictedID
Definition: SelfAuthenticationData.h:47
BirthName
Definition: AccessRoleAndRight.h:75
GivenNames
Definition: AccessRoleAndRight.h:82
IssuingState
Definition: SelfAuthenticationData.h:35
defineEnumType(KnownOid, ID_SIGNED_DATA, EC_PS_PUBLICKEY, STANDARDIZED_DOMAINPARAMETERS, BSI_DE_PROTOCOLS_SMARTCARD, ID_PK, ID_PK_DH, ID_PK_ECDH, ID_PS_PK, ID_PS_PK_ECDH_ESCHNORR, ID_TA, ID_TA_RSA, ID_TA_RSA_V1_5_SHA_1, ID_TA_RSA_V1_5_SHA_256, ID_TA_RSA_PSS_SHA_1, ID_TA_RSA_PSS_SHA_256, ID_TA_RSA_V1_5_SHA_512, ID_TA_RSA_PSS_SHA_512, ID_TA_ECDSA, ID_TA_ECDSA_SHA_1, ID_TA_ECDSA_SHA_224, ID_TA_ECDSA_SHA_256, ID_TA_ECDSA_SHA_384, ID_TA_ECDSA_SHA_512, ID_CA, ID_CA_DH, ID_CA_DH_3DES_CBC_CBC, ID_CA_DH_AES_CBC_CMAC_128, ID_CA_DH_AES_CBC_CMAC_192, ID_CA_DH_AES_CBC_CMAC_256, ID_CA_ECDH, ID_CA_ECDH_3DES_CBC_CBC, ID_CA_ECDH_AES_CBC_CMAC_128, ID_CA_ECDH_AES_CBC_CMAC_192, ID_CA_ECDH_AES_CBC_CMAC_256, ID_PACE, ID_PACE_DH_GM, ID_PACE_DH_GM_3DES_CBC_CBC, ID_PACE_DH_GM_AES_CBC_CMAC_128, ID_PACE_DH_GM_AES_CBC_CMAC_192, ID_PACE_DH_GM_AES_CBC_CMAC_256, ID_PACE_ECDH_GM, ID_PACE_ECDH_GM_3DES_CBC_CBC, ID_PACE_ECDH_GM_AES_CBC_CMAC_128, ID_PACE_ECDH_GM_AES_CBC_CMAC_192, ID_PACE_ECDH_GM_AES_CBC_CMAC_256, ID_PACE_DH_IM, ID_PACE_DH_IM_3DES_CBC_CBC, ID_PACE_DH_IM_AES_CBC_CMAC_128, ID_PACE_DH_IM_AES_CBC_CMAC_192, ID_PACE_DH_IM_AES_CBC_CMAC_256, ID_PACE_ECDH_IM, ID_PACE_ECDH_IM_3DES_CBC_CBC, ID_PACE_ECDH_IM_AES_CBC_CMAC_128, ID_PACE_ECDH_IM_AES_CBC_CMAC_192, ID_PACE_ECDH_IM_AES_CBC_CMAC_256, ID_PACE_ECDH_CAM, ID_PACE_ECDH_CAM_AES_CBC_CMAC_128, ID_PACE_ECDH_CAM_AES_CBC_CMAC_192, ID_PACE_ECDH_CAM_AES_CBC_CMAC_256, ID_RI, ID_RI_DH, ID_RI_DH_SHA_1, ID_RI_DH_SHA_224, ID_RI_DH_SHA_256, ID_RI_DH_SHA_384, ID_RI_DH_SHA_512, ID_RI_ECDH, ID_RI_ECDH_SHA_1, ID_RI_ECDH_SHA_224, ID_RI_ECDH_SHA_256, ID_RI_ECDH_SHA_384, ID_RI_ECDH_SHA_512, ID_CI, ID_EID_SECURITY, ID_PT, ID_PS, ID_PSA, ID_PSA_ECDH_ECSCHNORR, ID_PSA_ECDH_ECSCHNORR_SHA_256, ID_PSA_ECDH_ECSCHNORR_SHA_384, ID_PSA_ECDH_ECSCHNORR_SHA_512, ID_PASSWORDTYPE, ID_PASSWORDTYPE_MRZ, ID_PASSWORDTYPE_CAN, ID_PASSWORDTYPE_PIN, ID_PASSWORDTYPE_PUK, ID_AUXILIARY_DATA, ID_DATE_OF_BIRTH, ID_DATE_OF_EXPIRY, ID_MUNICIPALITY_ID, ID_PSM_MESSAGE, ID_SECURITY_OBJECT, ID_ROLES, ID_IS, ID_AT, ID_ST, ID_EXTENSIONS, ID_DESCRIPTION, ID_PLAIN_FORMAT, ID_HTML_FORMAT, ID_PFD_FORMAT, ID_SECTOR, ID_EID_TYPE, ID_CARD_EID_TYPE, ID_MOBILE_EID_TYPE, ID_MOBILE_EID_TYPE_SE_CERTIFIED, ID_MOBILE_EID_TYPE_SE_ENDORSED, ID_MOBILE_EID_TYPE_HW_KEYSTORE) class Oid
Definition: Oid.h:21
PlaceOfResidenceCity
Definition: SelfAuthenticationData.h:52
PlaceOfResidence
Definition: SelfAuthenticationData.h:44
PlaceOfResidenceCountry
Definition: SelfAuthenticationData.h:53
PlaceOfResidenceStreet
Definition: SelfAuthenticationData.h:51
DateOfBirth
Definition: AccessRoleAndRight.h:78
FamilyNames
Definition: SelfAuthenticationData.h:38
ResidencePermitI
Definition: AccessRoleAndRight.h:72
AcademicTitle
Definition: SelfAuthenticationData.h:40
Nationality
Definition: AccessRoleAndRight.h:76
PlaceOfResidenceZipCode
Definition: SelfAuthenticationData.h:54
PlaceVerification
Definition: SelfAuthenticationData.h:49
DocumentType
Definition: AccessRoleAndRight.h:85
ArtisticName
Definition: AccessRoleAndRight.h:80
AgeVerification
Definition: AccessRoleAndRight.h:89
PlaceOfBirth
Definition: AccessRoleAndRight.h:77