AusweisApp2
EcdhKeyAgreement.h
gehe zur Dokumentation dieser Datei
1 
5 #pragma once
6 
7 #include "asn1/SecurityInfo.h"
8 #include "CardConnectionWorker.h"
10 #include "pace/KeyAgreement.h"
11 
12 #include <openssl/ec.h>
13 #include <QPair>
14 #include <QSharedPointer>
15 
16 class test_EcdhKeyAgreement;
17 
18 namespace governikus
19 {
20 
22  : public KeyAgreement
23 {
24  private:
25  friend class ::test_EcdhKeyAgreement;
26 
27  QSharedPointer<DomainParameterMapping<EC_GROUP>> mMapping;
28  QSharedPointer<EC_GROUP> mEphemeralCurve;
29  QSharedPointer<EC_POINT> mTerminalPublicKey;
30  QSharedPointer<const EC_POINT> mCardPublicKey;
31 
32  QPair<CardReturnCode, QSharedPointer<EC_GROUP>> determineEphemeralDomainParameters(const QByteArray& pNonce);
33  QPair<CardReturnCode, QSharedPointer<EC_POINT>> performKeyExchange(const QSharedPointer<const EC_GROUP>& pCurve);
34 
35  static QByteArray encodeUncompressedPublicKey(const QSharedPointer<const PaceInfo>& pPaceInfo, const QSharedPointer<const EC_GROUP>& pCurve, const QSharedPointer<const EC_POINT>& pPoint);
36  static QByteArray encodeCompressedPublicKey(const QSharedPointer<const EC_GROUP>& pCurve, const QSharedPointer<const EC_POINT>& pPoint);
37 
38  KeyAgreement::CardResult determineSharedSecret(const QByteArray& pNonce) override;
39  QByteArray getUncompressedTerminalPublicKey() override;
40  QByteArray getUncompressedCardPublicKey() override;
41  QByteArray getCompressedCardPublicKey() override;
42 
43  EcdhKeyAgreement(const QSharedPointer<const PaceInfo>& pPaceInfo, const QSharedPointer<CardConnectionWorker>& pCardConnectionWorker);
44 
45  public:
46  static QSharedPointer<EcdhKeyAgreement> create(const QSharedPointer<const PaceInfo>& pPaceInfo,
47  const QSharedPointer<CardConnectionWorker>& pCardConnectionWorker);
48 
49  virtual ~EcdhKeyAgreement() override = default;
50 };
51 
52 } // namespace governikus
Definition: KeyAgreement.h:27
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:14
virtual ~EcdhKeyAgreement() override=default
Definition: KeyAgreement.h:30
static QSharedPointer< EcdhKeyAgreement > create(const QSharedPointer< const PaceInfo > &pPaceInfo, const QSharedPointer< CardConnectionWorker > &pCardConnectionWorker)
Definition: EcdhKeyAgreement.cpp:53
Definition: EcdhKeyAgreement.h:21