AusweisApp2
CVCertificateBody.h
gehe zur Dokumentation dieser Datei
1 
5 #pragma once
6 
7 #include "ASN1TemplateUtil.h"
8 #include "ASN1Util.h"
9 #include "Chat.h"
10 #include "EcdsaPublicKey.h"
11 
12 #include <QCryptographicHash>
13 #include <QDate>
14 #include <QMap>
15 #include <QSharedPointer>
16 
17 #include <openssl/ec.h>
18 
19 
20 namespace governikus
21 {
22 
23 using CERTIFICATEEXTENSION = struct CERTIFICATEEXTENSION_st
24 {
25  ASN1_OBJECT* mOid;
26  ASN1_OCTET_STRING* mObject1;
27  ASN1_OCTET_STRING* mObject2;
28  ASN1_OCTET_STRING* mObject3;
29  ASN1_OCTET_STRING* mObject4;
30  ASN1_OCTET_STRING* mObject5;
31  ASN1_OCTET_STRING* mObject6;
32  ASN1_OCTET_STRING* mObject7;
33  ASN1_OCTET_STRING* mObject8;
34 };
35 DECLARE_ASN1_FUNCTIONS(CERTIFICATEEXTENSION)
36 
37 #if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
38 DECLARE_STACK_OF(CERTIFICATEEXTENSION)
39 #else
40 DEFINE_STACK_OF(CERTIFICATEEXTENSION)
41 #endif
42 
43 using CVCertificateBody = struct certificateprofilebody_st
44 {
45  ASN1_OCTET_STRING* mCertificateProfileIdentifier;
50  ASN1_OCTET_STRING* mEffectiveDate;
51  ASN1_OCTET_STRING* mExpirationDate;
53 
54  static QSharedPointer<certificateprofilebody_st> decode(const QByteArray& pBytes);
55  QByteArray encode();
56 
57  [[nodiscard]] QByteArray getCertificateProfileIdentifier() const;
58  [[nodiscard]] QByteArray getCertificationAuthorityReference() const;
59 
60  [[nodiscard]] const EcdsaPublicKey& getPublicKey() const;
61  [[nodiscard]] QByteArray getCertificateHolderReference() const;
62 
63  [[nodiscard]] const CHAT& getCHAT() const;
64 
65  void setCertificateExpirationDate(QDate date);
66  [[nodiscard]] QDate getCertificateExpirationDate() const;
67 
68  void setCertificateEffectiveDate(QDate date);
69  [[nodiscard]] QDate getCertificateEffectiveDate() const;
70 
71  [[nodiscard]] QCryptographicHash::Algorithm getHashAlgorithm() const;
72  [[nodiscard]] QMap<QByteArray, QByteArray> getExtensions() const;
73 };
74 
75 DECLARE_ASN1_FUNCTIONS(CVCertificateBody)
77 
78 } // namespace governikus
DECLARE_ASN1_OBJECT
#define DECLARE_ASN1_OBJECT(name)
Definition: ASN1TemplateUtil.h:164
governikus::EcdsaPublicKey
struct ecdsapublickey_st { ASN1_OBJECT *mObjectIdentifier EcdsaPublicKey
According to TR-03110-3 chapter D elliptic curve public keys are defined as follows:
Definition: EcdsaPublicKey.h:41
governikus::getCHAT
const CHAT & getCHAT() const
Definition: CVCertificateBody.cpp:138
governikus::getCertificateEffectiveDate
QDate getCertificateEffectiveDate() const
Definition: CVCertificateBody.cpp:165
governikus::CERTIFICATEEXTENSION
struct CERTIFICATEEXTENSION_st { ASN1_OBJECT *mOid CERTIFICATEEXTENSION
Definition: CVCertificateBody.h:25
CVCertificateBody.h
governikus::mExpirationDate
ASN1_OCTET_STRING * mExpirationDate
Definition: CVCertificateBody.h:51
governikus::mChat
CHAT * mChat
Definition: CVCertificateBody.h:49
governikus::mPublicKey
EcdsaPublicKey * mPublicKey
Definition: CVCertificateBody.h:47
governikus::mObject3
ASN1_OCTET_STRING * mObject3
Definition: CVCertificateBody.h:28
governikus::mObject7
ASN1_OCTET_STRING * mObject7
Definition: CVCertificateBody.h:32
KnownOIDs.h
governikus::mCertificateHolderReference
ASN1_STRING * mCertificateHolderReference
Definition: CVCertificateBody.h:48
ASN1Util.h
governikus::mObject8
ASN1_OCTET_STRING * mObject8
Definition: CVCertificateBody.h:33
governikus::mObject1
ASN1_OCTET_STRING * mObject1
Definition: CVCertificateBody.h:26
governikus::setCertificateExpirationDate
void setCertificateExpirationDate(QDate date)
Definition: CVCertificateBody.cpp:145
governikus::setCertificateEffectiveDate
void setCertificateEffectiveDate(QDate date)
Definition: CVCertificateBody.cpp:158
sk_CERTIFICATEEXTENSION_num
#define sk_CERTIFICATEEXTENSION_num(data)
governikus::mObject6
ASN1_OCTET_STRING * mObject6
Definition: CVCertificateBody.h:31
governikus::Asn1OctetStringUtil::getValue
static QByteArray getValue(ASN1_OCTET_STRING *pAsn1OctetString)
Definition: ASN1Util.cpp:66
governikus::getPublicKey
const EcdsaPublicKey & getPublicKey() const
Definition: CVCertificateBody.cpp:131
IMPLEMENT_ASN1_OBJECT
#define IMPLEMENT_ASN1_OBJECT(name)
Definition: ASN1TemplateUtil.h:139
governikus
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15
governikus::getExtensions
QMap< QByteArray, QByteArray > getExtensions() const
Definition: CVCertificateBody.cpp:206
governikus::Asn1BCDDateUtil::convertFromQDateToUnpackedBCD
static QByteArray convertFromQDateToUnpackedBCD(QDate date)
Definition: ASN1Util.cpp:138
governikus::STACK_OF
STACK_OF(CERTIFICATEEXTENSION) *mExtensions
governikus::mObject2
ASN1_OCTET_STRING * mObject2
Definition: CVCertificateBody.h:27
governikus::Asn1OctetStringUtil::setValue
static void setValue(const QByteArray &pValue, ASN1_OCTET_STRING *pAsn1OctetString)
Definition: ASN1Util.cpp:60
governikus::getCertificationAuthorityReference
QByteArray getCertificationAuthorityReference() const
Definition: CVCertificateBody.cpp:125
governikus::CHAT
struct chat_st { ASN1_OBJECT *mType CHAT
According to.
Definition: Chat.h:67
governikus::getHashAlgorithm
QCryptographicHash::Algorithm getHashAlgorithm() const
Definition: CVCertificateBody.cpp:177
governikus::Asn1BCDDateUtil::convertFromUnpackedBCDToQDate
static QDate convertFromUnpackedBCDToQDate(ASN1_OCTET_STRING *pDateBCD)
Definition: ASN1Util.cpp:158
governikus::encodeObject
QByteArray encodeObject(T *pObject)
Template function for encoding an OpenSSL type as DER encoded QByteArray.
Definition: ASN1TemplateUtil.h:64
governikus::mObject4
ASN1_OCTET_STRING * mObject4
Definition: CVCertificateBody.h:29
governikus::CVCertificateBody
struct certificateprofilebody_st { ASN1_OCTET_STRING *mCertificateProfileIdentifier CVCertificateBody
Definition: CVCertificateBody.h:45
governikus::mCertificationAuthorityReference
ASN1_STRING * mCertificationAuthorityReference
Definition: CVCertificateBody.h:46
governikus::getCertificateExpirationDate
QDate getCertificateExpirationDate() const
Definition: CVCertificateBody.cpp:152
EcdsaPublicKey.h
governikus::mEffectiveDate
ASN1_OCTET_STRING * mEffectiveDate
Definition: CVCertificateBody.h:50
governikus::KnownOIDs::id_ta::ECDSA_SHA_1
@ ECDSA_SHA_1
ASN1TemplateUtil.h
Chat.h
governikus::Asn1ObjectUtil::convertTo
static QByteArray convertTo(const ASN1_OBJECT *pAsn1Object)
Definition: ASN1Util.cpp:25
sk_CERTIFICATEEXTENSION_value
#define sk_CERTIFICATEEXTENSION_value(data, i)
governikus::getCertificateHolderReference
QByteArray getCertificateHolderReference() const
Definition: CVCertificateBody.cpp:171
governikus::encode
QByteArray encode() const
governikus::getCertificateProfileIdentifier
QByteArray getCertificateProfileIdentifier() const
Definition: CVCertificateBody.cpp:119
governikus::mObject5
ASN1_OCTET_STRING * mObject5
Definition: CVCertificateBody.h:30