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
#define DECLARE_ASN1_OBJECT(name)
Definition: ASN1TemplateUtil.h:164
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15
ASN1_OCTET_STRING * mPrimeModulus
Definition: EcdsaPublicKey.h:42
const EC_KEY * getEcKey() const
Definition: EcdsaPublicKey.cpp:124
ASN1_OCTET_STRING * mSecondCoefficient
Definition: EcdsaPublicKey.h:44
ASN1_OCTET_STRING * mBasePoint
Definition: EcdsaPublicKey.h:45
ASN1_OCTET_STRING * mCofactor
Definition: EcdsaPublicKey.h:48
EC_KEY * mEcKey
Definition: EcdsaPublicKey.h:49
ASN1_OCTET_STRING * mOrderOfTheBasePoint
Definition: EcdsaPublicKey.h:46
ASN1_OCTET_STRING * mFirstCoefficient
Definition: EcdsaPublicKey.h:43
QByteArray encode() const
ASN1_OCTET_STRING * mPublicPoint
Definition: EcdsaPublicKey.h:47
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
QByteArray getPublicKeyOidValueBytes() const
Definition: EcdsaPublicKey.cpp:112
QByteArray getPublicKeyOid() const
Definition: EcdsaPublicKey.cpp:106
QByteArray getUncompressedPublicPoint() const
Definition: EcdsaPublicKey.cpp:118