AusweisApp
Lade ...
Suche ...
Keine Treffer
CVCertificateBody.h
gehe zur Dokumentation dieser Datei
1
5#pragma once
6
7#include "ASN1TemplateUtil.h"
8#include "Chat.h"
9#include "EcdsaPublicKey.h"
10#include "Oid.h"
11
12#include <QByteArray>
13#include <QCryptographicHash>
14#include <QDate>
15#include <QHash>
16#include <QSharedPointer>
17
18#include <openssl/ec.h>
19
20
21namespace governikus
22{
23
25{
26 ASN1_OCTET_STRING* mCertificateProfileIdentifier;
27 ASN1_STRING* mCertificationAuthorityReference;
30 CHAT* mChat;
31 ASN1_OCTET_STRING* mEffectiveDate;
32 ASN1_OCTET_STRING* mExpirationDate;
33 STACK_OF(ASN1_TYPE) * mExtensions;
34
36 QByteArray encode();
37
40
41 [[nodiscard]] const EcdsaPublicKey& getPublicKey() const;
43
44 [[nodiscard]] const CHAT& getCHAT() const;
45
48
51
52 [[nodiscard]] QCryptographicHash::Algorithm getHashAlgorithm() const;
53 [[nodiscard]] QByteArray getExtension(const Oid& pOid) const;
54};
55
58
59} // namespace governikus
#define DECLARE_ASN1_OBJECT(name)
Definition ASN1TemplateUtil.h:177
Implementation of GeneralAuthenticate response APDUs.
Definition CommandApdu.h:17
struct ecdsapublickey_st { ASN1_OBJECT *mObjectIdentifier; ASN1_OCTET_STRING *mPrimeModulus; ASN1_OCTET_STRING *mFirstCoefficient; ASN1_OCTET_STRING *mSecondCoefficient; ASN1_OCTET_STRING *mBasePoint; ASN1_OCTET_STRING *mOrderOfTheBasePoint; ASN1_OCTET_STRING *mPublicPoint; ASN1_OCTET_STRING *mCofactor; static QSharedPointer< ecdsapublickey_st > fromHex(const QByteArray &pHexValue); static QSharedPointer< ecdsapublickey_st > decode(const QByteArray &pBytes); QByteArray encode();[[nodiscard]] bool isComplete() const ;[[nodiscard]] SecurityProtocol getSecurityProtocol() const ;[[nodiscard]] Oid getOid() const ;[[nodiscard]] QByteArray getUncompressedPublicPoint() const ;[[nodiscard]] QSharedPointer< EVP_PKEY > createKey(const QByteArray &pPublicPoint) const ;[[nodiscard]] QSharedPointer< EVP_PKEY > createKey() const ; private: struct CurveData { QSharedPointer< BIGNUM > p; QSharedPointer< BIGNUM > a; QSharedPointer< BIGNUM > b; QSharedPointer< BIGNUM > order; QSharedPointer< BIGNUM > cofactor;[[nodiscard]] bool isValid() const { return !p.isNull() &&!a.isNull() &&!b.isNull() &&!order.isNull(); } };[[nodiscard]] static bool isAllValid(const ecdsapublickey_st *pKey);[[nodiscard]] static bool isAllInvalid(const ecdsapublickey_st *pKey);[[nodiscard]] CurveData createCurveData() const ;[[nodiscard]] QSharedPointer< EVP_PKEY > createKey(const uchar *pPublicPoint, int pPublicPointLength) const ;[[nodiscard]] QSharedPointer< EC_GROUP > createGroup(const CurveData &pData) const ; public: static int decodeCallback(int pOperation, ASN1_VALUE **pVal, const ASN1_ITEM *pIt, void *pExarg);} EcdsaPublicKey
According to TR-03110-3 chapter D elliptic curve public keys are defined as follows:
Definition EcdsaPublicKey.h:42
struct chat_st { ASN1_OBJECT *mType; ASN1_OCTET_STRING *mTemplate; static QSharedPointer< chat_st > fromHex(const QByteArray &pHexValue); static QSharedPointer< chat_st > decode(const QByteArray &pBytes); chat_st(const chat_st &pCopy); chat_st &operator=(const chat_st &)=delete; ~chat_st();[[nodiscard]] Oid getType() const ;[[nodiscard]] QByteArray getTemplate() const ;[[nodiscard]] AccessRole getAccessRole() const ;[[nodiscard]] QSet< AccessRight > getAccessRights() const ; void setAccessRights(const QSet< AccessRight > &pAccessRights);[[nodiscard]] bool hasAccessRight(AccessRight pAccessRight) const ; void removeAllAccessRights(); void removeAccessRight(AccessRight pAccessRight); private: void setTemplateBit(uint pBitIndex, bool pOn); public: static int decodeCallback(int pOperation, ASN1_VALUE **pVal, const ASN1_ITEM *pIt, void *pExarg);} CHAT
According to.
Definition Chat.h:68
struct certificateprofilebody_st { ASN1_OCTET_STRING *mCertificateProfileIdentifier; ASN1_STRING *mCertificationAuthorityReference; EcdsaPublicKey *mPublicKey; ASN1_STRING *mCertificateHolderReference; CHAT *mChat; ASN1_OCTET_STRING *mEffectiveDate; ASN1_OCTET_STRING *mExpirationDate; STACK_OF(ASN1_TYPE) *mExtensions; static QSharedPointer< certificateprofilebody_st > decode(const QByteArray &pBytes); QByteArray encode();[[nodiscard]] QByteArray getCertificateProfileIdentifier() const ;[[nodiscard]] QByteArray getCertificationAuthorityReference() const ;[[nodiscard]] const EcdsaPublicKey &getPublicKey() const ;[[nodiscard]] QByteArray getCertificateHolderReference() const ;[[nodiscard]] const CHAT &getCHAT() const ; void setCertificateExpirationDate(QDate date);[[nodiscard]] QDate getCertificateExpirationDate() const ; void setCertificateEffectiveDate(QDate date);[[nodiscard]] QDate getCertificateEffectiveDate() const ;[[nodiscard]] QCryptographicHash::Algorithm getHashAlgorithm() const ;[[nodiscard]] QByteArray getExtension(const Oid &pOid) const ;} CVCertificateBody
Definition CVCertificateBody.h:24
QSharedPointer< T > decodeObject(const QByteArray &pData, bool pLogging=true)
Template function for decoding an OpenSSL type from DER encoded QByteArray.
Definition ASN1TemplateUtil.h:114