AusweisApp
 
Lade ...
Suche ...
Keine Treffer
ResponseApdu.h
gehe zur Dokumentation dieser Datei
1
4
5#pragma once
6
7#include "CardReturnCode.h"
8#include "EnumHelper.h"
9#include "LogPrivacy.h"
10
11
12namespace governikus
13{
14defineTypedEnumType(StatusCode, quint16,
15 UNKNOWN = 0x0000,
16 SUCCESS = 0x9000,
17 NO_PKCS15_APP = 0x6200,
18 END_OF_FILE = 0x6282,
19 PIN_DEACTIVATED = 0x6283,
20 FCI_NO_ISO7816_4 = 0x6284,
21 VERIFICATION_FAILED = 0x6300,
22 INPUT_TIMEOUT = 0x6400,
23 INPUT_CANCELLED = 0x6401,
24 PASSWORDS_DIFFER = 0x6402,
25 PASSWORD_OUTOF_RANGE = 0x6403,
26 CARD_EJECTED_AND_REINSERTED = 0x64A2,
27 EEPROM_CELL_DEFECT = 0x6581,
28 SECURITY_ENVIRONMENT = 0x6600,
29 WRONG_LENGTH = 0x6700,
30 NO_BINARY_FILE = 0x6981,
31 LAST_CHAIN_CMD_EXPECTED = 0x6883,
32 ACCESS_DENIED = 0x6982,
33 PASSWORD_COUNTER_EXPIRED = 0x6983,
34 DIRECTORY_OR_PASSWORD_LOCKED_OR_NOT_ALLOWED = 0x6984,
35 NO_PARENT_FILE = 0x6985,
36 NOT_YET_INITIALIZED = 0x6985,
37 NO_CURRENT_DIRECTORY_SELECTED = 0x6986,
38 DATAFIELD_EXPECTED = 0x6987,
39 INVALID_SM_OBJECTS = 0x6988,
40 SW_APPLET_SELECT_FAILED = 0x6999,
41 COMMAND_NOT_ALLOWED = 0x69F0,
42 INVALID_DATAFIELD = 0x6A80,
43 ALGORITHM_ID = 0x6A81,
44 FILE_NOT_FOUND = 0x6A82,
45 RECORD_NOT_FOUND = 0x6A83,
46 INVALID_PARAMETER = 0x6A86,
47 LC_INCONSISTENT = 0x6A87,
48 REFERENCED_DATA_NOT_FOUND = 0x6A88,
49 ILLEGAL_OFFSET = 0x6B00,
50 UNSUPPORTED_CLA = 0x6E00,
51 CANT_DISPLAY = 0x6410,
52 INVALID_P1P2 = 0x6A00,
53 UNSUPPORTED_INS = 0x6D00,
54 PIN_BLOCKED = 0x63C0, // retries left: 0
55 PIN_SUSPENDED = 0x63C1, // retries left: 1
56 PIN_RETRY_COUNT_2 = 0x63C2, // retries left: 2
57 INITIAL_PIN_BLOCKED = 0x63D0,
58 INITIAL_PIN_RETRY_COUNT_1 = 0x63D1,
59 INITIAL_PIN_RETRY_COUNT_2 = 0x63D2,
60 INITIAL_PIN_RETRY_COUNT_3 = 0x63D3,
62 )
63
64// According to ISO-7816-4, 5.6 Status bytes, Table 6
66 UNKNOWN = 0x00,
82 SUCCESS = 0x90
83 )
84
85class ResponseApdu final
86{
87 private:
88 quint16 mStatusCode;
89 QByteArray mData;
90
91 public:
92 explicit ResponseApdu(StatusCode pStatusCode, const QByteArray& pData = QByteArray());
93 explicit ResponseApdu(const QByteArray& pBuffer = QByteArray());
94
95 [[nodiscard]] bool isEmpty() const;
96 [[nodiscard]] const QByteArray& getData() const;
97 [[nodiscard]] StatusCode getStatusCode() const;
98 [[nodiscard]] QByteArray getStatusBytes() const;
99 [[nodiscard]] SW1 getSW1() const;
100 [[nodiscard]] char getSW2() const;
101
102 operator QByteArray() const;
103};
104
105
106inline QDebug operator<<(QDebug pDbg, const ResponseApdu& pResponseApdu)
107{
108 return privacy::logApdu(pDbg, pResponseApdu);
109}
110
111
112char* toString(const ResponseApdu& pResponseApdu);
113
114
116{
117 CardReturnCode mReturnCode = CardReturnCode::UNDEFINED;
118 ResponseApdu mResponseApdu = ResponseApdu();
119};
120
121#ifndef QT_NO_DEBUG
122inline bool operator==(const ResponseApdu& pLeft, const ResponseApdu& pRight)
123{
124 return QByteArray(pLeft) == QByteArray(pRight);
125}
126
127
128inline bool operator==(const ResponseApduResult& pLeft, const ResponseApduResult& pRight)
129{
130 return pLeft.mReturnCode == pRight.mReturnCode && pLeft.mResponseApdu == pRight.mResponseApdu;
131}
132
133
134#endif
135
136} // namespace governikus
#define defineTypedEnumType(enumName, enumType,...)
Definition EnumHelper.h:80
struct Data mData
QDebug logApdu(QDebug pDbg, const QByteArray &pApdu)
Definition LogPrivacy.cpp:13
Defines the AccessRight and AccessRole enum.
Definition CommandApdu.h:17
quint8
Definition ResponseApdu.h:65
UNKNOWN
Definition ResponseApdu.h:66
WRONG_PARAMETERS_P1_P2_NO_INFO
Definition ResponseApdu.h:77
char * toString(const CommandApdu &pCommandApdu)
WRONG_LENGTH
Definition ResponseApdu.h:73
MORE_DATA_AVAILABLE
Definition ResponseApdu.h:67
defineTypedEnumType(Ins, uchar, UNKNOWN=0x00, DEACTIVATE=0x04, VERIFY=0x20, MSE_SET=0x22, ACTIVATE=0x44, EXTERNAL_AUTHENTICATE=0x82, GET_CHALLENGE=0x84, GENERAL_AUTHENTICATE=0x86, PSO_VERIFY=0x2A, PSO_COMPUTE=0x2B, RESET_RETRY_COUNTER=0x2C, SELECT=0xA4, READ_BINARY=0xB0, GET_RESPONSE=0xC0, UPDATE_BINARY=0xD6) class CommandApdu
Definition CommandApdu.h:18
WRONG_PARAMETERS_P1_P2
Definition ResponseApdu.h:76
FUNCTIONS_IN_CLASS_NOT_SUPPORTED
Definition ResponseApdu.h:74
NONVOLATILE_MEMORY_CHANGED_2
Definition ResponseApdu.h:71
SECURITY_ISSUE
Definition ResponseApdu.h:72
WRONG_LE_FIELD
Definition ResponseApdu.h:78
NONVOLATILE_MEMORY_UNCHANGED_1
Definition ResponseApdu.h:68
ERROR_COMMAND_NOT_ALLOWED
Definition ResponseApdu.h:75
INSTRUCTION_CODE_INVALID
Definition ResponseApdu.h:79
QDebug operator<<(QDebug pDbg, const CommandApdu &pCommandApdu)
Definition CommandApdu.h:96
NO_PRECISE_DIAGNOSIS
Definition ResponseApdu.h:81
NONVOLATILE_MEMORY_UNCHANGED_2
Definition ResponseApdu.h:70
NONVOLATILE_MEMORY_CHANGED_1
Definition ResponseApdu.h:69
CLASS_NOT_SUPPORTED
Definition ResponseApdu.h:80
bool operator==(const CommandApdu &pLeft, const CommandApdu &pRight)
Definition CommandApdu.h:105
SUCCESS
Definition ResponseApdu.h:82
Definition ResponseApdu.h:116
CardReturnCode mReturnCode
Definition ResponseApdu.h:117
ResponseApdu mResponseApdu
Definition ResponseApdu.h:118