AusweisApp
 
Lade ...
Suche ...
Keine Treffer
SignatureChecker.h
gehe zur Dokumentation dieser Datei
1
4
5#pragma once
6
8
9#include <QByteArray>
10#include <QList>
11#include <QSharedPointer>
12
13
14namespace governikus
15{
16
18{
19 private:
20 const QList<QSharedPointer<const CVCertificate>> mCertificateChain;
21
22 public:
23 explicit SignatureChecker(const QList<QSharedPointer<const CVCertificate>>& pCertificateChain);
24 ~SignatureChecker() = default;
25
26 [[nodiscard]] bool check() const;
27 static bool checkSignature(const QSharedPointer<const CVCertificate>& pCert, const QSharedPointer<const CVCertificate>& pSigningCert, const EcdsaPublicKey* pKey);
28 static bool checkSignature(const QSharedPointer<EVP_PKEY>& pSigningKey, const QByteArray& pSignature, const QByteArray& pData, QCryptographicHash::Algorithm pAlgorithm);
29
30 private:
31 static QByteArray plainToOpenSsl(const QByteArray& pSignature);
32};
33
34} // namespace governikus
static bool checkSignature(const QSharedPointer< const CVCertificate > &pCert, const QSharedPointer< const CVCertificate > &pSigningCert, const EcdsaPublicKey *pKey)
Definition SignatureChecker.cpp:75
SignatureChecker(const QList< QSharedPointer< const CVCertificate > > &pCertificateChain)
Definition SignatureChecker.cpp:34
bool check() const
Definition SignatureChecker.cpp:40
Defines the AccessRight and AccessRole enum.
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