AusweisApp2
EcdsaPublicKey.h
gehe zur Dokumentation dieser Datei
1 
5 #pragma once
6 
7 #include "ASN1TemplateUtil.h"
8 
9 #include <QByteArray>
10 #include <QSharedPointer>
11 
12 #include <openssl/asn1t.h>
13 #include <openssl/ec.h>
14 
15 
16 namespace governikus
17 {
18 
39 using EcdsaPublicKey = struct ecdsapublickey_st
40 {
41  ASN1_OBJECT* mObjectIdentifier;
42  ASN1_OCTET_STRING* mPrimeModulus;
43  ASN1_OCTET_STRING* mFirstCoefficient;
44  ASN1_OCTET_STRING* mSecondCoefficient;
45  ASN1_OCTET_STRING* mBasePoint;
46  ASN1_OCTET_STRING* mOrderOfTheBasePoint;
47  ASN1_OCTET_STRING* mPublicPoint;
48  ASN1_OCTET_STRING* mCofactor;
49  EC_KEY* mEcKey;
50 
51  static QSharedPointer<ecdsapublickey_st> fromHex(const QByteArray& pHexValue);
52  static QSharedPointer<ecdsapublickey_st> decode(const QByteArray& pBytes);
53  QByteArray encode();
54 
55  [[nodiscard]] QByteArray getPublicKeyOid() const;
56 
60  [[nodiscard]] QByteArray getPublicKeyOidValueBytes() const;
61  [[nodiscard]] QByteArray getUncompressedPublicPoint() const;
62  [[nodiscard]] const EC_KEY* getEcKey() const;
63 
64  private:
65  void initEcKey();
66 
67  public:
68  static int decodeCallback(int pOperation, ASN1_VALUE** pVal, const ASN1_ITEM* pIt, void* pExarg);
69 };
70 
71 
72 DECLARE_ASN1_FUNCTIONS(EcdsaPublicKey)
74 
75 } // namespace governikus
DECLARE_ASN1_OBJECT
#define DECLARE_ASN1_OBJECT(name)
Definition: ASN1TemplateUtil.h:164
governikus::EcdsaPublicKey
struct ecdsapublickey_st { ASN1_OBJECT *mObjectIdentifier EcdsaPublicKey
According to TR-03110-3 chapter D elliptic curve public keys are defined as follows:
Definition: EcdsaPublicKey.h:41
governikus::mPrimeModulus
ASN1_OCTET_STRING * mPrimeModulus
Definition: EcdsaPublicKey.h:42
governikus::getPublicKeyOid
QByteArray getPublicKeyOid() const
Definition: EcdsaPublicKey.cpp:106
ASN1Util.h
governikus::mPublicPoint
ASN1_OCTET_STRING * mPublicPoint
Definition: EcdsaPublicKey.h:47
governikus::getEcKey
const EC_KEY * getEcKey() const
Definition: EcdsaPublicKey.cpp:124
governikus::mSecondCoefficient
ASN1_OCTET_STRING * mSecondCoefficient
Definition: EcdsaPublicKey.h:44
governikus::mBasePoint
ASN1_OCTET_STRING * mBasePoint
Definition: EcdsaPublicKey.h:45
governikus::mOrderOfTheBasePoint
ASN1_OCTET_STRING * mOrderOfTheBasePoint
Definition: EcdsaPublicKey.h:46
governikus::Asn1OctetStringUtil::getValue
static QByteArray getValue(ASN1_OCTET_STRING *pAsn1OctetString)
Definition: ASN1Util.cpp:66
governikus::getPublicKeyOidValueBytes
QByteArray getPublicKeyOidValueBytes() const
Definition: EcdsaPublicKey.cpp:112
IMPLEMENT_ASN1_OBJECT
#define IMPLEMENT_ASN1_OBJECT(name)
Definition: ASN1TemplateUtil.h:139
governikus
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15
EcUtil.h
governikus::mEcKey
EC_KEY * mEcKey
Definition: EcdsaPublicKey.h:49
governikus::mFirstCoefficient
ASN1_OCTET_STRING * mFirstCoefficient
Definition: EcdsaPublicKey.h:43
governikus::Asn1ObjectUtil::getValue
static QByteArray getValue(const ASN1_OBJECT *pAsn1Object)
Definition: ASN1Util.cpp:46
governikus::encodeObject
QByteArray encodeObject(T *pObject)
Template function for encoding an OpenSSL type as DER encoded QByteArray.
Definition: ASN1TemplateUtil.h:64
governikus::EcUtil::create
static QSharedPointer< EC_GROUP > create(EC_GROUP *pEcGroup)
Definition: EcUtil.h:99
governikus::getUncompressedPublicPoint
QByteArray getUncompressedPublicPoint() const
Definition: EcdsaPublicKey.cpp:118
EcdsaPublicKey.h
ASN1TemplateUtil.h
governikus::Asn1ObjectUtil::convertTo
static QByteArray convertTo(const ASN1_OBJECT *pAsn1Object)
Definition: ASN1Util.cpp:25
governikus::mCofactor
ASN1_OCTET_STRING * mCofactor
Definition: EcdsaPublicKey.h:48
governikus::encode
QByteArray encode() const