AusweisApp2
SimulatorCard.h
gehe zur Dokumentation dieser Datei
1 
7 #pragma once
8 
9 #include "Card.h"
10 #include "SimulatorFileSystem.h"
11 #include "apdu/FileCommand.h"
13 #include "pace/SecureMessaging.h"
14 
15 #include <memory>
16 
17 namespace governikus
18 {
19 
20 
22  : public Card
23 {
24  Q_OBJECT
25 
26  private:
27  bool mConnected;
28  SimulatorFileSystem mFileSystem;
29  QSharedPointer<AuthenticatedAuxiliaryData> mAuxiliaryData;
30  std::unique_ptr<SecureMessaging> mSecureMessaging;
31  std::unique_ptr<SecureMessaging> mNewSecureMessaging;
32  int mRiKeyId;
33 
34  public:
35  explicit SimulatorCard(const SimulatorFileSystem& pFileSystem);
36 
37  CardReturnCode establishConnection() override;
38  CardReturnCode releaseConnection() override;
39  bool isConnected() const override;
40 
41  ResponseApduResult transmit(const CommandApdu& pCmd) override;
42 
43  EstablishPaceChannelOutput establishPaceChannel(PacePasswordId pPasswordId, int pPreferredPinLength, const QByteArray& pChat, const QByteArray& pCertificateDescription, quint8 pTimeoutSeconds) override;
44 
45  CardReturnCode destroyPaceChannel() override;
46 
47  ResponseApduResult setEidPin(quint8 pTimeoutSeconds) override;
48 
49  private:
50  ResponseApduResult executeFileCommand(const CommandApdu& pCmd);
51  ResponseApduResult executeMseSetAt(const CommandApdu& pCmd);
52  ResponseApduResult executeGeneralAuthenticate(const CommandApdu& pCmd);
53  QByteArray brainpoolP256r1Multiplication(const QByteArray& pPoint, const QByteArray& pScalar) const;
54  QByteArray generateAuthenticationToken(const QByteArray& pPublicKey, const QByteArray& pNonce);
55  QByteArray generateRestrictedId(const QByteArray& pPublicKey);
56  StatusCode verifyAuxiliaryData(const QByteArray& pCommandData);
57 };
58 
59 } // namespace governikus
Definition: Card.h:45
Definition: EstablishPaceChannelOutput.h:48
Definition: SimulatorCard.h:23
bool isConnected() const override
Is the smart card connected, i.e.
Definition: SimulatorCard.cpp:66
ResponseApduResult transmit(const CommandApdu &pCmd) override
Performs a transmit to the smart card.
Definition: SimulatorCard.cpp:72
SimulatorCard(const SimulatorFileSystem &pFileSystem)
Definition: SimulatorCard.cpp:31
CardReturnCode releaseConnection() override
Destroys the previously established connection to the smart card.
Definition: SimulatorCard.cpp:55
ResponseApduResult setEidPin(quint8 pTimeoutSeconds) override
Sets a new eID PIN, i.e.
Definition: SimulatorCard.cpp:170
CardReturnCode establishConnection() override
Establish a connection to the smart card.
Definition: SimulatorCard.cpp:43
EstablishPaceChannelOutput establishPaceChannel(PacePasswordId pPasswordId, int pPreferredPinLength, const QByteArray &pChat, const QByteArray &pCertificateDescription, quint8 pTimeoutSeconds) override
Establishes a PACE channel, i.e.
Definition: SimulatorCard.cpp:145
CardReturnCode destroyPaceChannel() override
Destroys an existing PACE channel, i.e.
Definition: SimulatorCard.cpp:164
Definition: SimulatorFileSystem.h:23
Implementation of GeneralAuthenticate response APDUs.
Definition: CommandApdu.h:16
quint8
Definition: ResponseApdu.h:62
Definition: ResponseApdu.h:115