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
governikus::PaceInfo::getParameterId
QByteArray getParameterId() const
Definition: PaceInfo.cpp:91
governikus::PaceInfo::isStandardizedDomainParameters
bool isStandardizedDomainParameters() const
Definition: PaceInfo.cpp:157
governikus::GM
GM
Definition: PaceInfo.h:29
governikus::PaceInfo::getKeyAgreementType
KeyAgreementType getKeyAgreementType() const
Definition: PaceInfo.cpp:108
governikus::KnownOIDs
Definition: KnownOIDs.h:13
governikus::SecurityInfo
Definition: SecurityInfo.h:46
KnownOIDs.h
governikus::PaceInfo::getMappingType
MappingType getMappingType() const
Definition: PaceInfo.cpp:123
ASN1Util.h
governikus::PaceInfo
Definition: PaceInfo.h:62
governikus::paceinfo_st::mVersion
ASN1_INTEGER * mVersion
Definition: PaceInfo.h:51
governikus::KnownOIDs::id_PACE::DH::GM
@ GM
governikus::freeAsn1Object< paceinfo_st >
void freeAsn1Object< paceinfo_st >(paceinfo_st *pObject)
governikus::PaceInfo::decode
static QSharedPointer< PaceInfo > decode(const QByteArray &pBytes)
Definition: PaceInfo.h:72
governikus::KnownOIDs::id_PACE::DH
DH
Definition: KnownOIDs.h:89
governikus::paceinfo_st::mProtocol
ASN1_OBJECT * mProtocol
Definition: PaceInfo.h:50
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::PaceInfo::getVersion
int getVersion() const
Definition: PaceInfo.cpp:101
governikus::Asn1IntegerUtil::getValue
static QByteArray getValue(const ASN1_INTEGER *pInteger)
Definition: ASN1Util.cpp:128
SecurityInfo.h
EnumHelper.h
governikus::decodeAsn1Object< paceinfo_st >
paceinfo_st * decodeAsn1Object< paceinfo_st >(paceinfo_st **pObject, const unsigned char **pData, long pDataLen)
governikus::PaceInfo::getParameterIdAsInt
int getParameterIdAsInt() const
Definition: PaceInfo.cpp:138
ASN1TemplateUtil.h
governikus::Asn1ObjectUtil::convertTo
static QByteArray convertTo(const ASN1_OBJECT *pAsn1Object)
Definition: ASN1Util.cpp:25
governikus::KnownOIDs::id_PACE::ECDH::GM
@ GM
governikus::SecurityInfo::getProtocol
QByteArray getProtocol() const
Definition: SecurityInfo.cpp:66
governikus::KnownOIDs::id_PACE::ECDH
ECDH
Definition: KnownOIDs.h:104
governikus::paceinfo_st
Definition: PaceInfo.h:49
PaceInfo.h