AusweisApp2
PaceHandler.h
gehe zur Dokumentation dieser Datei
1 
7 #pragma once
8 
9 #include "CardConnectionWorker.h"
10 #include "SecurityProtocol.h"
11 #include "asn1/SecurityInfos.h"
12 #include "pace/KeyAgreement.h"
13 
14 #include <QByteArray>
15 #include <QSharedPointer>
16 
17 class test_PaceHandler;
18 
19 namespace governikus
20 {
21 class PaceHandler final
22 {
23  Q_DISABLE_COPY(PaceHandler)
24  friend class ::test_PaceHandler;
25 
26  private:
27  const QSharedPointer<CardConnectionWorker> mCardConnectionWorker;
28  QSharedPointer<KeyAgreement> mKeyAgreement;
29  QSharedPointer<const PaceInfo> mPaceInfo;
30  QByteArray mStatusMseSetAt;
31  QByteArray mIdIcc;
32  QByteArray mEncryptionKey;
33  QByteArray mMacKey;
34  QByteArray mChat;
35  QByteArray mCarCurr;
36  QByteArray mCarPrev;
37 
41  [[nodiscard]] bool isSupportedProtocol(const QSharedPointer<const PaceInfo>& pPaceInfo) const;
42 
48  bool initialize(const QSharedPointer<const EFCardAccess>& pEfCardAccess);
49 
55  CardReturnCode transmitMSESetAT(PacePasswordId pPasswordId);
56 
57  public:
58  explicit PaceHandler(const QSharedPointer<CardConnectionWorker>& pCardConnectionWorker);
59 
66  CardReturnCode establishPaceChannel(PacePasswordId pPasswordId, const QByteArray& pPassword);
67 
71  void setChat(const QByteArray& pChat);
72 
78  [[nodiscard]] const QByteArray& getEncryptionKey() const;
79 
85  [[nodiscard]] const QByteArray& getMacKey() const;
86 
92  [[nodiscard]] const QByteArray& getCarCurr() const;
93 
99  [[nodiscard]] const QByteArray& getCarPrev() const;
100 
105  [[nodiscard]] const QByteArray& getIdIcc() const;
106 
107  [[nodiscard]] const QByteArray& getStatusMseSetAt() const;
108 
113  [[nodiscard]] SecurityProtocol getPaceProtocol() const;
114 };
115 
116 } // namespace governikus
This class represents a connection to a smart card.
Definition: CardConnectionWorker.h:33
Definition: KeyAgreement.h:28
Definition: PaceHandler.h:22
void setChat(const QByteArray &pChat)
The certificate holder authorization template to be supplied to the card.
Definition: PaceHandler.cpp:176
const QByteArray & getIdIcc() const
The IDicc is the card's compressed ephemeral public key.
Definition: PaceHandler.cpp:206
SecurityProtocol getPaceProtocol() const
The used PACE protocol.
Definition: PaceHandler.cpp:35
const QByteArray & getMacKey() const
During PACE protocol a MAC key is determined.
Definition: PaceHandler.cpp:188
const QByteArray & getCarCurr() const
During PACE protocol a certificate authority reference (CAR) may be determined.
Definition: PaceHandler.cpp:194
const QByteArray & getCarPrev() const
During PACE protocol a certificate authority reference (CAR) may be determined.
Definition: PaceHandler.cpp:200
const QByteArray & getEncryptionKey() const
During PACE protocol an encryption key is determined.
Definition: PaceHandler.cpp:182
const QByteArray & getStatusMseSetAt() const
Definition: PaceHandler.cpp:212
CardReturnCode establishPaceChannel(PacePasswordId pPasswordId, const QByteArray &pPassword)
Performs the PACE protocol and establishes a PACE channel.
Definition: PaceHandler.cpp:45
Definition: PaceInfo.h:48
SecurityInfos ::= SET OF SecurityInfo.
Definition: SecurityInfos.h:32
Implementation of GeneralAuthenticate response APDUs.
Definition: CommandApdu.h:16