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 #include <QString>
16 
17 class test_PaceHandler;
18 
19 namespace governikus
20 {
21 class PaceHandler final
22 {
23  friend class ::test_PaceHandler;
24 
25  private:
26  const QSharedPointer<CardConnectionWorker> mCardConnectionWorker;
27  QSharedPointer<KeyAgreement> mKeyAgreement;
28  QSharedPointer<const PaceInfo> mPaceInfo;
29  QByteArray mStatusMseSetAt;
30  QByteArray mIdIcc;
31  QByteArray mEncryptionKey;
32  QByteArray mMacKey;
33  QByteArray mChat;
34  QByteArray mCarCurr, mCarPrev;
35 
39  bool isSupportedProtocol(const QSharedPointer<const PaceInfo>& pPaceInfo) const;
40 
46  bool initialize(const QSharedPointer<const EFCardAccess>& pEfCardAccess);
47 
53  CardReturnCode transmitMSESetAT(PacePasswordId pPasswordId);
54 
55  Q_DISABLE_COPY(PaceHandler)
56 
57  public:
58  explicit PaceHandler(const QSharedPointer<CardConnectionWorker>& pCardConnectionWorker);
59 
66  CardReturnCode establishPaceChannel(PacePasswordId pPasswordId, const QString& pPassword);
67 
71  void setChat(const QByteArray& pChat);
72 
78  const QByteArray& getEncryptionKey() const;
79 
85  const QByteArray& getMacKey() const;
86 
92  const QByteArray& getCarCurr() const;
93 
99  const QByteArray& getCarPrev() const;
100 
105  const QByteArray& getIdIcc() const;
106 
107  const QByteArray& getStatusMseSetAt() const;
108 
113  QByteArray getPaceProtocol() const;
114 };
115 
116 } // namespace governikus
governikus::UNKNOWN
UNKNOWN
Definition: SmartCardDefinitions.h:18
governikus::KeyAgreementStatus::SUCCESS
@ SUCCESS
governikus::MSEBuilder::P1::PERFORM_SECURITY_OPERATION
@ PERFORM_SECURITY_OPERATION
CardConnectionWorker.h
governikus::mChat
CHAT * mChat
Definition: CVCertificateBody.h:50
governikus::PaceHandler::getCarPrev
const QByteArray & getCarPrev() const
During PACE protocol a certificate authority reference (CAR) may be determined.
Definition: PaceHandler.cpp:227
KnownOIDs.h
governikus::CardConnectionWorker
This class represents a connection to a smart card.
Definition: CardConnectionWorker.h:30
governikus::PaceHandler
Definition: PaceHandler.h:22
governikus::mCarCurr
ASN1_OCTET_STRING * mCarCurr
Definition: GeneralAuthenticateResponse.h:118
governikus::SUCCESS
SUCCESS
Definition: ResponseApdu.h:79
PaceHandler.h
governikus::PACE_CAN
PACE_CAN
Definition: SmartCardDefinitions.h:20
EllipticCurveFactory.h
governikus::PaceHandler::getCarCurr
const QByteArray & getCarCurr() const
During PACE protocol a certificate authority reference (CAR) may be determined.
Definition: PaceHandler.cpp:221
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:239
governikus::PaceHandler::getPaceProtocol
QByteArray getPaceProtocol() const
The used PACE protocol.
Definition: PaceHandler.cpp:35
governikus::PACE_PIN
PACE_PIN
Definition: SmartCardDefinitions.h:21
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:20
governikus::MSEBuilder
Definition: MSEBuilder.h:17
governikus::PersoSimWorkaround::sendingMseSetAt
static CardReturnCode sendingMseSetAt(const QSharedPointer< CardConnectionWorker > &pCardConnectionWorker)
Definition: PersoSimWorkaround.h:33
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:233
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:203
governikus::MSEBuilder::P2::SET_AT
@ SET_AT
PersoSimWorkaround.h
governikus::PaceHandler::getEncryptionKey
const QByteArray & getEncryptionKey() const
During PACE protocol an encryption key is determined.
Definition: PaceHandler.cpp:209
governikus::PaceHandler::establishPaceChannel
CardReturnCode establishPaceChannel(PacePasswordId pPasswordId, const QString &pPassword)
Performs the PACE protocol and establishes a PACE channel.
Definition: PaceHandler.cpp:45
governikus::PaceHandler::getMacKey
const QByteArray & getMacKey() const
During PACE protocol a MAC key is determined.
Definition: PaceHandler.cpp:215
governikus::PACE_MRZ
PACE_MRZ
Definition: SmartCardDefinitions.h:19
PaceInfo.h