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  virtual ~PcscCard() override;
50 
51  virtual CardReturnCode connect() override;
52  virtual CardReturnCode disconnect() override;
53  virtual bool isConnected() override;
54 
55  virtual ResponseApduResult transmit(const CommandApdu& pCmd) override;
56 
57  virtual EstablishPaceChannelOutput establishPaceChannel(PacePasswordId pPasswordId, const QByteArray& pChat, const QByteArray& pCertificateDescription, quint8 pTimeoutSeconds) override;
58 
59  virtual CardReturnCode destroyPaceChannel() override;
60 
61  virtual ResponseApduResult setEidPin(quint8 pTimeoutSeconds) override;
62 };
63 
64 } // namespace governikus
governikus::Card
Definition: Card.h:24
governikus::CommandApdu
Definition: CommandApdu.h:16
governikus::DestroyPaceChannelBuilder::createCommandData
QByteArray createCommandData()
Definition: DestroyPaceChannel.cpp:11
governikus::PcscCard::establishPaceChannel
virtual EstablishPaceChannelOutput establishPaceChannel(PacePasswordId pPasswordId, const QByteArray &pChat, const QByteArray &pCertificateDescription, quint8 pTimeoutSeconds) override
Establishes a PACE channel, i.e.
Definition: PcscCard.cpp:298
governikus::CommandApdu::getP2
char getP2() const
Definition: CommandApdu.cpp:119
governikus::PcscUtils::Scard_E_Proto_Mismatch
@ Scard_E_Proto_Mismatch
Definition: PcscUtils.h:81
governikus::PinModify::createCcidForPcsc
QByteArray createCcidForPcsc() const
Definition: PinModify.cpp:106
governikus::MORE_DATA_AVAILABLE
MORE_DATA_AVAILABLE
Definition: ResponseApdu.h:64
governikus::PcscCard
Definition: PcscCard.h:24
governikus::PcscCard::~PcscCard
virtual ~PcscCard() override
Definition: PcscCard.cpp:69
governikus::WRONG_LE_FIELD
WRONG_LE_FIELD
Definition: ResponseApdu.h:75
governikus::ResponseApdu
Definition: ResponseApdu.h:84
governikus::EstablishPaceChannel::setCertificateDescription
void setCertificateDescription(const QByteArray &pCertificateDescription)
Definition: EstablishPaceChannel.cpp:55
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
virtual CardReturnCode destroyPaceChannel() override
Destroys an existing PACE channel, i.e.
Definition: PcscCard.cpp:328
governikus::EstablishPaceChannel
Definition: EstablishPaceChannel.h:45
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:25
governikus::EstablishPaceChannelOutput
Definition: EstablishPaceChannelOutput.h:48
governikus::PcscCard::PcscCard
PcscCard(PcscReader *pPcscReader)
Definition: PcscCard.cpp:53
governikus::PcscCard::disconnect
virtual 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::PcscCard::setEidPin
virtual ResponseApduResult setEidPin(quint8 pTimeoutSeconds) override
Sets a new eID PIN, i.e.
Definition: PcscCard.cpp:378
governikus::PcscCard::connect
virtual 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:86
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:66
governikus::EstablishPaceChannel::setChat
void setChat(const QByteArray &pChat)
Definition: EstablishPaceChannel.cpp:61
PcscUtils.h
governikus::PcscCard::isConnected
virtual bool isConnected() override
Is the smart card connected, i.e.
Definition: PcscCard.cpp:157
governikus::EstablishPaceChannel::setPasswordId
void setPasswordId(PacePasswordId pPasswordId)
Definition: EstablishPaceChannel.cpp:67
governikus::EstablishPaceChannel::createCommandData
QByteArray createCommandData()
Definition: EstablishPaceChannel.cpp:73
PinModify.h
governikus::ResponseApdu::getSW1
SW1 getSW1() const
Definition: ResponseApdu.cpp:93
governikus::ResponseApduResult
Definition: ResponseApdu.h:107
governikus::EstablishPaceChannelOutput::parse
void parse(const QByteArray &pControlOutput, PacePasswordId pPasswordId)
Definition: EstablishPaceChannelOutput.cpp:143
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:121
Card.h