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
governikus::KeyAgreementStatus::SUCCESS
@ SUCCESS
governikus::MSEBuilder::P1::PERFORM_SECURITY_OPERATION
@ PERFORM_SECURITY_OPERATION
CardConnectionWorker.h
governikus::mChat
CHAT * mChat
Definition: CVCertificateBody.h:49
governikus::PaceHandler::getCarPrev
const QByteArray & getCarPrev() const
During PACE protocol a certificate authority reference (CAR) may be determined.
Definition: PaceHandler.cpp:201
KnownOIDs.h
governikus::CardConnectionWorker
This class represents a connection to a smart card.
Definition: CardConnectionWorker.h:30
governikus::PaceHandler
Definition: PaceHandler.h:21
governikus::mCarCurr
ASN1_OCTET_STRING * mCarCurr
Definition: GeneralAuthenticateResponse.h:118
governikus::SUCCESS
SUCCESS
Definition: ResponseApdu.h:79
PaceHandler.h
EllipticCurveFactory.h
governikus::PaceHandler::getCarCurr
const QByteArray & getCarCurr() const
During PACE protocol a certificate authority reference (CAR) may be determined.
Definition: PaceHandler.cpp:195
governikus::mCarPrev
ASN1_OCTET_STRING * mCarPrev
Definition: GeneralAuthenticateResponse.h:119
governikus
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15
governikus::PaceHandler::getStatusMseSetAt
const QByteArray & getStatusMseSetAt() const
Definition: PaceHandler.cpp:213
governikus::PaceHandler::getPaceProtocol
QByteArray getPaceProtocol() const
The used PACE protocol.
Definition: PaceHandler.cpp:34
governikus::KeyAgreement::create
static QSharedPointer< KeyAgreement > create(const QSharedPointer< const PaceInfo > &pPaceInfo, QSharedPointer< CardConnectionWorker > pCardConnectionWorker)
Factory method to create an instance of KeyAgreement.
Definition: KeyAgreement.cpp:56
governikus::PaceHandler::PaceHandler
PaceHandler(const QSharedPointer< CardConnectionWorker > &pCardConnectionWorker)
Definition: PaceHandler.cpp:19
governikus::PaceHandler::establishPaceChannel
CardReturnCode establishPaceChannel(PacePasswordId pPasswordId, const QByteArray &pPassword)
Performs the PACE protocol and establishes a PACE channel.
Definition: PaceHandler.cpp:44
governikus::MSEBuilder
Definition: MSEBuilder.h:17
governikus::KeyAgreementStatus
KeyAgreementStatus
Definition: KeyAgreement.h:19
KeyAgreement.h
governikus::PaceHandler::getIdIcc
const QByteArray & getIdIcc() const
The IDicc is the card's compressed ephemeral public key.
Definition: PaceHandler.cpp:207
MSEBuilder.h
SecurityInfos.h
governikus::PaceHandler::setChat
void setChat(const QByteArray &pChat)
The certificate holder authorization template to be supplied to the card.
Definition: PaceHandler.cpp:177
governikus::MSEBuilder::P2::SET_AT
@ SET_AT
governikus::PaceHandler::getEncryptionKey
const QByteArray & getEncryptionKey() const
During PACE protocol an encryption key is determined.
Definition: PaceHandler.cpp:183
governikus::PaceHandler::getMacKey
const QByteArray & getMacKey() const
During PACE protocol a MAC key is determined.
Definition: PaceHandler.cpp:189
PaceInfo.h