11#include <QSharedPointer>
13#include <openssl/asn1t.h>
14#include <openssl/evp.h>
16#if OPENSSL_VERSION_NUMBER < 0x30000000L
17 #include <openssl/ec.h>
46 ASN1_OBJECT* mObjectIdentifier;
55 static QSharedPointer<ecdsapublickey_st>
fromHex(
const QByteArray& pHexValue);
56 static QSharedPointer<ecdsapublickey_st> decode(
const QByteArray& pBytes);
74 [[nodiscard]] QSharedPointer<EVP_PKEY>
createKey(
const QByteArray& pPublicPoint)
const;
83 [[nodiscard]] QSharedPointer<EVP_PKEY>
createKey()
const;
89 QSharedPointer<BIGNUM> p;
90 QSharedPointer<BIGNUM> a;
91 QSharedPointer<BIGNUM> b;
92 QSharedPointer<BIGNUM> order;
93 QSharedPointer<BIGNUM> cofactor;
95 [[nodiscard]]
bool isValid()
const
97 return !p.isNull() && !a.isNull() && !b.isNull() && !order.isNull();
103 [[nodiscard]]
static bool isAllValid(
const ecdsapublickey_st* pKey);
104 [[nodiscard]]
static bool isAllInvalid(
const ecdsapublickey_st* pKey);
106 [[nodiscard]] CurveData createCurveData()
const;
107 [[nodiscard]] QSharedPointer<EVP_PKEY>
createKey(
const uchar* pPublicPoint,
int pPublicPointLength)
const;
108#if OPENSSL_VERSION_NUMBER < 0x30000000L
109 [[nodiscard]] QSharedPointer<EC_GROUP> createGroup(
const CurveData& pData)
const;
113 static int decodeCallback(
int pOperation, ASN1_VALUE** pVal,
const ASN1_ITEM* pIt,
void* pExarg);
#define DECLARE_ASN1_OBJECT(name)
Definition: ASN1TemplateUtil.h:178
QByteArray fromHex(const std::string &pString)
Definition: SmartManager.cpp:39
Implementation of GeneralAuthenticate response APDUs.
Definition: CommandApdu.h:16
ASN1_OCTET_STRING * mPrimeModulus
Definition: EcdsaPublicKey.h:47
ASN1_OCTET_STRING * mSecondCoefficient
Definition: EcdsaPublicKey.h:49
ASN1_OCTET_STRING * mBasePoint
Definition: EcdsaPublicKey.h:50
ASN1_OCTET_STRING * mCofactor
Definition: EcdsaPublicKey.h:53
bool isComplete() const
Definition: EcdsaPublicKey.cpp:97
SecurityProtocol getSecurityProtocol() const
Definition: EcdsaPublicKey.cpp:121
ASN1_OCTET_STRING * mOrderOfTheBasePoint
Definition: EcdsaPublicKey.h:51
ASN1_OCTET_STRING * mFirstCoefficient
Definition: EcdsaPublicKey.h:48
QByteArray encode() const
ASN1_OCTET_STRING * mPublicPoint
Definition: EcdsaPublicKey.h:52
QSharedPointer< EVP_PKEY > createKey(const QByteArray &pPublicPoint) const
ecdsapublickey_st { ASN1_OBJECT *mObjectIdentifier EcdsaPublicKey
According to TR-03110-3 chapter D elliptic curve public keys are defined as follows:
Definition: EcdsaPublicKey.h:46
QByteArray getUncompressedPublicPoint() const
Definition: EcdsaPublicKey.cpp:133