AusweisApp2
PaceHandler.h
gehe zur Dokumentation dieser Datei
1 
7 #pragma once
8 
9 #include "asn1/SecurityInfos.h"
10 #include "CardConnectionWorker.h"
11 #include "pace/KeyAgreement.h"
12 
13 #include <QByteArray>
14 #include <QSharedPointer>
15 
16 class test_PaceHandler;
17 
18 namespace governikus
19 {
20 class PaceHandler final
21 {
22  friend class ::test_PaceHandler;
23 
24  private:
25  const QSharedPointer<CardConnectionWorker> mCardConnectionWorker;
26  QSharedPointer<KeyAgreement> mKeyAgreement;
27  QSharedPointer<const PaceInfo> mPaceInfo;
28  QByteArray mStatusMseSetAt;
29  QByteArray mIdIcc;
30  QByteArray mEncryptionKey;
31  QByteArray mMacKey;
32  QByteArray mChat;
33  QByteArray mCarCurr, mCarPrev;
34 
38  [[nodiscard]] bool isSupportedProtocol(const QSharedPointer<const PaceInfo>& pPaceInfo) const;
39 
45  bool initialize(const QSharedPointer<const EFCardAccess>& pEfCardAccess);
46 
52  CardReturnCode transmitMSESetAT(PacePasswordId pPasswordId);
53 
54  Q_DISABLE_COPY(PaceHandler)
55 
56  public:
57  explicit PaceHandler(const QSharedPointer<CardConnectionWorker>& pCardConnectionWorker);
58 
65  CardReturnCode establishPaceChannel(PacePasswordId pPasswordId, const QByteArray& pPassword);
66 
70  void setChat(const QByteArray& pChat);
71 
77  [[nodiscard]] const QByteArray& getEncryptionKey() const;
78 
84  [[nodiscard]] const QByteArray& getMacKey() const;
85 
91  [[nodiscard]] const QByteArray& getCarCurr() const;
92 
98  [[nodiscard]] const QByteArray& getCarPrev() const;
99 
104  [[nodiscard]] const QByteArray& getIdIcc() const;
105 
106  [[nodiscard]] const QByteArray& getStatusMseSetAt() const;
107 
112  [[nodiscard]] QByteArray getPaceProtocol() const;
113 };
114 
115 } // namespace governikus
Definition: PaceHandler.h:21
void setChat(const QByteArray &pChat)
The certificate holder authorization template to be supplied to the card.
Definition: PaceHandler.cpp:177
const QByteArray & getIdIcc() const
The IDicc is the card's compressed ephemeral public key.
Definition: PaceHandler.cpp:207
const QByteArray & getMacKey() const
During PACE protocol a MAC key is determined.
Definition: PaceHandler.cpp:189
PaceHandler(const QSharedPointer< CardConnectionWorker > &pCardConnectionWorker)
Definition: PaceHandler.cpp:19
QByteArray getPaceProtocol() const
The used PACE protocol.
Definition: PaceHandler.cpp:34
const QByteArray & getCarCurr() const
During PACE protocol a certificate authority reference (CAR) may be determined.
Definition: PaceHandler.cpp:195
const QByteArray & getCarPrev() const
During PACE protocol a certificate authority reference (CAR) may be determined.
Definition: PaceHandler.cpp:201
const QByteArray & getEncryptionKey() const
During PACE protocol an encryption key is determined.
Definition: PaceHandler.cpp:183
const QByteArray & getStatusMseSetAt() const
Definition: PaceHandler.cpp:213
CardReturnCode establishPaceChannel(PacePasswordId pPasswordId, const QByteArray &pPassword)
Performs the PACE protocol and establishes a PACE channel.
Definition: PaceHandler.cpp:44
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15