AusweisApp2
ServerMessageHandler.h
gehe zur Dokumentation dieser Datei
1 
7 #pragma once
8 
10 #include "CardConnection.h"
11 #include "DataChannel.h"
13 #include "messages/IfdModifyPin.h"
14 #include "ReaderManager.h"
15 #include "RemoteDispatcherServer.h"
16 
17 #include <QMap>
18 #include <QScopedPointer>
19 #include <QSharedPointer>
20 
21 
22 namespace governikus
23 {
24 
26  : public QObject
27 {
28  Q_OBJECT
29 
30  protected:
31  ServerMessageHandler() = default;
32 
33  public:
34  ~ServerMessageHandler() override;
35 
36  virtual void sendEstablishPaceChannelResponse(const QString& pSlotHandle, const EstablishPaceChannelOutput&) = 0;
37  virtual void sendModifyPinResponse(const QString& pSlotHandle, const ResponseApdu& pResponseApdu) = 0;
38 
39  Q_SIGNALS:
40  void fireCardConnectionEstablished(const QSharedPointer<CardConnection>& pConnection);
41  void fireEstablishPaceChannel(const QSharedPointer<const IfdEstablishPaceChannel>& pMessage, const QSharedPointer<CardConnection>& pConnection);
42  void fireModifyPin(const QSharedPointer<const IfdModifyPin>& pMessage, const QSharedPointer<CardConnection>& pConnection);
43  void fireClosed();
45 };
46 
47 
49  : public ServerMessageHandler
50 {
51  Q_OBJECT
52 
53  private:
54  QPointer<ReaderManager> mReaderManager;
55  const QSharedPointer<RemoteDispatcherServer> mRemoteDispatcher;
56  QMap<QString, QSharedPointer<CardConnection>> mCardConnections;
57 
58  [[nodiscard]] QString slotHandleForReaderName(const QString& pReaderName) const;
59 
60  void handleIfdGetStatus(const QJsonObject& pJsonObject);
61  void handleIfdConnect(const QJsonObject& pJsonObject);
62  void handleIfdDisconnect(const QJsonObject& pJsonObject);
63  void handleIfdTransmit(const QJsonObject& pJsonObject);
64  void handleIfdEstablishPaceChannel(const QJsonObject& pJsonObject);
65  void handleIfdModifyPIN(const QJsonObject& pJsonObject);
66 
67  private Q_SLOTS:
68  void onCreateCardConnectionCommandDone(QSharedPointer<CreateCardConnectionCommand> pCommand);
69  void onTransmitCardCommandDone(QSharedPointer<BaseCardCommand> pCommand);
70  void onClosed();
71  void onRemoteMessage(RemoteCardMessageType pMessageType, const QJsonObject& pJsonObject);
72  void onReaderChanged(const ReaderInfo& pInfo);
73  void onReaderRemoved(const ReaderInfo& pInfo);
74 
75  public:
76  explicit ServerMessageHandlerImpl(const QSharedPointer<DataChannel>& pDataChannel);
77 
78  void sendEstablishPaceChannelResponse(const QString& pSlotHandle, const EstablishPaceChannelOutput& pChannelOutput) override;
79  void sendModifyPinResponse(const QString& pSlotHandle, const ResponseApdu& pResponseApdu) override;
80 };
81 
82 
83 } // namespace governikus
governikus::ECardApiResult::Minor::IFDL_IO_RepeatedDataMismatch
@ IFDL_IO_RepeatedDataMismatch
IfdTransmit.h
governikus::UNKNOWN
UNKNOWN
Definition: SmartCardDefinitions.h:18
governikus::ECardApiResult::Minor
Minor
Definition: ECardApiResult.h:44
ReaderManager.h
governikus::ServerMessageHandler
Definition: ServerMessageHandler.h:27
FuncUtils.h
governikus::ResponseApdu
Definition: ResponseApdu.h:84
IfdGetStatus.h
IfdError.h
governikus::ServerMessageHandler::fireEstablishPaceChannel
void fireEstablishPaceChannel(const QSharedPointer< const IfdEstablishPaceChannel > &pMessage, const QSharedPointer< CardConnection > &pConnection)
governikus::ECardApiResult::Minor::IFDL_UnknownSlot
@ IFDL_UnknownSlot
governikus::ServerMessageHandlerImpl
Definition: ServerMessageHandler.h:50
governikus::ECardApiResult::Minor::IFDL_CancellationByUser
@ IFDL_CancellationByUser
governikus::RemoteDispatcher::fireReceived
void fireReceived(RemoteCardMessageType pMessageType, const QJsonObject &pJsonObject, const QString &pId)
governikus::RemoteDispatcherServer
Definition: RemoteDispatcherServer.h:16
governikus::ReaderInfo
Definition: ReaderInfo.h:17
IfdDisconnect.h
AppSettings.h
governikus::ServerMessageHandler::ServerMessageHandler
ServerMessageHandler()=default
governikus::SUCCESS
SUCCESS
Definition: ResponseApdu.h:79
governikus::ServerMessageHandlerImpl::sendModifyPinResponse
void sendModifyPinResponse(const QString &pSlotHandle, const ResponseApdu &pResponseApdu) override
Definition: ServerMessageHandler.cpp:304
governikus::ServerMessageHandlerImpl::ServerMessageHandlerImpl
ServerMessageHandlerImpl(const QSharedPointer< DataChannel > &pDataChannel)
Definition: ServerMessageHandler.cpp:47
CreateCardConnectionCommand.h
governikus::ServerMessageHandlerImpl::sendEstablishPaceChannelResponse
void sendEstablishPaceChannelResponse(const QString &pSlotHandle, const EstablishPaceChannelOutput &pChannelOutput) override
Definition: ServerMessageHandler.cpp:258
governikus::ECardApiResult::Minor::null
@ null
IfdModifyPinResponse.h
governikus::EstablishPaceChannelOutput::getPaceReturnCode
CardReturnCode getPaceReturnCode() const
Definition: EstablishPaceChannelOutput.cpp:377
RemoteDispatcherServer.h
governikus::ServerMessageHandler::fireModifyPin
void fireModifyPin(const QSharedPointer< const IfdModifyPin > &pMessage, const QSharedPointer< CardConnection > &pConnection)
governikus::Env
Definition: Env.h:44
governikus::ECardApiResult::Minor::IFDL_Timeout_Error
@ IFDL_Timeout_Error
IfdEstablishContext.h
governikus::ECardApiResult::Minor::IFDL_Terminal_NoCard
@ IFDL_Terminal_NoCard
IfdConnectResponse.h
IfdDisconnectResponse.h
governikus::EstablishPaceChannelOutput
Definition: EstablishPaceChannelOutput.h:48
governikus::ServerMessageHandler::sendModifyPinResponse
virtual void sendModifyPinResponse(const QString &pSlotHandle, const ResponseApdu &pResponseApdu)=0
governikus::ServerMessageHandler::~ServerMessageHandler
~ServerMessageHandler() override
Definition: ServerMessageHandler.cpp:42
governikus::ServerMessageHandler::fireClosed
void fireClosed()
governikus::IfdGetStatus
Definition: IfdGetStatus.h:14
governikus
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15
governikus::PinModifyOutput::toCcid
QByteArray toCcid() const
Definition: PinModifyOutput.cpp:68
governikus::ServerMessageHandler::fireSecureMessagingStopped
void fireSecureMessagingStopped()
governikus::ServerMessageHandler::fireCardConnectionEstablished
void fireCardConnectionEstablished(const QSharedPointer< CardConnection > &pConnection)
IfdEstablishPaceChannel.h
governikus::ECardApiResult::Minor::IFDL_IFD_SharingViolation
@ IFDL_IFD_SharingViolation
Env.h
IfdModifyPin.h
IfdTransmitResponse.h
PinModifyOutput.h
governikus::ECardApiResult::Minor::AL_Unknown_Error
@ AL_Unknown_Error
governikus::ResponseApdu::getReturnCode
StatusCode getReturnCode() const
Definition: ResponseApdu.cpp:52
governikus::RemoteDispatcherServer::fireContextEstablished
void fireContextEstablished()
governikus::ECardApiResult::Minor::IFDL_InvalidSlotHandle
@ IFDL_InvalidSlotHandle
IfdStatus.h
governikus::RemoteDispatcher::fireClosed
void fireClosed(GlobalStatus::Code pCloseCode, const QString &pId)
governikus::ReaderManager
Definition: ReaderManager.h:23
governikus::ServerMessageHandler::sendEstablishPaceChannelResponse
virtual void sendEstablishPaceChannelResponse(const QString &pSlotHandle, const EstablishPaceChannelOutput &)=0
IfdConnect.h
IfdEstablishPaceChannelResponse.h
governikus::CommandApdu::isSecureMessaging
static bool isSecureMessaging(const QByteArray &pCommandBuffer)
Definition: CommandApdu.cpp:36
governikus::TransmitCommand
Definition: TransmitCommand.h:20
governikus::PinModifyOutput
Definition: PinModifyOutput.h:17
governikus::ECardApiResult::Minor::IFDL_IO_UnknownPINFormat
@ IFDL_IO_UnknownPINFormat
governikus::TransmitCommand::getSlotHandle
const QString & getSlotHandle() const
Definition: TransmitCommand.h:48
CardConnection.h
DataChannel.h
ServerMessageHandler.h