AusweisApp2
CVCertificate.h
gehe zur Dokumentation dieser Datei
1 
7 #pragma once
8 
9 
10 #include "CVCertificateBody.h"
11 
12 
13 #include <QByteArrayList>
14 #include <QDebug>
15 #include <QString>
16 
17 #include <openssl/ecdsa.h>
18 
19 
20 namespace governikus
21 {
22 
38 struct SIGNATURE
39  : public ASN1_OCTET_STRING
40 {
41  // we use inheritance, because the structure ValidityDate is already a typedef of ASN1_OCTET_STRING
42  // and we cannot have two template specializations for the same type.
43 };
44 
45 
46 using CVCertificate = struct cvcertificate_st
47 {
50  ECDSA_SIG* mEcdsaSignature;
51 
52  static QVector<QSharedPointer<const cvcertificate_st>> fromHex(const QByteArrayList& pHexByteList);
53  static QSharedPointer<const cvcertificate_st> fromHex(const QByteArray& pHexBytes);
54  QByteArray encode() const;
55 
56  const CVCertificateBody& getBody() const;
57  QByteArray getRawBody() const;
58  const ECDSA_SIG* getEcdsaSignature() const;
59  QByteArray getRawSignature() const;
60 
61  bool isValidOn(const QDateTime& pValidationDate) const;
62  bool isIssuedBy(const cvcertificate_st& pIssuer) const;
63 
64  static int decodeCallback(int pOperation, ASN1_VALUE** pVal, const ASN1_ITEM* pIt, void* pExarg);
65 };
66 
67 
68 DECLARE_ASN1_FUNCTIONS(CVCertificate)
70 
71 
72 inline bool operator==(const CVCertificate& pLeft, const CVCertificate& pRight)
73 {
74  return pLeft.getRawBody() == pRight.getRawBody() && pLeft.getRawSignature() == pRight.getRawSignature();
75 }
76 
77 
78 inline bool operator!=(const CVCertificate& pLeft, const CVCertificate& pRight)
79 {
80  return !(pLeft == pRight);
81 }
82 
83 
84 } // namespace governikus
85 
86 QDebug operator<<(QDebug pDbg, const governikus::CVCertificate& pCvc);
87 QDebug operator<<(QDebug pDbg, const QSharedPointer<const governikus::CVCertificate>& pCvc);
88 QDebug operator<<(QDebug pDbg, QSharedPointer<governikus::CVCertificate>& pCvc);
89 QDebug operator<<(QDebug pDbg, const QVector<QSharedPointer<governikus::CVCertificate>>& pCvcs);
According to.
Definition: CVCertificate.h:38
bool operator!=(const CVCertificate &pLeft, const CVCertificate &pRight)
Definition: CVCertificate.h:78
QByteArray getRawBody() const
Definition: CVCertificate.cpp:121
QDebug operator<<(QDebug pDbg, const governikus::CVCertificate &pCvc)
Definition: CVCertificate.cpp:153
const ECDSA_SIG * getEcdsaSignature() const
Definition: CVCertificate.cpp:128
bool isValidOn(const QDateTime &pValidationDate) const
Definition: CVCertificate.cpp:140
bool isIssuedBy(const cvcertificate_st &pIssuer) const
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:14
QByteArray getRawSignature() const
Definition: CVCertificate.cpp:134
ECDSA_SIG * mEcdsaSignature
Definition: CVCertificate.h:50
struct cvcertificate_st { CVCertificateBody *mBody CVCertificate
Definition: CVCertificate.h:48
#define DECLARE_ASN1_OBJECT(name)
Definition: ASN1TemplateUtil.h:169
QByteArray encode() const
SIGNATURE * mSignature
Definition: CVCertificate.h:49
struct certificateprofilebody_st { ASN1_OCTET_STRING *mCertificateProfileIdentifier CVCertificateBody
Definition: CVCertificateBody.h:46
const CVCertificateBody & getBody() const