AusweisApp2
Lade ...
Suche ...
Keine Treffer
CVCertificate.h
gehe zur Dokumentation dieser Datei
1
9#pragma once
10
11
12#include "CVCertificateBody.h"
13
14
15#include <QByteArrayList>
16#include <QDebug>
17
18#include <openssl/ecdsa.h>
19
20
21namespace governikus
22{
23
40 : public ASN1_OCTET_STRING
41{
42 // we use inheritance, because the structure ValidityDate is already a typedef of ASN1_OCTET_STRING
43 // and we cannot have two template specializations for the same type.
44};
45
46
47using CVCertificate = struct cvcertificate_st
48{
49 CVCertificateBody* mBody;
51 ECDSA_SIG* mEcdsaSignature;
52
53 static QVector<QSharedPointer<const cvcertificate_st>> fromRaw(const QByteArrayList& pByteList);
54 static QSharedPointer<const cvcertificate_st> fromRaw(const QByteArray& pBytes);
55#ifndef QT_NO_DEBUG
56 static QSharedPointer<const cvcertificate_st> fromHex(const QByteArray& pBytes);
57#endif
58 [[nodiscard]] QByteArray encode() const;
59
60 [[nodiscard]] const CVCertificateBody& getBody() const;
61 [[nodiscard]] QByteArray getRawBody() const;
62 [[nodiscard]] const ECDSA_SIG* getEcdsaSignature() const;
63 [[nodiscard]] QByteArray getRawSignature() const;
64 [[nodiscard]] QByteArray getDerSignature() const;
65
66 [[nodiscard]] bool isValidOn(const QDateTime& pValidationDate) const;
67 [[nodiscard]] bool isIssuedBy(const cvcertificate_st& pIssuer) const;
68
69 static int decodeCallback(int pOperation, ASN1_VALUE** pVal, const ASN1_ITEM* pIt, void* pExarg);
70};
71
72
73DECLARE_ASN1_FUNCTIONS(CVCertificate)
75
76
77inline bool operator==(const CVCertificate& pLeft, const CVCertificate& pRight)
78{
79 return pLeft.getRawBody() == pRight.getRawBody() && pLeft.getRawSignature() == pRight.getRawSignature();
80}
81
82
83inline bool operator!=(const CVCertificate& pLeft, const CVCertificate& pRight)
84{
85 return !(pLeft == pRight);
86}
87
88
89} // namespace governikus
90
91QDebug operator<<(QDebug pDbg, const governikus::CVCertificate& pCvc);
92QDebug operator<<(QDebug pDbg, const QSharedPointer<const governikus::CVCertificate>& pCvc);
93QDebug operator<<(QDebug pDbg, const QSharedPointer<governikus::CVCertificate>& pCvc);
94QDebug operator<<(QDebug pDbg, const QVector<QSharedPointer<governikus::CVCertificate>>& pCvcs);
#define DECLARE_ASN1_OBJECT(name)
Definition ASN1TemplateUtil.h:178
QDebug operator<<(QDebug pDbg, const governikus::CVCertificate &pCvc)
Definition CVCertificate.cpp:173
QByteArray fromHex(const std::string &pString)
Definition SmartManager.cpp:39
Implementation of GeneralAuthenticate response APDUs.
Definition CommandApdu.h:16
cvcertificate_st { CVCertificateBody *mBody CVCertificate
Definition CVCertificate.h:49
const CVCertificateBody & getBody() const
certificateprofilebody_st { ASN1_OCTET_STRING *mCertificateProfileIdentifier CVCertificateBody
Definition CVCertificateBody.h:46
QByteArray getRawSignature() const
Definition CVCertificate.cpp:144
bool isValidOn(const QDateTime &pValidationDate) const
Definition CVCertificate.cpp:160
QByteArray getDerSignature() const
Definition CVCertificate.cpp:150
bool operator!=(const CVCertificate &pLeft, const CVCertificate &pRight)
Definition CVCertificate.h:83
bool isIssuedBy(const cvcertificate_st &pIssuer) const
QByteArray getRawBody() const
Definition CVCertificate.cpp:131
const ECDSA_SIG * getEcdsaSignature() const
Definition CVCertificate.cpp:138
QByteArray encode() const
SIGNATURE * mSignature
Definition CVCertificate.h:50
ECDSA_SIG * mEcdsaSignature
Definition CVCertificate.h:51
According to.
Definition CVCertificate.h:41