AusweisApp2
CardConnectionWorker.h
gehe zur Dokumentation dieser Datei
1 
7 #pragma once
8 
9 #include "asn1/SecurityInfos.h"
10 #include "CardReturnCode.h"
11 #include "CommandApdu.h"
12 #include "EstablishPaceChannel.h"
13 #include "FileRef.h"
14 #include "pace/SecureMessaging.h"
15 #include "Reader.h"
16 #include "ResponseApdu.h"
17 #include "SmartCardDefinitions.h"
18 
19 #include <QByteArray>
20 
21 namespace governikus
22 {
23 
28  : public QObject
29  , public QEnableSharedFromThis<CardConnectionWorker>
30 {
31  private:
32  Q_OBJECT
33 
37  QPointer<Reader> mReader;
38 
42  QScopedPointer<SecureMessaging> mSecureMessaging;
43 
44  inline QSharedPointer<const EFCardAccess> getEfCardAccess() const;
45 
46  private Q_SLOTS:
47  void onReaderInfoChanged(const QString& pReaderName);
48 
49  protected:
54  explicit CardConnectionWorker(Reader* pReader);
55 
59  virtual ~CardConnectionWorker();
60 
61  public:
62  static QSharedPointer<CardConnectionWorker> create(Reader* pReader);
63 
64  Q_INVOKABLE ReaderInfo getReaderInfo() const;
65 
66  void setPukInoperative();
67 
68  virtual CardReturnCode updateRetryCounter();
69 
70  virtual CardReturnCode readFile(const FileRef& pFileRef, QByteArray& pFileContent);
71 
72  virtual ResponseApduResult transmit(const CommandApdu& pCommandApdu);
73 
79  virtual EstablishPaceChannelOutput establishPaceChannel(PacePasswordId pPasswordId,
80  const QString& pPasswordValue);
81 
87  virtual EstablishPaceChannelOutput establishPaceChannel(PacePasswordId pPasswordId,
88  const QString& pPasswordValue,
89  const QByteArray& pChat,
90  const QByteArray& pCertificateDescription);
91 
95  virtual CardReturnCode destroyPaceChannel();
96 
101  virtual void setProgressMessage(const QString& pMessage);
102 
106  Q_INVOKABLE virtual bool stopSecureMessaging();
107 
108  virtual ResponseApduResult setEidPin(const QString& pNewPin, quint8 pTimeoutSeconds);
109 
110  Q_SIGNALS:
111  void fireReaderInfoChanged(const ReaderInfo& pReaderInfo);
112 };
113 
114 } // namespace governikus
governikus::CardConnectionWorker::getReaderInfo
Q_INVOKABLE ReaderInfo getReaderInfo() const
Definition: CardConnectionWorker.cpp:48
governikus::ResetRetryCounterBuilder
Definition: ResetRetryCounterBuilder.h:16
governikus::CommandApdu
Definition: CommandApdu.h:16
governikus::EstablishPaceChannelOutput::setCarCurr
void setCarCurr(const QByteArray &)
Definition: EstablishPaceChannelOutput.cpp:97
governikus::CardConnectionWorker::create
static QSharedPointer< CardConnectionWorker > create(Reader *pReader)
Definition: CardConnectionWorker.cpp:42
governikus::EstablishPaceChannelOutput::setEfCardAccess
void setEfCardAccess(const QByteArray &)
Definition: EstablishPaceChannelOutput.cpp:123
CardConnectionWorker.h
governikus::CardConnectionWorker::transmit
virtual ResponseApduResult transmit(const CommandApdu &pCommandApdu)
Definition: CardConnectionWorker.cpp:73
governikus::EstablishPaceChannelOutput::setPaceReturnCode
void setPaceReturnCode(CardReturnCode)
Definition: EstablishPaceChannelOutput.cpp:137
governikus::ReaderInfo::getCardInfo
const CardInfo & getCardInfo() const
Definition: ReaderInfo.h:41
governikus::PaceHandler::getCarPrev
const QByteArray & getCarPrev() const
During PACE protocol a certificate authority reference (CAR) may be determined.
Definition: PaceHandler.cpp:227
governikus::Apdu::isEmpty
bool isEmpty() const
Definition: Apdu.cpp:25
governikus::CardConnectionWorker
This class represents a connection to a smart card.
Definition: CardConnectionWorker.h:30
governikus::quint8
quint8
Definition: ResponseApdu.h:62
governikus::EstablishPaceChannelOutput::setIdIcc
void setIdIcc(const QByteArray &)
Definition: EstablishPaceChannelOutput.cpp:130
governikus::ReadBinaryBuilder
Definition: ReadBinaryBuilder.h:16
governikus::PaceHandler
Definition: PaceHandler.h:22
governikus::ReaderInfo
Definition: ReaderInfo.h:17
governikus::CardInfo::getEfCardAccess
QSharedPointer< const EFCardAccess > getEfCardAccess() const
Definition: CardInfo.cpp:82
governikus::SUCCESS
SUCCESS
Definition: ResponseApdu.h:79
governikus::EstablishPaceChannelOutput::getPaceReturnCode
CardReturnCode getPaceReturnCode() const
Definition: EstablishPaceChannelOutput.cpp:67
PaceHandler.h
governikus::SecureMessaging
Definition: SecureMessaging.h:31
governikus::CardConnectionWorker::fireReaderInfoChanged
void fireReaderInfoChanged(const ReaderInfo &pReaderInfo)
Definition: moc_CardConnectionWorker.cpp:158
governikus::CardConnectionWorker::readFile
virtual CardReturnCode readFile(const FileRef &pFileRef, QByteArray &pFileContent)
Definition: CardConnectionWorker.cpp:105
CardReturnCode.h
governikus::SelectBuilder
Definition: SelectBuilder.h:15
governikus::ResponseApduResult::mResponseApdu
ResponseApdu mResponseApdu
Definition: ResponseApdu.h:109
governikus::Reader::fireCardRetryCounterChanged
void fireCardRetryCounterChanged(const QString &pReaderName)
Definition: moc_Reader.cpp:194
governikus::Reader::fireCardInserted
void fireCardInserted(const QString &pReaderName)
Definition: moc_Reader.cpp:180
governikus::Apdu::getBuffer
const QByteArray & getBuffer() const
Definition: Apdu.cpp:31
governikus::EstablishPaceChannelOutput
Definition: EstablishPaceChannelOutput.h:48
governikus::PaceHandler::getCarCurr
const QByteArray & getCarCurr() const
During PACE protocol a certificate authority reference (CAR) may be determined.
Definition: PaceHandler.cpp:221
CommandApdu.h
governikus::ReadBinaryBuilder::build
CommandApdu build() override
Definition: ReadBinaryBuilder.cpp:21
governikus::CardConnectionWorker::CardConnectionWorker
CardConnectionWorker(Reader *pReader)
The Card hold by the Reader is expected to be connected.
Definition: CardConnectionWorker.cpp:20
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
SmartCardDefinitions.h
governikus::PaceHandler::getPaceProtocol
QByteArray getPaceProtocol() const
The used PACE protocol.
Definition: PaceHandler.cpp:35
governikus::EstablishPaceChannelOutput::setStatusMseSetAt
void setStatusMseSetAt(const QByteArray &pStatusMseSetAt)
Definition: EstablishPaceChannelOutput.cpp:117
governikus::CardConnectionWorker::destroyPaceChannel
virtual CardReturnCode destroyPaceChannel()
Destroys a previously established PACE channel.
Definition: CardConnectionWorker.cpp:217
governikus::FileRef
Definition: FileRef.h:15
governikus::ResetRetryCounterBuilder::build
CommandApdu build() override
Definition: ResetRetryCounterBuilder.cpp:21
governikus::MSEBuilder
Definition: MSEBuilder.h:17
FileRef.h
governikus::CardConnectionWorker::setPukInoperative
void setPukInoperative()
Definition: CardConnectionWorker.cpp:54
governikus::Reader::fireCardRemoved
void fireCardRemoved(const QString &pReaderName)
Definition: moc_Reader.cpp:187
ResetRetryCounterBuilder.h
governikus::PaceHandler::getIdIcc
const QByteArray & getIdIcc() const
The IDicc is the card's compressed ephemeral public key.
Definition: PaceHandler.cpp:233
governikus::CardConnectionWorker::updateRetryCounter
virtual CardReturnCode updateRetryCounter()
Definition: CardConnectionWorker.cpp:268
ResponseApdu.h
governikus::SelectBuilder::build
CommandApdu build() override
Definition: SelectBuilder.cpp:23
MSEBuilder.h
governikus::Reader
Definition: Reader.h:19
SecurityInfos.h
SecureMessaging.h
governikus::ResponseApduResult
Definition: ResponseApdu.h:107
governikus::CardConnectionWorker::setProgressMessage
virtual void setProgressMessage(const QString &pMessage)
Sets the current workflow progress message.
Definition: CardConnectionWorker.cpp:144
governikus::CardConnectionWorker::establishPaceChannel
virtual EstablishPaceChannelOutput establishPaceChannel(PacePasswordId pPasswordId, const QString &pPasswordValue)
Performs PACE and establishes a PACE channel.
Definition: CardConnectionWorker.cpp:166
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::build
CommandApdu build() override
Definition: MSEBuilder.cpp:81
governikus::MSEBuilder::P2::DEFAULT_CHANNEL
@ DEFAULT_CHANNEL
governikus::EstablishPaceChannelOutput::setCarPrev
void setCarPrev(const QByteArray &)
Definition: EstablishPaceChannelOutput.cpp:104
governikus::MSEBuilder::P1::ERASE
@ ERASE
Reader.h
EstablishPaceChannel.h
governikus::CardConnectionWorker::~CardConnectionWorker
virtual ~CardConnectionWorker()
Destroys the CardConnection and disconnects from the card.
Definition: CardConnectionWorker.cpp:32
governikus::CardConnectionWorker::setEidPin
virtual ResponseApduResult setEidPin(const QString &pNewPin, quint8 pTimeoutSeconds)
Definition: CardConnectionWorker.cpp:240
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
SelectBuilder.h
ReadBinaryBuilder.h
governikus::CardConnectionWorker::stopSecureMessaging
virtual Q_INVOKABLE bool stopSecureMessaging()
Destroys an established secure messaging channel, if there is one.
Definition: CardConnectionWorker.cpp:154