AusweisApp2
EcdhKeyAgreement.h
gehe zur Dokumentation dieser Datei
1 
5 #pragma once
6 
7 #include "CardConnectionWorker.h"
8 #include "asn1/SecurityInfo.h"
9 #include "pace/KeyAgreement.h"
11 
12 #include <QSharedPointer>
13 #include <openssl/ec.h>
14 
15 class test_EcdhKeyAgreement;
16 
17 namespace governikus
18 {
19 
21  : public KeyAgreement
22 {
23  friend class ::test_EcdhKeyAgreement;
24 
25  private:
26  QSharedPointer<EcdhGenericMapping> mMapping;
27  QSharedPointer<EC_POINT> mTerminalPublicKey;
28  QSharedPointer<const EC_POINT> mCardPublicKey;
29 
30  CardReturnCode determineEphemeralDomainParameters(const QByteArray& pNonce);
31  CardResult performKeyExchange();
32 
33  static QByteArray encodeUncompressedPublicKey(const QSharedPointer<const PaceInfo>& pPaceInfo, const QSharedPointer<const EC_GROUP>& pCurve, const QSharedPointer<const EC_POINT>& pPoint);
34 
35  KeyAgreement::CardResult determineSharedSecret(const QByteArray& pNonce) override;
36  QByteArray getUncompressedTerminalPublicKey() override;
37  QByteArray getUncompressedCardPublicKey() override;
38  QByteArray getCompressedCardPublicKey() override;
39 
40  explicit EcdhKeyAgreement(const QSharedPointer<const PaceInfo>& pPaceInfo,
41  const QSharedPointer<CardConnectionWorker>& pCardConnectionWorker,
42  const QSharedPointer<EcdhGenericMapping>& pMapping);
43 
44  public:
45  static QSharedPointer<EcdhKeyAgreement> create(const QSharedPointer<const PaceInfo>& pPaceInfo,
46  const QSharedPointer<CardConnectionWorker>& pCardConnectionWorker);
47 };
48 
49 } // namespace governikus
Definition: EcdhKeyAgreement.h:22
static QSharedPointer< EcdhKeyAgreement > create(const QSharedPointer< const PaceInfo > &pPaceInfo, const QSharedPointer< CardConnectionWorker > &pCardConnectionWorker)
Definition: EcdhKeyAgreement.cpp:41
Definition: KeyAgreement.h:28
Implementation of GeneralAuthenticate response APDUs.
Definition: CommandApdu.h:16
Definition: KeyAgreement.h:31