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 connect() override;
52  CardReturnCode disconnect() override;
53  bool isConnected() 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
EstablishPaceChannelOutput establishPaceChannel(PacePasswordId pPasswordId, int pPreferredPinLength, const QByteArray &pChat, const QByteArray &pCertificateDescription, quint8 pTimeoutSeconds) override
Establishes a PACE channel, i.e.
Definition: PcscCard.cpp:298
CardReturnCode disconnect() override
Destroys the previously established connection to the smart card.
Definition: PcscCard.cpp:136
CardReturnCode connect() override
Establish a connection to the smart card.
Definition: PcscCard.cpp:102
ResponseApduResult setEidPin(quint8 pTimeoutSeconds) override
Sets a new eID PIN, i.e.
Definition: PcscCard.cpp:379
Definition: PcscCard.h:22
bool isConnected() override
Is the smart card connected, i.e.
Definition: PcscCard.cpp:157
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:14
Definition: PcscReader.h:22
Definition: CommandApdu.h:14
~PcscCard() override
Definition: PcscCard.cpp:69
Definition: ResponseApdu.h:106
Definition: EstablishPaceChannelOutput.h:47
quint8
Definition: ResponseApdu.h:62
PcscCard(PcscReader *pPcscReader)
Definition: PcscCard.cpp:53
CardReturnCode destroyPaceChannel() override
Destroys an existing PACE channel, i.e.
Definition: PcscCard.cpp:329
Definition: Card.h:22