AusweisApp2
ASN1Util.h
gehe zur Dokumentation dieser Datei
1 
7 #pragma once
8 
9 #include <openssl/asn1t.h>
10 #include <openssl/err.h>
11 
12 #include <QSharedPointer>
13 #include <QString>
14 
15 
19 #if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
20 DECLARE_STACK_OF(ASN1_OCTET_STRING)
21 #else
22 DEFINE_STACK_OF(ASN1_OCTET_STRING)
23 #endif
24 
25 namespace governikus
26 {
27 
28 class Asn1Util
29 {
30  private:
31  Asn1Util() = delete;
32  ~Asn1Util() = delete;
33 
34  public:
38  static QByteArray encode(int pClass, int pTag, const QByteArray& pData, bool pConstructed = false);
39 };
40 
41 
46 {
47  private:
48  Asn1OctetStringUtil() = delete;
49  ~Asn1OctetStringUtil() = delete;
50 
51  public:
52  static void setValue(const QByteArray& pValue, ASN1_OCTET_STRING* pAsn1OctetString);
53  static QByteArray getValue(ASN1_OCTET_STRING* pAsn1OctetString);
54 };
55 
56 
61 {
62  private:
63  Asn1StringUtil() = delete;
64  ~Asn1StringUtil() = delete;
65 
66  public:
67  static void setValue(const QString& pString, ASN1_STRING* pOut);
68  static QString getValue(const ASN1_STRING* pString);
69 };
70 
71 
76 {
77  private:
78  Asn1TypeUtil() = delete;
79  ~Asn1TypeUtil() = delete;
80 
81  public:
82 #if OPENSSL_VERSION_NUMBER < 0x30000000L
83  static QByteArray encode(ASN1_TYPE* pAny);
84 #else
85  static QByteArray encode(const ASN1_TYPE* pAny);
86 #endif
87 };
88 
89 
94 {
95  private:
96  Asn1IntegerUtil() = delete;
97  ~Asn1IntegerUtil() = delete;
98 
99  public:
100  [[nodiscard]] static int getValue(const ASN1_INTEGER* pInteger);
101  [[nodiscard]] static QByteArray encode(int pValue);
102 };
103 
104 
109 {
110  private:
111  Asn1BCDDateUtil() = delete;
112  ~Asn1BCDDateUtil() = delete;
113 
114  public:
115  static QByteArray convertFromQDateToUnpackedBCD(QDate date);
116  static QDate convertFromUnpackedBCDToQDate(const ASN1_OCTET_STRING* pDateBCD);
117 };
118 
119 
120 } // namespace governikus
Utility for BCD coded dates.
Definition: ASN1Util.h:109
static QByteArray convertFromQDateToUnpackedBCD(QDate date)
Definition: ASN1Util.cpp:124
static QDate convertFromUnpackedBCDToQDate(const ASN1_OCTET_STRING *pDateBCD)
Definition: ASN1Util.cpp:144
Utility for OpenSSL type ASN1_INTEGER, i.e.
Definition: ASN1Util.h:94
static int getValue(const ASN1_INTEGER *pInteger)
Definition: ASN1Util.cpp:92
static QByteArray encode(int pValue)
Definition: ASN1Util.cpp:109
Utility for OpenSSL type ASN1_OCTET_STRING, i.e.
Definition: ASN1Util.h:46
static QByteArray getValue(ASN1_OCTET_STRING *pAsn1OctetString)
Definition: ASN1Util.cpp:26
static void setValue(const QByteArray &pValue, ASN1_OCTET_STRING *pAsn1OctetString)
Definition: ASN1Util.cpp:20
Utility for OpenSSL type ASN1_STRING, i.e.
Definition: ASN1Util.h:61
static QString getValue(const ASN1_STRING *pString)
Definition: ASN1Util.cpp:44
static void setValue(const QString &pString, ASN1_STRING *pOut)
Definition: ASN1Util.cpp:37
Utility for OpenSSL type ASN1_TYPE, i.e.
Definition: ASN1Util.h:76
static QByteArray encode(ASN1_TYPE *pAny)
Definition: ASN1Util.cpp:67
Definition: ASN1Util.h:29
static QByteArray encode(int pClass, int pTag, const QByteArray &pData, bool pConstructed=false)
Encodes the data as ASN.1 object with specified tag byte.
Definition: ASN1Util.cpp:166
A simple template renderer.
Definition: ActivationContext.h:15