AusweisApp2
PaceInfo.h
gehe zur Dokumentation dieser Datei
1 
7 #pragma once
8 
9 #include "EnumHelper.h"
10 #include "SecurityInfo.h"
11 
12 
13 namespace governikus
14 {
15 
21 defineEnumType(KeyAgreementType, DH, ECDH)
22 
23 
24 
29 defineEnumType(MappingType, GM, IM)
30 
31 
49 {
50  ASN1_OBJECT* mProtocol;
51  ASN1_INTEGER* mVersion;
52  ASN1_INTEGER* mParameterId;
53 };
54 DECLARE_ASN1_FUNCTIONS(paceinfo_st)
55 
56 
57 /*
58  * Wrapper for structure paceinfo_st.
59  */
60 class PaceInfo
61  : public SecurityInfo
62 {
63  friend class QSharedPointer<PaceInfo>;
64 
65  const QSharedPointer<const paceinfo_st> mDelegate;
66 
67  explicit PaceInfo(const QSharedPointer<const paceinfo_st>& pDelegate);
68  [[nodiscard]] ASN1_OBJECT* getProtocolObjectIdentifier() const override;
69  static bool acceptsProtocol(const ASN1_OBJECT* pObjectIdentifier);
70 
71  public:
72  static QSharedPointer<PaceInfo> decode(const QByteArray& pBytes)
73  {
74  if (const auto& delegate = decodeObject<paceinfo_st>(pBytes, false))
75  {
76  if (PaceInfo::acceptsProtocol(delegate->mProtocol))
77  {
78  return QSharedPointer<PaceInfo>::create(delegate);
79  }
80  }
81  return QSharedPointer<PaceInfo>();
82  }
83 
84 
85  [[nodiscard]] QByteArray getParameterId() const;
86  [[nodiscard]] int getParameterIdAsInt() const;
87  [[nodiscard]] int getVersion() const;
88  [[nodiscard]] KeyAgreementType getKeyAgreementType() const;
89  [[nodiscard]] MappingType getMappingType() const;
90  [[nodiscard]] bool isStandardizedDomainParameters() const;
91 };
92 
93 
94 template<>
95 paceinfo_st* decodeAsn1Object<paceinfo_st>(paceinfo_st** pObject, const unsigned char** pData, long pDataLen);
96 
97 
98 template<>
100 
101 
102 } // namespace governikus
Definition: PaceInfo.h:62
static QSharedPointer< PaceInfo > decode(const QByteArray &pBytes)
Definition: PaceInfo.h:72
Definition: SecurityInfo.h:46
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15
void freeAsn1Object< paceinfo_st >(paceinfo_st *pObject)
defineEnumType(KeyAgreementType, DH, ECDH) defineEnumType(MappingType
Method used for key agreement:
GM
Definition: PaceInfo.h:29
paceinfo_st * decodeAsn1Object< paceinfo_st >(paceinfo_st **pObject, const unsigned char **pData, long pDataLen)
Definition: PaceInfo.h:49
ASN1_INTEGER * mVersion
Definition: PaceInfo.h:51
ASN1_INTEGER * mParameterId
Definition: PaceInfo.h:52
ASN1_OBJECT * mProtocol
Definition: PaceInfo.h:50