AusweisApp2
PaceInfo.h
gehe zur Dokumentation dieser Datei
1 
7 #pragma once
8 
9 #include "EnumHelper.h"
10 #include "SecurityInfo.h"
11 
12 class test_PaceInfo;
13 
14 namespace governikus
15 {
16 
34 {
35  ASN1_OBJECT* mProtocol;
36  ASN1_INTEGER* mVersion;
37  ASN1_INTEGER* mParameterId;
38 };
39 DECLARE_ASN1_FUNCTIONS(paceinfo_st)
41 
42 
43 /*
44  * Wrapper for structure paceinfo_st.
45  */
46 class PaceInfo
47  : public SecurityInfo
48 {
49  friend class QSharedPointer<const PaceInfo>;
50 
51  friend class ::test_PaceInfo;
52 
53  private:
54  const QSharedPointer<const paceinfo_st> mDelegate;
55 
56  explicit PaceInfo(const QSharedPointer<const paceinfo_st>& pDelegate);
57  [[nodiscard]] ASN1_OBJECT* getProtocolObjectIdentifier() const override;
58  [[nodiscard]] static int getMappedNid(int pCurveIndex);
59  static bool acceptsProtocol(const ASN1_OBJECT* pObjectIdentifier);
60 
61  public:
62  static QSharedPointer<const PaceInfo> decode(const QByteArray& pBytes)
63  {
64  if (const auto& delegate = decodeObject<paceinfo_st>(pBytes, false))
65  {
66  if (PaceInfo::acceptsProtocol(delegate->mProtocol))
67  {
68  return QSharedPointer<const PaceInfo>::create(delegate);
69  }
70  }
71  return QSharedPointer<const PaceInfo>();
72  }
73 
74 
75  [[nodiscard]] int getVersion() const;
76  [[nodiscard]] int getParameterId() const;
77  [[nodiscard]] int getParameterIdAsNid() const;
78  [[nodiscard]] bool isStandardizedDomainParameters() const;
79 };
80 
81 
82 inline QDebug operator<<(QDebug pDbg, const QSharedPointer<const PaceInfo>& pPaceInfo)
83 {
84  QDebugStateSaver saver(pDbg);
85  pDbg.nospace().noquote() << pPaceInfo->getOid()
86  << ", version: " << pPaceInfo->getVersion()
87  << ", parameterId: " << pPaceInfo->getParameterId();
88  return pDbg;
89 }
90 
91 
92 } // namespace governikus
#define DECLARE_ASN1_OBJECT(name)
Definition: ASN1TemplateUtil.h:169
Definition: PaceInfo.h:48
static QSharedPointer< const PaceInfo > decode(const QByteArray &pBytes)
Definition: PaceInfo.h:62
Definition: SecurityInfo.h:47
A simple template renderer.
Definition: ActivationContext.h:15
QDebug operator<<(QDebug pDbg, const CommandApdu &pCommandApdu)
Definition: CommandApdu.h:89
Definition: PaceInfo.h:34
ASN1_INTEGER * mVersion
Definition: PaceInfo.h:36
ASN1_INTEGER * mParameterId
Definition: PaceInfo.h:37
ASN1_OBJECT * mProtocol
Definition: PaceInfo.h:35