AusweisApp
Lade ...
Suche ...
Keine Treffer
SimulatorCard.h
gehe zur Dokumentation dieser Datei
1
5#pragma once
6
7#include "Card.h"
10#include "asn1/Chat.h"
11#include "asn1/Oid.h"
13
14#include <memory>
15#include <openssl/ec.h>
16
17
18namespace governikus
19{
20
21
23 : public Card
24{
25 Q_OBJECT
26
27 private:
28 bool mConnected;
29 SimulatorFileSystem mFileSystem;
30 std::unique_ptr<SecureMessaging> mSecureMessaging;
31 std::unique_ptr<SecureMessaging> mNewSecureMessaging;
32 Oid mSelectedProtocol;
33 int mChainingStep;
34 int mPaceKeyId;
35 QSharedPointer<CHAT> mPaceChat;
36 QByteArray mPaceNonce;
37 QByteArray mPaceTerminalKey;
38 QSharedPointer<EC_KEY> mCardKey;
39 QSharedPointer<AuthenticatedAuxiliaryData> mTaAuxData;
40
41 public:
42 explicit SimulatorCard(const SimulatorFileSystem& pFileSystem);
43
44 CardReturnCode establishConnection() override;
45 CardReturnCode releaseConnection() override;
46 bool isConnected() const override;
47
48 ResponseApduResult transmit(const CommandApdu& pCmd) override;
49
50 EstablishPaceChannelOutput establishPaceChannel(PacePasswordId pPasswordId, int pPreferredPinLength, const QByteArray& pChat, const QByteArray& pCertificateDescription) override;
51
52 CardReturnCode destroyPaceChannel() override;
53
54 ResponseApduResult setEidPin(quint8 pTimeoutSeconds) override;
55
56 private:
57 ResponseApduResult executeFileCommand(const CommandApdu& pCmd);
58 ResponseApduResult executeMseSetAt(const CommandApdu& pCmd);
59 ResponseApduResult executeGeneralAuthenticate(const CommandApdu& pCmd);
60 QByteArray ecMultiplication(const QByteArray& pPoint) const;
61 QByteArray generateAuthenticationToken(const QByteArray& pPublicKey, const QByteArray& pNonce = QByteArray());
62 QByteArray generateRestrictedId(const QByteArray& pPublicKey) const;
63 StatusCode verifyAuxiliaryData(const QByteArray& pASN1Struct);
64};
65
66} // namespace governikus
Definition Card.h:47
Definition EstablishPaceChannelOutput.h:49
Definition SimulatorCard.h:24
bool isConnected() const override
Is the smart card connected, i.e.
Definition SimulatorCard.cpp:76
ResponseApduResult transmit(const CommandApdu &pCmd) override
Performs a transmit to the smart card.
Definition SimulatorCard.cpp:82
SimulatorCard(const SimulatorFileSystem &pFileSystem)
Definition SimulatorCard.cpp:35
CardReturnCode releaseConnection() override
Destroys the previously established connection to the smart card.
Definition SimulatorCard.cpp:65
ResponseApduResult setEidPin(quint8 pTimeoutSeconds) override
Sets a new eID PIN, i.e.
Definition SimulatorCard.cpp:198
CardReturnCode establishConnection() override
Establish a connection to the smart card.
Definition SimulatorCard.cpp:53
CardReturnCode destroyPaceChannel() override
Destroys an existing PACE channel, i.e.
Definition SimulatorCard.cpp:189
EstablishPaceChannelOutput establishPaceChannel(PacePasswordId pPasswordId, int pPreferredPinLength, const QByteArray &pChat, const QByteArray &pCertificateDescription) override
Establishes a PACE channel, i.e.
Definition SimulatorCard.cpp:168
Definition SimulatorFileSystem.h:22
Implementation of GeneralAuthenticate response APDUs.
Definition CommandApdu.h:17
quint8
Definition ResponseApdu.h:64
Definition ResponseApdu.h:115