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
governikus::Card
Definition: Card.h:24
governikus::CommandApdu
Definition: CommandApdu.h:16
governikus::CommandApdu::getP2
char getP2() const
Definition: CommandApdu.cpp:119
governikus::PcscUtils::Scard_E_Proto_Mismatch
@ Scard_E_Proto_Mismatch
Definition: PcscUtils.h:87
governikus::MORE_DATA_AVAILABLE
MORE_DATA_AVAILABLE
Definition: ResponseApdu.h:64
governikus::PcscCard
Definition: PcscCard.h:24
governikus::PcscCard::~PcscCard
~PcscCard() override
Definition: PcscCard.cpp:69
governikus::WRONG_LE_FIELD
WRONG_LE_FIELD
Definition: ResponseApdu.h:75
governikus::ResponseApdu
Definition: ResponseApdu.h:84
PcscCard.h
governikus::CommandApdu::getCLA
char getCLA() const
Definition: CommandApdu.cpp:101
governikus::CommandApdu::getData
QByteArray getData() const
Definition: CommandApdu.cpp:180
governikus::quint8
quint8
Definition: ResponseApdu.h:62
governikus::PcscCard::destroyPaceChannel
CardReturnCode destroyPaceChannel() override
Destroys an existing PACE channel, i.e.
Definition: PcscCard.cpp:329
returnCode
#define returnCode(x)
toString method for PCSC_RETURNCODE and platform dependent typedefs for PCSC types.
Definition: PcscUtils.h:51
governikus::EstablishPaceChannel
Definition: EstablishPaceChannel.h:43
governikus::DestroyPaceChannelBuilder::createCommandData
QByteArray createCommandData() const
Definition: DestroyPaceChannel.cpp:11
CardReturnCode.h
governikus::ResponseApdu::getSW2
char getSW2() const
Definition: ResponseApdu.cpp:110
governikus::Apdu::getBuffer
const QByteArray & getBuffer() const
Definition: Apdu.cpp:31
governikus::PcscReader
Definition: PcscReader.h:24
governikus::EstablishPaceChannelOutput
Definition: EstablishPaceChannelOutput.h:48
governikus::PcscCard::PcscCard
PcscCard(PcscReader *pPcscReader)
Definition: PcscCard.cpp:53
governikus::PcscCard::disconnect
CardReturnCode disconnect() override
Destroys the previously established connection to the smart card.
Definition: PcscCard.cpp:136
governikus::DestroyPaceChannelBuilder
Definition: DestroyPaceChannel.h:18
governikus::CommandApdu::getINS
char getINS() const
Definition: CommandApdu.cpp:107
DestroyPaceChannel.h
governikus::EstablishPaceChannel::createCommandData
QByteArray createCommandData() const
Definition: EstablishPaceChannel.cpp:236
governikus::PcscCard::setEidPin
ResponseApduResult setEidPin(quint8 pTimeoutSeconds) override
Sets a new eID PIN, i.e.
Definition: PcscCard.cpp:379
governikus::PcscCard::connect
CardReturnCode connect() override
Establish a connection to the smart card.
Definition: PcscCard.cpp:102
governikus::PcscUtils::Scard_F_Unknown_Error
@ Scard_F_Unknown_Error
Definition: PcscUtils.h:92
governikus
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15
PcscReader.h
governikus::PcscUtils::Scard_S_Success
@ Scard_S_Success
Definition: PcscUtils.h:72
governikus::EstablishPaceChannelOutput::parse
bool parse(const QByteArray &pControlOutput)
Definition: EstablishPaceChannelOutput.cpp:179
governikus::PcscCard::establishPaceChannel
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
governikus::PinModify::createCcid
QByteArray createCcid() const
Definition: PinModify.cpp:36
PcscUtils.h
governikus::PcscCard::isConnected
bool isConnected() override
Is the smart card connected, i.e.
Definition: PcscCard.cpp:157
PinModify.h
governikus::ResponseApdu::getSW1
SW1 getSW1() const
Definition: ResponseApdu.cpp:93
governikus::ResponseApduResult
Definition: ResponseApdu.h:107
governikus::CommandApdu::isSecureMessaging
static bool isSecureMessaging(const QByteArray &pCommandBuffer)
Definition: CommandApdu.cpp:36
governikus::PinModify
Definition: PinModify.h:16
governikus::ResponseApdu::getCardReturnCode
CardReturnCode getCardReturnCode() const
Definition: ResponseApdu.cpp:122
EstablishPaceChannel.h
governikus::PcscUtils::toString
static QString toString(PCSC_RETURNCODE pCode)
Definition: PcscUtils.cpp:10
governikus::CommandApdu::getP1
char getP1() const
Definition: CommandApdu.cpp:113
governikus::PcscUtils::Scard_W_Reset_Card
@ Scard_W_Reset_Card
Definition: PcscUtils.h:127
Card.h