AusweisApp
Lade ...
Suche ...
Keine Treffer
SimulatorCard.h
gehe zur Dokumentation dieser Datei
1
4
5#pragma once
6
7#include "Card.h"
11#include "asn1/CVCertificate.h"
12#include "asn1/Oid.h"
14
15#include <QSet>
16
17#include <memory>
18#include <openssl/ec.h>
19
20
21namespace governikus
22{
23
24
26 : public Card
27{
28 Q_OBJECT
29
30 private:
31 bool mConnected;
32 SimulatorFileSystem mFileSystem;
33 std::unique_ptr<SecureMessaging> mSecureMessaging;
34 std::unique_ptr<SecureMessaging> mNewSecureMessaging;
35 Oid mSelectedProtocol;
36 int mChainingStep;
37 QSet<AccessRight> mAccessRights;
38 PacePasswordId mPacePassword;
39 int mPaceKeyId;
40 QByteArray mPaceNonce;
41 QByteArray mPaceTerminalKey;
42 QSharedPointer<EC_KEY> mCardKey;
43 QSharedPointer<const CVCertificate> mTaCertificate;
44 QByteArray mTaSigningData;
45 QByteArray mTaAuxData;
46
47 public:
48 explicit SimulatorCard(const SimulatorFileSystem& pFileSystem);
49
50 CardReturnCode establishConnection() override;
51 CardReturnCode releaseConnection() override;
52 bool isConnected() const override;
53
54 ResponseApduResult transmit(const CommandApdu& pCmd) override;
55
56 EstablishPaceChannelOutput establishPaceChannel(PacePasswordId pPasswordId, int pPreferredPinLength, const QByteArray& pChat, const QByteArray& pCertificateDescription) override;
57
58 CardReturnCode destroyPaceChannel() override;
59
60 ResponseApduResult setEidPin(quint8 pTimeoutSeconds) override;
61
62 private:
63 ResponseApdu executeCommand(const CommandApdu& pCmd);
64 ResponseApdu executeFileCommand(const CommandApdu& pCmd);
65 ResponseApdu executeMseSetAt(const CommandApdu& pCmd);
66 ResponseApdu executeMseSetDst(const QByteArray& pData) const;
67 ResponseApdu executeGeneralAuthenticate(const CommandApdu& pCmd);
68 ResponseApdu executePsoVerify(const QByteArray& pData);
69 ResponseApdu executeExternalAuthenticate(const QByteArray& pSignature);
70 ResponseApdu executePinManagement(const CommandApdu& pCmd) const;
71 ResponseApdu executeResetRetryCounter(const CommandApdu& pCmd) const;
72 QByteArray ecMultiplication(const QByteArray& pPoint) const;
73 QByteArray generateAuthenticationToken(const QByteArray& pPublicKey, const QByteArray& pNonce, const QByteArray& pVerify = QByteArray());
74 QByteArray generateRestrictedId(const QByteArray& pPublicKey) const;
75 StatusCode verifyAuxiliaryData(const QByteArray& pASN1Struct) const;
76};
77
78} // namespace governikus
Card()
Definition Card.cpp:15
Definition EstablishPaceChannelOutput.h:45
bool isConnected() const override
Is the smart card connected, i.e.
Definition SimulatorCard.cpp:80
ResponseApduResult transmit(const CommandApdu &pCmd) override
Performs a transmit to the smart card.
Definition SimulatorCard.cpp:86
SimulatorCard(const SimulatorFileSystem &pFileSystem)
Definition SimulatorCard.cpp:36
CardReturnCode releaseConnection() override
Destroys the previously established connection to the smart card.
Definition SimulatorCard.cpp:69
ResponseApduResult setEidPin(quint8 pTimeoutSeconds) override
Sets a new eID PIN, i.e.
Definition SimulatorCard.cpp:192
CardReturnCode establishConnection() override
Establish a connection to the smart card.
Definition SimulatorCard.cpp:57
CardReturnCode destroyPaceChannel() override
Destroys an existing PACE channel, i.e.
Definition SimulatorCard.cpp:180
EstablishPaceChannelOutput establishPaceChannel(PacePasswordId pPasswordId, int pPreferredPinLength, const QByteArray &pChat, const QByteArray &pCertificateDescription) override
Establishes a PACE channel, i.e.
Definition SimulatorCard.cpp:141
Definition SimulatorFileSystem.h:24
Defines the AccessRight and AccessRole enum.
Definition CommandApdu.h:17
quint8
Definition ResponseApdu.h:65
Definition ResponseApdu.h:116