AusweisApp2
PcscCard.h
gehe zur Dokumentation dieser Datei
1 
7 #pragma once
8 
9 #include "Card.h"
10 #include "CardReturnCode.h"
11 #include "PcscReader.h"
12 #include "PcscUtils.h"
13 
14 #include <QByteArray>
15 #include <QPointer>
16 #include <QTimer>
17 
18 
19 namespace governikus
20 {
21 
22 class PcscCard
23  : public Card
24 {
25  Q_OBJECT
26 
27  private:
28  struct CardResult
29  {
30  PCSC_RETURNCODE mReturnCode;
31  QByteArray mResponse = QByteArray();
32  };
33 
34  QPointer<PcscReader> mReader;
35  PCSC_INT mProtocol;
36  SCARDCONTEXT mContextHandle;
37  SCARDHANDLE mCardHandle;
38  QTimer mTimer;
39 
40  CardResult transmit(const QByteArray& pSendBuffer);
41  CardResult transmit(const QByteArray& pSendBuffer, const SCARD_IO_REQUEST* pSendPci);
42  CardResult control(PCSC_INT pCntrCode, const QByteArray& pCntrInput);
43 
44  private Q_SLOTS:
45  void sendSCardStatus();
46 
47  public:
48  explicit PcscCard(PcscReader* pPcscReader);
49  ~PcscCard() override;
50 
51  CardReturnCode establishConnection() override;
52  CardReturnCode releaseConnection() override;
53  bool isConnected() const override;
54 
55  ResponseApduResult transmit(const CommandApdu& pCmd) override;
56 
57  EstablishPaceChannelOutput establishPaceChannel(PacePasswordId pPasswordId, int pPreferredPinLength, const QByteArray& pChat, const QByteArray& pCertificateDescription, quint8 pTimeoutSeconds) override;
58 
59  CardReturnCode destroyPaceChannel() override;
60 
61  ResponseApduResult setEidPin(quint8 pTimeoutSeconds) override;
62 };
63 
64 } // namespace governikus
Definition: Card.h:45
Definition: EstablishPaceChannelOutput.h:48
Definition: PcscCard.h:24
CardReturnCode establishConnection() override
Establish a connection to the smart card.
Definition: PcscCard.cpp:102
CardReturnCode destroyPaceChannel() override
Destroys an existing PACE channel, i.e.
Definition: PcscCard.cpp:351
~PcscCard() override
Definition: PcscCard.cpp:69
CardReturnCode releaseConnection() override
Destroys the previously established connection to the smart card.
Definition: PcscCard.cpp:136
ResponseApduResult setEidPin(quint8 pTimeoutSeconds) override
Sets a new eID PIN, i.e.
Definition: PcscCard.cpp:401
bool isConnected() const override
Is the smart card connected, i.e.
Definition: PcscCard.cpp:157
PcscCard(PcscReader *pPcscReader)
Definition: PcscCard.cpp:53
EstablishPaceChannelOutput establishPaceChannel(PacePasswordId pPasswordId, int pPreferredPinLength, const QByteArray &pChat, const QByteArray &pCertificateDescription, quint8 pTimeoutSeconds) override
Establishes a PACE channel, i.e.
Definition: PcscCard.cpp:320
Definition: PcscReader.h:24
Implementation of GeneralAuthenticate response APDUs.
Definition: CommandApdu.h:16
quint8
Definition: ResponseApdu.h:62
Definition: ResponseApdu.h:115