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  [[nodiscard]] 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  [[nodiscard]] QByteArray getProtocolValueBytes() const;
80 
84  [[nodiscard]] QByteArray getProtocol() const;
85 };
86 
87 
88 DECLARE_ASN1_OBJECT(securityinfo_st)
89 
90 } // namespace governikus
Definition: SecurityInfo.h:45
Definition: SecurityInfo.h:27
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:14
virtual ~SecurityInfo()
Definition: SecurityInfo.cpp:72
static QSharedPointer< SecurityInfo > decode(const QByteArray &pBytes)
Definition: SecurityInfo.h:64
ASN1_TYPE * mOptionalData
Definition: SecurityInfo.h:31
QByteArray getProtocol() const
Definition: SecurityInfo.cpp:66
#define DECLARE_ASN1_OBJECT(name)
Definition: ASN1TemplateUtil.h:169
ASN1_TYPE * mRequiredData
Definition: SecurityInfo.h:30
friend class QSharedPointer< SecurityInfo >
Definition: SecurityInfo.h:48
ASN1_OBJECT * mProtocol
Definition: SecurityInfo.h:29
QByteArray getProtocolValueBytes() const
Definition: SecurityInfo.cpp:60