AusweisApp2
SecurityInfo.h
gehe zur Dokumentation dieser Datei
1 
7 #pragma once
8 
9 #include "ASN1TemplateUtil.h"
10 
11 #include <openssl/asn1.h>
12 #include <QSharedPointer>
13 
14 
15 namespace governikus
16 {
17 
28 {
29  ASN1_OBJECT* mProtocol;
30  ASN1_TYPE* mRequiredData;
31  ASN1_TYPE* mOptionalData;
32 };
33 
34 DECLARE_ASN1_FUNCTIONS(securityinfo_st)
35 #if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
36 DECLARE_STACK_OF(securityinfo_st)
37 #else
38 DEFINE_STACK_OF(securityinfo_st)
39 #endif
40 
41 /*
42  * Because OpenSSL's template macro system does not support inheritance,
43  * we wrap the securityinfo_st in class SecurityInfo and use this for inheritance.
44  */
46 {
47  Q_DISABLE_COPY(SecurityInfo)
48  friend class QSharedPointer<SecurityInfo>;
49 
50  const QSharedPointer<const securityinfo_st> mDelegate;
51 
52  explicit SecurityInfo(const QSharedPointer<const securityinfo_st>& pDelegate);
53 
54  /*
55  * Sub classes must override this method to allow the base class to access
56  * the protocol's ASN1_OBJECT pointer.
57  */
58  virtual ASN1_OBJECT* getProtocolObjectIdentifier() const;
59 
60  protected:
61  SecurityInfo();
62 
63  public:
64  static QSharedPointer<SecurityInfo> decode(const QByteArray& pBytes)
65  {
66  if (const auto& delegate = decodeObject<securityinfo_st>(pBytes))
67  {
68  return QSharedPointer<SecurityInfo>::create(delegate);
69  }
71  }
72 
73 
74  virtual ~SecurityInfo();
75 
79  QByteArray getProtocolValueBytes() const;
80 
84  QByteArray getProtocol() const;
85 };
86 
87 
88 DECLARE_ASN1_OBJECT(securityinfo_st)
89 
90 } // namespace governikus
DECLARE_ASN1_OBJECT
#define DECLARE_ASN1_OBJECT(name)
Definition: ASN1TemplateUtil.h:169
governikus::SecurityInfo::SecurityInfo
SecurityInfo()
Definition: SecurityInfo.cpp:41
ChipAuthenticationInfo.h
governikus::SecurityInfo
Definition: SecurityInfo.h:46
KnownOIDs.h
governikus::SecurityInfo::QSharedPointer< SecurityInfo >
friend class QSharedPointer< SecurityInfo >
Definition: SecurityInfo.h:48
governikus::SecurityInfo::~SecurityInfo
virtual ~SecurityInfo()
Definition: SecurityInfo.cpp:72
ASN1Util.h
governikus::securityinfo_st::mRequiredData
ASN1_TYPE * mRequiredData
Definition: SecurityInfo.h:30
governikus::securityinfo_st::mOptionalData
ASN1_TYPE * mOptionalData
Definition: SecurityInfo.h:31
governikus::securityinfo_st
Definition: SecurityInfo.h:28
IMPLEMENT_ASN1_OBJECT
#define IMPLEMENT_ASN1_OBJECT(name)
Definition: ASN1TemplateUtil.h:144
governikus
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15
governikus::securityinfo_st::mProtocol
ASN1_OBJECT * mProtocol
Definition: SecurityInfo.h:29
governikus::Asn1ObjectUtil::getValue
static QByteArray getValue(const ASN1_OBJECT *pAsn1Object)
Definition: ASN1Util.cpp:45
SecurityInfo.h
governikus::SecurityInfo::getProtocolValueBytes
QByteArray getProtocolValueBytes() const
Definition: SecurityInfo.cpp:60
ASN1TemplateUtil.h
governikus::SecurityInfo::decode
static QSharedPointer< SecurityInfo > decode(const QByteArray &pBytes)
Definition: SecurityInfo.h:64
governikus::Asn1ObjectUtil::convertTo
static QByteArray convertTo(const ASN1_OBJECT *pAsn1Object)
Definition: ASN1Util.cpp:24
governikus::SecurityInfo::getProtocol
QByteArray getProtocol() const
Definition: SecurityInfo.cpp:66
PaceInfo.h