AusweisApp2
IfdMessage.h
gehe zur Dokumentation dieser Datei
1 
5 #pragma once
6 
7 #include "EnumHelper.h"
8 #include "IfdVersion.h"
9 
10 #include <QJsonDocument>
11 #include <QJsonObject>
12 #include <QString>
13 
14 
15 #define VALUE_NAME(_name, _key)\
16  inline QLatin1String _name(){\
17  return QLatin1String(_key);\
18  }
19 
20 
21 namespace governikus
22 {
23 defineEnumType(IfdMessageType,
24  IFDEstablishContext,
25  IFDEstablishContextResponse,
26  IFDGetStatus,
27  IFDStatus,
28  IFDConnect,
29  IFDConnectResponse,
30  IFDDisconnect,
31  IFDDisconnectResponse,
32  IFDError,
33  IFDTransmit,
34  IFDTransmitResponse,
35  IFDEstablishPACEChannel,
36  IFDEstablishPACEChannelResponse,
37  IFDModifyPIN,
38  IFDModifyPINResponse,
39  UNDEFINED)
40 
41 
42 class IfdMessage
43 {
44  private:
45  bool mIncomplete;
46  IfdMessageType mMessageType;
47  QString mContextHandle;
48 
49  protected:
50  [[nodiscard]] virtual QJsonObject createMessageBody(const QString& pContextHandle) const;
51  static QByteArray toByteArray(const QJsonObject& pJsonObject);
52 
53  void markIncomplete(const QString& pLogMessage);
54  void missingValue(const QLatin1String& pName);
55  void invalidType(const QLatin1String& pName, const QLatin1String& pExpectedType);
56  bool getBoolValue(const QJsonObject& pJsonObject, const QLatin1String& pName);
57  int getIntValue(const QJsonObject& pJsonObject, const QLatin1String& pName, int pDefault);
58  QString getStringValue(const QJsonObject& pJsonObject, const QLatin1String& pName);
59 
60  public:
61  static QJsonObject parseByteArray(const QByteArray& pMessage);
62 
63  explicit IfdMessage(IfdMessageType pType);
64  explicit IfdMessage(const QJsonObject& pMessageObject);
65  virtual ~IfdMessage() = default;
66 
67  [[nodiscard]] bool isIncomplete() const;
68  [[nodiscard]] IfdMessageType getType() const;
69  [[nodiscard]] const QString& getContextHandle() const;
70 
71  [[nodiscard]] virtual QByteArray toByteArray(IfdVersion::Version pIfdVersion, const QString& pContextHandle = QString()) const;
72 };
73 
74 
75 } // namespace governikus
Version
Definition: IfdVersion.h:17
Implementation of GeneralAuthenticate response APDUs.
Definition: CommandApdu.h:16
UNDEFINED
Definition: SecurityProtocol.h:22
Oid getType() const
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