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
governikus::GM
GM
Definition: PaceInfo.h:29
governikus::EcUtil::point2oct
static QByteArray point2oct(const QSharedPointer< const EC_GROUP > &pCurve, const EC_POINT *pPoint)
Definition: EcUtil.h:44
DomainParameterMapping.h
CardConnectionWorker.h
governikus::EcdhKeyAgreement::create
static QSharedPointer< EcdhKeyAgreement > create(const QSharedPointer< const PaceInfo > &pPaceInfo, const QSharedPointer< CardConnectionWorker > &pCardConnectionWorker)
Definition: EcdhKeyAgreement.cpp:53
KnownOIDs.h
governikus::KeyAgreement::transmitGAEphemeralPublicKey
CardResult transmitGAEphemeralPublicKey(const QByteArray &pEphemeralPublicKey)
Transmit the General Authenticate (Ephemeral Public Key) command to the card.
Definition: KeyAgreement.cpp:196
governikus::EcdhKeyAgreement::~EcdhKeyAgreement
virtual ~EcdhKeyAgreement() override=default
governikus::Asn1Util::encode
static QByteArray encode(char pTagByte, const QByteArray &pData)
Encodes the data as ASN.1 object with specified tag byte.
Definition: ASN1Util.cpp:177
governikus::KeyAgreement::CardResult
Definition: KeyAgreement.h:31
governikus::EllipticCurveFactory::create
static QSharedPointer< EC_GROUP > create(const QSharedPointer< const PaceInfo > &pPaceInfo)
Creates an elliptic curve either by using the PACEInfo's parameter id to determine a standardized ell...
Definition: EllipticCurveFactory.cpp:20
governikus::EcUtil::oct2point
static QSharedPointer< EC_POINT > oct2point(const QSharedPointer< const EC_GROUP > &pCurve, const QByteArray &pCompressedData)
Definition: EcUtil.h:79
governikus::KeyAgreement::mPaceInfo
const QSharedPointer< const PaceInfo > mPaceInfo
Definition: KeyAgreement.h:85
EllipticCurveFactory.h
governikus::KeyAgreement
Definition: KeyAgreement.h:28
governikus
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15
EcUtil.h
EcdhGenericMapping.h
governikus::EcdhGenericMapping
Definition: EcdhGenericMapping.h:21
SecurityInfo.h
KeyAgreement.h
EcdhKeyAgreement.h
governikus::EcUtil::create
static QSharedPointer< EC_GROUP > create(EC_GROUP *pEcGroup)
Definition: EcUtil.h:96
governikus::KeyAgreement::transmitGAMappingData
CardResult transmitGAMappingData(const QByteArray &pMappingData)
Transmit the General Authenticate (Mapping Data) command to the card.
Definition: KeyAgreement.cpp:207
governikus::EcdhKeyAgreement
Definition: EcdhKeyAgreement.h:23
PaceInfo.h