]> git.zerfleddert.de Git - proxmark3-svn/blame - client/emv/apduinfo.c
small refactoring
[proxmark3-svn] / client / emv / apduinfo.c
CommitLineData
fe346768 1//-----------------------------------------------------------------------------
2// Copyright (C) 2017 Merlok
3//
4// This code is licensed to you under the terms of the GNU GPL, version 2 or,
5// at your option, any later version. See the LICENSE.txt file for the text of
6// the license.
7//-----------------------------------------------------------------------------
8// APDU status bytes information
9//-----------------------------------------------------------------------------
10
11#include "apduinfo.h"
12
13const APDUCode APDUCodeTable[] = {
14 // ID Type Description
15 {"XXXX", APDUCODE_TYPE_NONE, ""}, // blank string
16 {"6---", APDUCODE_TYPE_ERROR, "Class not supported."},
17 {"61--", APDUCODE_TYPE_INFO, "Response bytes still available"},
18 {"61XX", APDUCODE_TYPE_INFO, "Command successfully executed; 'XX' bytes of data are available and can be requested using GET RESPONSE."},
19 {"62--", APDUCODE_TYPE_WARNING, "State of non-volatile memory unchanged"},
20 {"6200", APDUCODE_TYPE_WARNING, "No information given (NV-Ram not changed)"},
21 {"6201", APDUCODE_TYPE_WARNING, "NV-Ram not changed 1."},
22 {"6281", APDUCODE_TYPE_WARNING, "Part of returned data may be corrupted"},
23 {"6282", APDUCODE_TYPE_WARNING, "End of file/record reached before reading Le bytes"},
24 {"6283", APDUCODE_TYPE_WARNING, "Selected file invalidated"},
25 {"6284", APDUCODE_TYPE_WARNING, "Selected file is not valid. FCI not formated according to ISO"},
26 {"6285", APDUCODE_TYPE_WARNING, "No input data available from a sensor on the card. No Purse Engine enslaved for R3bc"},
27 {"62A2", APDUCODE_TYPE_WARNING, "Wrong R-MAC"},
28 {"62A4", APDUCODE_TYPE_WARNING, "Card locked (during reset( ))"},
29 {"62CX", APDUCODE_TYPE_WARNING, "Counter with value x (command dependent)"},
30 {"62F1", APDUCODE_TYPE_WARNING, "Wrong C-MAC"},
31 {"62F3", APDUCODE_TYPE_WARNING, "Internal reset"},
32 {"62F5", APDUCODE_TYPE_WARNING, "Default agent locked"},
33 {"62F7", APDUCODE_TYPE_WARNING, "Cardholder locked"},
34 {"62F8", APDUCODE_TYPE_WARNING, "Basement is current agent"},
35 {"62F9", APDUCODE_TYPE_WARNING, "CALC Key Set not unblocked"},
36 {"62FX", APDUCODE_TYPE_WARNING, "-"},
37 {"62XX", APDUCODE_TYPE_WARNING, "RFU"},
38 {"63--", APDUCODE_TYPE_WARNING, "State of non-volatile memory changed"},
39 {"6300", APDUCODE_TYPE_WARNING, "No information given (NV-Ram changed)"},
40 {"6381", APDUCODE_TYPE_WARNING, "File filled up by the last write. Loading/updating is not allowed."},
41 {"6382", APDUCODE_TYPE_WARNING, "Card key not supported."},
42 {"6383", APDUCODE_TYPE_WARNING, "Reader key not supported."},
43 {"6384", APDUCODE_TYPE_WARNING, "Plaintext transmission not supported."},
44 {"6385", APDUCODE_TYPE_WARNING, "Secured transmission not supported."},
45 {"6386", APDUCODE_TYPE_WARNING, "Volatile memory is not available."},
46 {"6387", APDUCODE_TYPE_WARNING, "Non-volatile memory is not available."},
47 {"6388", APDUCODE_TYPE_WARNING, "Key number not valid."},
48 {"6389", APDUCODE_TYPE_WARNING, "Key length is not correct."},
49 {"63C0", APDUCODE_TYPE_WARNING, "Verify fail, no try left."},
50 {"63C1", APDUCODE_TYPE_WARNING, "Verify fail, 1 try left."},
51 {"63C2", APDUCODE_TYPE_WARNING, "Verify fail, 2 tries left."},
52 {"63C3", APDUCODE_TYPE_WARNING, "Verify fail, 3 tries left."},
53 {"63CX", APDUCODE_TYPE_WARNING, "The counter has reached the value 'x' (0 = x = 15) (command dependent)."},
54 {"63F1", APDUCODE_TYPE_WARNING, "More data expected."},
55 {"63F2", APDUCODE_TYPE_WARNING, "More data expected and proactive command pending."},
56 {"63FX", APDUCODE_TYPE_WARNING, "-"},
57 {"63XX", APDUCODE_TYPE_WARNING, "RFU"},
58 {"64--", APDUCODE_TYPE_ERROR, "State of non-volatile memory unchanged"},
59 {"6400", APDUCODE_TYPE_ERROR, "No information given (NV-Ram not changed)"},
60 {"6401", APDUCODE_TYPE_ERROR, "Command timeout. Immediate response required by the card."},
61 {"64XX", APDUCODE_TYPE_ERROR, "RFU"},
62 {"65--", APDUCODE_TYPE_ERROR, "State of non-volatile memory changed"},
63 {"6500", APDUCODE_TYPE_ERROR, "No information given"},
64 {"6501", APDUCODE_TYPE_ERROR, "Write error. Memory failure. There have been problems in writing or reading the EEPROM. Other hardware problems may also bring this error."},
65 {"6581", APDUCODE_TYPE_ERROR, "Memory failure"},
66 {"65FX", APDUCODE_TYPE_ERROR, "-"},
67 {"65XX", APDUCODE_TYPE_ERROR, "RFU"},
68 {"66--", APDUCODE_TYPE_SECURITY, " "},
69 {"6600", APDUCODE_TYPE_SECURITY, "Error while receiving (timeout)"},
70 {"6601", APDUCODE_TYPE_SECURITY, "Error while receiving (character parity error)"},
71 {"6602", APDUCODE_TYPE_SECURITY, "Wrong checksum"},
72 {"6603", APDUCODE_TYPE_SECURITY, "The current DF file without FCI"},
73 {"6604", APDUCODE_TYPE_SECURITY, "No SF or KF under the current DF"},
74 {"6669", APDUCODE_TYPE_SECURITY, "Incorrect Encryption/Decryption Padding"},
75 {"66XX", APDUCODE_TYPE_SECURITY, "-"},
76 {"67--", APDUCODE_TYPE_ERROR, " "},
77 {"6700", APDUCODE_TYPE_ERROR, "Wrong length"},
78 {"67XX", APDUCODE_TYPE_ERROR, "length incorrect (procedure)(ISO 7816-3)"},
79 {"68--", APDUCODE_TYPE_ERROR, "Functions in CLA not supported"},
80 {"6800", APDUCODE_TYPE_ERROR, "No information given (The request function is not supported by the card)"},
81 {"6881", APDUCODE_TYPE_ERROR, "Logical channel not supported"},
82 {"6882", APDUCODE_TYPE_ERROR, "Secure messaging not supported"},
83 {"6883", APDUCODE_TYPE_ERROR, "Last command of the chain expected"},
84 {"6884", APDUCODE_TYPE_ERROR, "Command chaining not supported"},
85 {"68FX", APDUCODE_TYPE_ERROR, "-"},
86 {"68XX", APDUCODE_TYPE_ERROR, "RFU"},
87 {"69--", APDUCODE_TYPE_ERROR, "Command not allowed"},
88 {"6900", APDUCODE_TYPE_ERROR, "No information given (Command not allowed)"},
89 {"6901", APDUCODE_TYPE_ERROR, "Command not accepted (inactive state)"},
90 {"6981", APDUCODE_TYPE_ERROR, "Command incompatible with file structure"},
91 {"6982", APDUCODE_TYPE_ERROR, "Security condition not satisfied."},
92 {"6983", APDUCODE_TYPE_ERROR, "Authentication method blocked"},
93 {"6984", APDUCODE_TYPE_ERROR, "Referenced data reversibly blocked (invalidated)"},
94 {"6985", APDUCODE_TYPE_ERROR, "Conditions of use not satisfied."},
95 {"6986", APDUCODE_TYPE_ERROR, "Command not allowed (no current EF)"},
96 {"6987", APDUCODE_TYPE_ERROR, "Expected secure messaging (SM) object missing"},
97 {"6988", APDUCODE_TYPE_ERROR, "Incorrect secure messaging (SM) data object"},
98 {"698D", APDUCODE_TYPE_NONE, "Reserved"},
99 {"6996", APDUCODE_TYPE_ERROR, "Data must be updated again"},
100 {"69E1", APDUCODE_TYPE_ERROR, "POL1 of the currently Enabled Profile prevents this action."},
101 {"69F0", APDUCODE_TYPE_ERROR, "Permission Denied"},
102 {"69F1", APDUCODE_TYPE_ERROR, "Permission Denied - Missing Privilege"},
103 {"69FX", APDUCODE_TYPE_ERROR, "-"},
104 {"69XX", APDUCODE_TYPE_ERROR, "RFU"},
105 {"6A--", APDUCODE_TYPE_ERROR, "Wrong parameter(s) P1-P2"},
106 {"6A00", APDUCODE_TYPE_ERROR, "No information given (Bytes P1 and/or P2 are incorrect)"},
107 {"6A80", APDUCODE_TYPE_ERROR, "The parameters in the data field are incorrect."},
108 {"6A81", APDUCODE_TYPE_ERROR, "Function not supported"},
109 {"6A82", APDUCODE_TYPE_ERROR, "File not found"},
110 {"6A83", APDUCODE_TYPE_ERROR, "Record not found"},
111 {"6A84", APDUCODE_TYPE_ERROR, "There is insufficient memory space in record or file"},
112 {"6A85", APDUCODE_TYPE_ERROR, "Lc inconsistent with TLV structure"},
113 {"6A86", APDUCODE_TYPE_ERROR, "Incorrect P1 or P2 parameter."},
114 {"6A87", APDUCODE_TYPE_ERROR, "Lc inconsistent with P1-P2"},
115 {"6A88", APDUCODE_TYPE_ERROR, "Referenced data not found"},
116 {"6A89", APDUCODE_TYPE_ERROR, "File already exists"},
117 {"6A8A", APDUCODE_TYPE_ERROR, "DF name already exists."},
118 {"6AF0", APDUCODE_TYPE_ERROR, "Wrong parameter value"},
119 {"6AFX", APDUCODE_TYPE_ERROR, "-"},
120 {"6AXX", APDUCODE_TYPE_ERROR, "RFU"},
121 {"6B--", APDUCODE_TYPE_ERROR, " "},
122 {"6B00", APDUCODE_TYPE_ERROR, "Wrong parameter(s) P1-P2"},
123 {"6BXX", APDUCODE_TYPE_ERROR, "Reference incorrect (procedure byte), (ISO 7816-3)"},
124 {"6C--", APDUCODE_TYPE_ERROR, "Wrong length Le"},
125 {"6C00", APDUCODE_TYPE_ERROR, "Incorrect P3 length."},
126 {"6CXX", APDUCODE_TYPE_ERROR, "Bad length value in Le; 'xx' is the correct exact Le"},
127 {"6D--", APDUCODE_TYPE_ERROR, " "},
128 {"6D00", APDUCODE_TYPE_ERROR, "Instruction code not supported or invalid"},
129 {"6DXX", APDUCODE_TYPE_ERROR, "Instruction code not programmed or invalid (procedure byte), (ISO 7816-3)"},
130 {"6E--", APDUCODE_TYPE_ERROR, " "},
131 {"6E00", APDUCODE_TYPE_ERROR, "Class not supported"},
132 {"6EXX", APDUCODE_TYPE_ERROR, "Instruction class not supported (procedure byte), (ISO 7816-3)"},
133 {"6F--", APDUCODE_TYPE_ERROR, "Internal exception"},
134 {"6F00", APDUCODE_TYPE_ERROR, "Command aborted - more exact diagnosis not possible (e.g., operating system error)."},
135