00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #if !defined(_FEDM_ISC_TAG_HANDLER_ISO14443_4_MIFARE_DESFIRE_IMPL_C1_H_INCLUDED_)
00035 #define _FEDM_ISC_TAG_HANDLER_ISO14443_4_MIFARE_DESFIRE_IMPL_C1_H_INCLUDED_
00036
00037 #if !defined(_FEDM_NO_TAG_HANDLER_ISO14443)
00038
00039 #include <string>
00040 #include "../../FEDM.h"
00041
00042
00043 class FedmIscTagHandler_ISO14443_4_MIFARE_DESFire;
00044 class FEDM_ISOTabItem;
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061 class FedmIscTagHandler_ISO14443_4_MIFARE_DESFire_Impl_C1
00062 {
00063 public:
00064
00065 FedmIscTagHandler_ISO14443_4_MIFARE_DESFire_Impl_C1(FEDM_ISOTabItem* pTabItem, FedmIscTagHandler_ISO14443_4_MIFARE_DESFire* pParent);
00066
00067 virtual ~FedmIscTagHandler_ISO14443_4_MIFARE_DESFire_Impl_C1();
00068
00069 virtual void Init();
00070
00071 FEDM_ISOTabItem* m_pTabItem;
00072 FedmIscTagHandler_ISO14443_4_MIFARE_DESFire* m_pParent;
00073
00074
00075
00076
00077
00078
00079 int Authenticate( unsigned int uiApplicationID,
00080 unsigned char ucReaderKeyIndex,
00081 unsigned char ucDESFireKeyNo );
00082
00083
00084 int ChangeKeySettings( unsigned int uiApplicationID,
00085 unsigned char ucReaderKeyIndex,
00086 unsigned char ucNewKeySettings );
00087
00088
00089 int GetKeySettings( unsigned char* pucResponseData,
00090 unsigned int uiResponseBufferLength,
00091 unsigned int& uiResponseLength );
00092
00093
00094 int ChangeKey( unsigned int uiApplicationID,
00095 unsigned char ucReaderKeyIndex,
00096 unsigned char ucDESFireKeyNo,
00097 unsigned char ucKeyNoToBeChanged,
00098 unsigned char ucAESNewKeyVersion,
00099 std::string sOldKey,
00100 std::string sNewKey );
00101
00102
00103 int GetKeyVersion( unsigned char ucDESFireKeyNo,
00104 unsigned char* pucResponseData,
00105 unsigned int uiResponseBufferLength,
00106 unsigned int& uiResponseLength );
00107
00108
00109
00110
00111
00112
00113 int CreateApplication( unsigned int uiApplicationID,
00114 unsigned char ucKeySetting1,
00115 unsigned char ucKeySetting2,
00116 unsigned int uiISOFileID,
00117 std::string sDFName,
00118 unsigned char* pucResponseData,
00119 unsigned int uiResponseBufferLength,
00120 unsigned int& uiResponseLength );
00121
00122
00123 int DeleteApplication( unsigned int uiApplicationID,
00124 unsigned char* pucResponseData,
00125 unsigned int uiResponseBufferLength,
00126 unsigned int& uiResponseLength );
00127
00128
00129 int GetApplicationIDs( unsigned char* pucResponseData,
00130 unsigned int uiResponseBufferLength,
00131 unsigned int& uiResponseLength );
00132
00133
00134 int FreeMemory( unsigned char* pucResponseData,
00135 unsigned int uiResponseBufferLength,
00136 unsigned int& uiResponseLength );
00137
00138
00139 int GetDFNames( unsigned char* pucResponseData,
00140 unsigned int uiResponseBufferLength,
00141 unsigned int& uiResponseLength );
00142
00143
00144 int SelectApplication( unsigned int uiApplicationID,
00145 unsigned char* pucResponseData,
00146 unsigned int uiResponseBufferLength,
00147 unsigned int& uiResponseLength );
00148
00149
00150 int FormatPICC( unsigned char* pucResponseData,
00151 unsigned int uiResponseBufferLength,
00152 unsigned int& uiResponseLength );
00153
00154
00155 int GetVersion( unsigned char* pucResponseData,
00156 unsigned int uiResponseBufferLength,
00157 unsigned int& uiResponseLength );
00158
00159
00160 int GetCardUID( unsigned char* pucResponseData,
00161 unsigned int uiResponseBufferLength,
00162 unsigned int& uiResponseLength );
00163
00164
00165 int SetConfiguration( unsigned char* pucRequestData,
00166 unsigned int uiRequestLength,
00167 unsigned char* pucResponseData,
00168 unsigned int uiResponseBufferLength,
00169 unsigned int& uiResponseLength );
00170
00171
00172
00173
00174
00175
00176 int ChangeFileSettings( unsigned int uiApplicationID,
00177 unsigned char ucReaderKeyIndex,
00178 unsigned char ucDESFireKeyNo,
00179 unsigned char ucFileNo,
00180 unsigned char ucNewFileCommSettings,
00181 unsigned char ucNewFileReadWriteAccessRights,
00182 unsigned char ucNewFileChangeAccessRights,
00183 unsigned char ucNewFileReadAccessRights,
00184 unsigned char ucNewFileWriteAccessRights );
00185
00186
00187 int GetFileIDs( unsigned char* pucResponseData,
00188 unsigned int uiResponseBufferLength,
00189 unsigned int& uiResponseLength );
00190
00191
00192 int GetFileSettings( unsigned char ucFileNo,
00193 unsigned char* pucResponseData,
00194 unsigned int uiResponseBufferLength,
00195 unsigned int& uiResponseLength );
00196
00197
00198 int CreateStdDataFile( unsigned char ucFileNo,
00199 bool bWithISOFileID,
00200 unsigned int uiISOFileID,
00201 unsigned char ucFileCommSettings,
00202 unsigned char ucFileReadWriteAccessRights,
00203 unsigned char ucFileChangeAccessRights,
00204 unsigned char ucFileReadAccessRights,
00205 unsigned char ucFileWriteAccessRights,
00206 unsigned int uiFileSize,
00207 unsigned char* pucResponseData,
00208 unsigned int uiResponseBufferLength,
00209 unsigned int& uiResponseLength );
00210
00211
00212 int CreateBackupDataFile( unsigned char ucFileNo,
00213 bool bWithISOFileID,
00214 unsigned int uiISOFileID,
00215 unsigned char ucFileCommSettings,
00216 unsigned char ucFileReadWriteAccessRights,
00217 unsigned char ucFileChangeAccessRights,
00218 unsigned char ucFileReadAccessRights,
00219 unsigned char ucFileWriteAccessRights,
00220 unsigned int uiFileSize,
00221 unsigned char* pucResponseData,
00222 unsigned int uiResponseBufferLength,
00223 unsigned int& uiResponseLength );
00224
00225
00226 int CreateValueFile( unsigned char ucFileNo,
00227 unsigned char ucFileCommSettings,
00228 unsigned char ucFileReadWriteAccessRights,
00229 unsigned char ucFileChangeAccessRights,
00230 unsigned char ucFileReadAccessRights,
00231 unsigned char ucFileWriteAccessRights,
00232 unsigned int uiLowerLimit,
00233 unsigned int uiUpperLimit,
00234 unsigned int uiValue,
00235 unsigned char ucLimitedCreditEnabled,
00236 unsigned char* pucResponseData,
00237 unsigned int uiResponseBufferLength,
00238 unsigned int& uiResponseLength );
00239
00240
00241 int CreateLinearRecordFile( unsigned char ucFileNo,
00242 bool bWithISOFileID,
00243 unsigned int uiISOFileID,
00244 unsigned char ucFileCommSettings,
00245 unsigned char ucFileReadWriteAccessRights,
00246 unsigned char ucFileChangeAccessRights,
00247 unsigned char ucFileReadAccessRights,
00248 unsigned char ucFileWriteAccessRights,
00249 unsigned int uiRecordSize,
00250 unsigned int uiMaxNoOfRecords,
00251 unsigned char* pucResponseData,
00252 unsigned int uiResponseBufferLength,
00253 unsigned int& uiResponseLength );
00254
00255
00256 int CreateCyclicRecordFile( unsigned char ucFileNo,
00257 bool bWithISOFileID,
00258 unsigned int uiISOFileID,
00259 unsigned char ucFileCommSettings,
00260 unsigned char ucFileReadWriteAccessRights,
00261 unsigned char ucFileChangeAccessRights,
00262 unsigned char ucFileReadAccessRights,
00263 unsigned char ucFileWriteAccessRights,
00264 unsigned int uiRecordSize,
00265 unsigned int uiMaxNoOfRecords,
00266 unsigned char* pucResponseData,
00267 unsigned int uiResponseBufferLength,
00268 unsigned int& uiResponseLength );
00269
00270
00271 int DeleteFile( unsigned char ucFileNo,
00272 unsigned char* pucResponseData,
00273 unsigned int uiResponseBufferLength,
00274 unsigned int& uiResponseLength );
00275
00276
00277 int GetISOFileIDs( unsigned char* pucResponseData,
00278 unsigned int uiResponseBufferLength,
00279 unsigned int& uiResponseLength );
00280
00281
00282
00283
00284
00285
00286 int ReadStandardData( unsigned int uiApplicationID,
00287 unsigned char ucReaderKeyIndex,
00288 unsigned char ucDESFireKeyNo,
00289 unsigned char ucFileNo,
00290 unsigned char ucFileCommSettings,
00291 unsigned int uiFileOffset,
00292 unsigned int uiFileLen,
00293 unsigned char* pucFileData );
00294
00295
00296 int WriteStandardData( unsigned int uiApplicationID,
00297 unsigned char ucReaderKeyIndex,
00298 unsigned char ucDESFireKeyNo,
00299 unsigned char ucFileNo,
00300 unsigned char ucFileCommSettings,
00301 unsigned int uiFileOffset,
00302 unsigned int uiFileLen,
00303 unsigned char* pucFileData );
00304
00305
00306 int GetValue( unsigned int uiApplicationID,
00307 unsigned char ucReaderKeyIndex,
00308 unsigned char ucDESFireKeyNo,
00309 unsigned char ucFileNo,
00310 unsigned char ucFileCommSettings,
00311 unsigned int& uiValue );
00312
00313
00314 int Credit( unsigned int uiApplicationID,
00315 unsigned char ucReaderKeyIndex,
00316 unsigned char ucDESFireKeyNo,
00317 unsigned char ucFileNo,
00318 unsigned char ucFileCommSettings,
00319 unsigned int uiCreditValue );
00320
00321
00322 int Debit( unsigned int uiApplicationID,
00323 unsigned char ucReaderKeyIndex,
00324 unsigned char ucDESFireKeyNo,
00325 unsigned char ucFileNo,
00326 unsigned char ucFileCommSettings,
00327 unsigned int uiDebitValue );
00328
00329
00330
00331 int LimitedCredit( unsigned int uiApplicationID,
00332 unsigned char ucReaderKeyIndex,
00333 unsigned char ucDESFireKeyNo,
00334 unsigned char ucFileNo,
00335 unsigned char ucFileCommSettings,
00336 unsigned int uiCreditValue );
00337
00338
00339 int WriteRecord( unsigned int uiApplicationID,
00340 unsigned char ucReaderKeyIndex,
00341 unsigned char ucDESFireKeyNo,
00342 unsigned char ucFileNo,
00343 unsigned char ucFileCommSettings,
00344 unsigned int uiFileOffset,
00345 unsigned int uiRecordLen,
00346 unsigned char* pucRecordData );
00347
00348
00349 int ReadRecords( unsigned int uiApplicationID,
00350 unsigned char ucReaderKeyIndex,
00351 unsigned char ucDESFireKeyNo,
00352 unsigned char ucFileNo,
00353 unsigned char ucFileCommSettings,
00354 unsigned int uiRecordOffset,
00355 unsigned int uiNoOfRecords,
00356 unsigned int uiRecordSize,
00357 unsigned char* pucRecordData );
00358
00359
00360 int ClearRecordFile( unsigned int uiApplicationID,
00361 unsigned char ucReaderKeyIndex,
00362 unsigned char ucDESFireKeyNo,
00363 unsigned char ucFileNo,
00364 unsigned char ucFileCommSettings );
00365
00366
00367 int CommitTransaction( unsigned char* pucResponseData,
00368 unsigned int uiResponseBufferLength,
00369 unsigned int& uiResponseLength );
00370
00371
00372 int AbortTransaction( unsigned char* pucResponseData,
00373 unsigned int uiResponseBufferLength,
00374 unsigned int& uiResponseLength );
00375
00376
00377 unsigned char m_ucErrorSource;
00378 unsigned int m_uiErrorCode;
00379
00380 };
00381
00382 #endif // #if !defined(_FEDM_NO_TAG_HANDLER_ISO14443)
00383
00384 #endif // !defined(_FEDM_ISC_TAG_HANDLER_ISO14443_4_MIFARE_DESFIRE_IMPL_H_INCLUDED_)