AusweisApp2
Lade ...
Suche ...
Keine Treffer
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
16#include <openssl/ecdsa.h>
17
18
19namespace governikus
20{
21
38 : public ASN1_OCTET_STRING
39{
40 // we use inheritance, because the structure ValidityDate is already a typedef of ASN1_OCTET_STRING
41 // and we cannot have two template specializations for the same type.
42};
43
44
45using CVCertificate = struct cvcertificate_st
46{
47 CVCertificateBody* mBody;
49 ECDSA_SIG* mEcdsaSignature;
50
51 static QVector<QSharedPointer<const cvcertificate_st>> fromRaw(const QByteArrayList& pByteList);
52 static QSharedPointer<const cvcertificate_st> fromRaw(const QByteArray& pBytes);
53#ifndef QT_NO_DEBUG
54 static QSharedPointer<const cvcertificate_st> fromHex(const QByteArray& pBytes);
55#endif
56 [[nodiscard]] QByteArray encode() const;
57
58 [[nodiscard]] const CVCertificateBody& getBody() const;
59 [[nodiscard]] QByteArray getRawBody() const;
60 [[nodiscard]] const ECDSA_SIG* getEcdsaSignature() const;
61 [[nodiscard]] QByteArray getRawSignature() const;
62 [[nodiscard]] QByteArray getDerSignature() const;
63
64 [[nodiscard]] bool isValidOn(const QDateTime& pValidationDate) const;
65 [[nodiscard]] bool isIssuedBy(const cvcertificate_st& pIssuer) const;
66
67 static int decodeCallback(int pOperation, ASN1_VALUE** pVal, const ASN1_ITEM* pIt, void* pExarg);
68};
69
70
71DECLARE_ASN1_FUNCTIONS(CVCertificate)
73
74
75inline bool operator==(const CVCertificate& pLeft, const CVCertificate& pRight)
76{
77 return pLeft.getRawBody() == pRight.getRawBody() && pLeft.getRawSignature() == pRight.getRawSignature();
78}
79
80
81inline bool operator!=(const CVCertificate& pLeft, const CVCertificate& pRight)
82{
83 return !(pLeft == pRight);
84}
85
86
87} // namespace governikus
88
89QDebug operator<<(QDebug pDbg, const governikus::CVCertificate& pCvc);
90QDebug operator<<(QDebug pDbg, const QSharedPointer<const governikus::CVCertificate>& pCvc);
91QDebug operator<<(QDebug pDbg, const QSharedPointer<governikus::CVCertificate>& pCvc);
92QDebug operator<<(QDebug pDbg, const QVector<QSharedPointer<governikus::CVCertificate>>& pCvcs);
#define DECLARE_ASN1_OBJECT(name)
Definition: ASN1TemplateUtil.h:169
QDebug operator<<(QDebug pDbg, const governikus::CVCertificate &pCvc)
Definition: CVCertificate.cpp:173
QByteArray fromHex(const std::string &pString)
Definition: SmartManager.cpp:39
A simple template renderer.
Definition: ActivationContext.h:15
cvcertificate_st { CVCertificateBody *mBody CVCertificate
Definition: CVCertificate.h:47
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:81
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:48
ECDSA_SIG * mEcdsaSignature
Definition: CVCertificate.h:49
According to.
Definition: CVCertificate.h:39