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_C3_H_INCLUDED_)
00035 #define _FEDM_ISC_TAG_HANDLER_ISO14443_4_MIFARE_DESFIRE_IMPL_C3_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_C3
00062 {
00063 public:
00064
00065 FedmIscTagHandler_ISO14443_4_MIFARE_DESFire_Impl_C3(FEDM_ISOTabItem* pTabItem, FedmIscTagHandler_ISO14443_4_MIFARE_DESFire* pParent);
00066
00067 virtual ~FedmIscTagHandler_ISO14443_4_MIFARE_DESFire_Impl_C3();
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 char ucMode,
00080 unsigned char ucSlot,
00081 unsigned char ucTimeout,
00082 unsigned char ucReaderKeyIndex,
00083 unsigned char ucDESFireAuthMode,
00084 unsigned char ucDESFireKeyNo,
00085 unsigned char ucSamAuthMode,
00086 unsigned char ucSamKeyNo,
00087 unsigned char ucSamKeyVersion,
00088 unsigned char ucSamDivInputLen,
00089 unsigned char* pucDivInput );
00090
00091
00092 int ChangeKeySettings( unsigned char ucMode,
00093 unsigned char ucSlot,
00094 unsigned char ucTimeout,
00095 unsigned char ucNewKeySettings );
00096
00097
00098 int GetKeySettings( unsigned char ucMode,
00099 unsigned char ucSlot,
00100 unsigned char ucTimeout,
00101 unsigned char* pucResponseData,
00102 unsigned int uiResponseBufferLength,
00103 unsigned int& uiResponseLength );
00104
00105
00106 int ChangeKey( unsigned char ucMode,
00107 unsigned char ucSlot,
00108 unsigned char ucTimeout,
00109 unsigned char ucKeyNoToBeChanged,
00110 unsigned char ucAESNewKeyVersion,
00111 std::string sOldKey,
00112 std::string sNewKey,
00113 unsigned char ucSamKeyCompMethod,
00114 unsigned char ucSamCfg,
00115 unsigned char ucSamKeyNoCurrentKey,
00116 unsigned char ucSamKeyVersionCurrentKey,
00117 unsigned char ucSamKeyNoNewKey,
00118 unsigned char ucSamKeyVersionNewKey,
00119 unsigned char ucSamDivInputLen,
00120 unsigned char* pucDivInput );
00121
00122
00123 int GetKeyVersion( unsigned char ucMode,
00124 unsigned char ucSlot,
00125 unsigned char ucTimeout,
00126 unsigned char ucDESFireKeyNo,
00127 unsigned char* pucResponseData,
00128 unsigned int uiResponseBufferLength,
00129 unsigned int& uiResponseLength );
00130
00131
00132
00133
00134
00135
00136 int CreateApplication( unsigned char ucMode,
00137 unsigned char ucSlot,
00138 unsigned char ucTimeout,
00139 unsigned char ucPICCLevelFlags,
00140 unsigned int uiApplicationID,
00141 unsigned char ucKeySetting1,
00142 unsigned char ucKeySetting2,
00143 unsigned int uiISOFileID,
00144 std::string sDFName );
00145
00146
00147 int DeleteApplication( unsigned char ucMode,
00148 unsigned char ucSlot,
00149 unsigned char ucTimeout,
00150 unsigned char ucPICCLevelFlags,
00151 unsigned int uiApplicationID );
00152
00153
00154 int GetApplicationIDs( unsigned char ucMode,
00155 unsigned char ucSlot,
00156 unsigned char ucTimeout,
00157 unsigned char ucPICCLevelFlags,
00158 unsigned char* pucResponseData,
00159 unsigned int uiResponseBufferLength,
00160 unsigned int& uiResponseLength );
00161
00162
00163 int FreeMemory( unsigned char ucMode,
00164 unsigned char ucSlot,
00165 unsigned char ucTimeout,
00166 unsigned char ucPICCLevelFlags,
00167 unsigned char* pucResponseData,
00168 unsigned int uiResponseBufferLength,
00169 unsigned int& uiResponseLength);
00170
00171
00172 int GetDFNames( unsigned char ucMode,
00173 unsigned char ucSlot,
00174 unsigned char ucTimeout,
00175 unsigned char ucPICCLevelFlags,
00176 unsigned char* pucResponseData,
00177 unsigned int uiResponseBufferLength,
00178 unsigned int& uiResponseLength );
00179
00180
00181 int SelectApplication( unsigned char ucMode,
00182 unsigned char ucSlot,
00183 unsigned char ucTimeout,
00184 unsigned char ucPICCLevelFlags,
00185 unsigned int uiApplicationID );
00186
00187
00188 int FormatPICC( unsigned char ucMode,
00189 unsigned char ucSlot,
00190 unsigned char ucTimeout,
00191 unsigned char ucPICCLevelFlags );
00192
00193
00194 int GetVersion( unsigned char ucMode,
00195 unsigned char ucSlot,
00196 unsigned char ucTimeout,
00197 unsigned char ucPICCLevelFlags,
00198 unsigned char* pucResponseData,
00199 unsigned int uiResponseBufferLength,
00200 unsigned int& uiResponseLength );
00201
00202
00203 int GetCardUID( unsigned char ucMode,
00204 unsigned char ucSlot,
00205 unsigned char ucTimeout,
00206 unsigned char ucPICCLevelFlags,
00207 unsigned char* pucResponseData,
00208 unsigned int uiResponseBufferLength,
00209 unsigned int& uiResponseLength );
00210
00211
00212 int SetConfiguration( unsigned char ucMode,
00213 unsigned char ucSlot,
00214 unsigned char ucTimeout,
00215 unsigned char ucPICCLevelFlags,
00216 unsigned char* pucRequestData,
00217 unsigned int uiRequestLength );
00218
00219
00220
00221
00222
00223
00224 int ChangeFileSettings( unsigned char ucMode,
00225 unsigned char ucSlot,
00226 unsigned char ucTimeout,
00227 unsigned char ucApplicationLevelFlags,
00228 unsigned char ucFileNo,
00229 unsigned char ucNewFileCommSettings,
00230 unsigned char ucNewFileReadWriteAccessRights,
00231 unsigned char ucNewFileChangeAccessRights,
00232 unsigned char ucNewFileReadAccessRights,
00233 unsigned char ucNewFileWriteAccessRights );
00234
00235
00236 int GetFileIDs( unsigned char ucMode,
00237 unsigned char ucSlot,
00238 unsigned char ucTimeout,
00239 unsigned char ucApplicationLevelFlags,
00240 unsigned char* pucResponseData,
00241 unsigned int uiResponseBufferLength,
00242 unsigned int& uiResponseLength );
00243
00244
00245 int GetFileSettings( unsigned char ucMode,
00246 unsigned char ucSlot,
00247 unsigned char ucTimeout,
00248 unsigned char ucApplicationLevelFlags,
00249 unsigned char ucFileNo,
00250 unsigned char* pucResponseData,
00251 unsigned int uiResponseBufferLength,
00252 unsigned int& uiResponseLength );
00253
00254
00255 int CreateStdDataFile( unsigned char ucMode,
00256 unsigned char ucSlot,
00257 unsigned char ucTimeout,
00258 unsigned char ucApplicationLevelFlags,
00259 unsigned char ucFileNo,
00260 unsigned int uiISOFileID,
00261 unsigned char ucFileCommSettings,
00262 unsigned char ucFileReadWriteAccessRights,
00263 unsigned char ucFileChangeAccessRights,
00264 unsigned char ucFileReadAccessRights,
00265 unsigned char ucFileWriteAccessRights,
00266 unsigned int uiFileSize );
00267
00268
00269 int CreateBackupDataFile( unsigned char ucMode,
00270 unsigned char ucSlot,
00271 unsigned char ucTimeout,
00272 unsigned char ucApplicationLevelFlags,
00273 unsigned char ucFileNo,
00274 unsigned int uiISOFileID,
00275 unsigned char ucFileCommSettings,
00276 unsigned char ucFileReadWriteAccessRights,
00277 unsigned char ucFileChangeAccessRights,
00278 unsigned char ucFileReadAccessRights,
00279 unsigned char ucFileWriteAccessRights,
00280 unsigned int uiFileSize );
00281
00282
00283 int CreateValueFile( unsigned char ucMode,
00284 unsigned char ucSlot,
00285 unsigned char ucTimeout,
00286 unsigned char ucApplicationLevelFlags,
00287 unsigned char ucFileNo,
00288 unsigned char ucFileCommSettings,
00289 unsigned char ucFileReadWriteAccessRights,
00290 unsigned char ucFileChangeAccessRights,
00291 unsigned char ucFileReadAccessRights,
00292 unsigned char ucFileWriteAccessRights,
00293 unsigned int uiLowerLimit,
00294 unsigned int uiUpperLimit,
00295 unsigned int uiValue,
00296 unsigned char ucLimitedCreditEnabled );
00297
00298
00299 int CreateLinearRecordFile( unsigned char ucMode,
00300 unsigned char ucSlot,
00301 unsigned char ucTimeout,
00302 unsigned char ucApplicationLevelFlags,
00303 unsigned char ucFileNo,
00304 unsigned int uiISOFileID,
00305 unsigned char ucFileCommSettings,
00306 unsigned char ucFileReadWriteAccessRights,
00307 unsigned char ucFileChangeAccessRights,
00308 unsigned char ucFileReadAccessRights,
00309 unsigned char ucFileWriteAccessRights,
00310 unsigned int uiRecordSize,
00311 unsigned int uiMaxNoOfRecords );
00312
00313
00314 int CreateCyclicRecordFile( unsigned char ucMode,
00315 unsigned char ucSlot,
00316 unsigned char ucTimeout,
00317 unsigned char ucApplicationLevelFlags,
00318 unsigned char ucFileNo,
00319 unsigned int uiISOFileID,
00320 unsigned char ucFileCommSettings,
00321 unsigned char ucFileReadWriteAccessRights,
00322 unsigned char ucFileChangeAccessRights,
00323 unsigned char ucFileReadAccessRights,
00324 unsigned char ucFileWriteAccessRights,
00325 unsigned int uiRecordSize,
00326 unsigned int uiMaxNoOfRecords );
00327
00328
00329 int DeleteFile( unsigned char ucMode,
00330 unsigned char ucSlot,
00331 unsigned char ucTimeout,
00332 unsigned char ucApplicationLevelFlags,
00333 unsigned char ucFileNo );
00334
00335
00336 int GetISOFileIDs( unsigned char ucMode,
00337 unsigned char ucSlot,
00338 unsigned char ucTimeout,
00339 unsigned char ucApplicationLevelFlags,
00340 unsigned char* pucResponseData,
00341 unsigned int uiResponseBufferLength,
00342 unsigned int& uiResponseLength );
00343
00344
00345
00346
00347
00348
00349 int ReadStandardData( unsigned char ucMode,
00350 unsigned char ucSlot,
00351 unsigned char ucTimeout,
00352 unsigned char ucDataManipulationFlags,
00353 unsigned char ucFileNo,
00354 unsigned char ucFileCommSettings,
00355 unsigned int uiFileOffset,
00356 unsigned int uiFileLen,
00357 unsigned char* pucFileData );
00358
00359
00360 int WriteStandardData( unsigned char ucMode,
00361 unsigned char ucSlot,
00362 unsigned char ucTimeout,
00363 unsigned char ucDataManipulationFlags,
00364 unsigned char ucFileNo,
00365 unsigned char ucFileCommSettings,
00366 unsigned int uiFileOffset,
00367 unsigned int uiFileLen,
00368 unsigned char* pucFileData );
00369
00370
00371 int GetValue( unsigned char ucMode,
00372 unsigned char ucSlot,
00373 unsigned char ucTimeout,
00374 unsigned char ucDataManipulationFlags,
00375 unsigned char ucFileNo,
00376 unsigned char ucFileCommSettings,
00377 unsigned int& uiValue );
00378
00379
00380 int Credit( unsigned char ucMode,
00381 unsigned char ucSlot,
00382 unsigned char ucTimeout,
00383 unsigned char ucDataManipulationFlags,
00384 unsigned char ucFileNo,
00385 unsigned char ucFileCommSettings,
00386 unsigned int uiCreditValue );
00387
00388
00389 int Debit( unsigned char ucMode,
00390 unsigned char ucSlot,
00391 unsigned char ucTimeout,
00392 unsigned char ucDataManipulationFlags,
00393 unsigned char ucFileNo,
00394 unsigned char ucFileCommSettings,
00395 unsigned int uiDebitValue );
00396
00397
00398
00399 int LimitedCredit( unsigned char ucMode,
00400 unsigned char ucSlot,
00401 unsigned char ucTimeout,
00402 unsigned char ucDataManipulationFlags,
00403 unsigned char ucFileNo,
00404 unsigned char ucFileCommSettings,
00405 unsigned int uiCreditValue );
00406
00407
00408 int WriteRecord( unsigned char ucMode,
00409 unsigned char ucSlot,
00410 unsigned char ucTimeout,
00411 unsigned char ucDataManipulationFlags,
00412 unsigned char ucFileNo,
00413 unsigned char ucFileCommSettings,
00414 unsigned int uiFileOffset,
00415 unsigned int uiRecordLen,
00416 unsigned char* pucRecordData );
00417
00418
00419 int ReadRecords( unsigned char ucMode,
00420 unsigned char ucSlot,
00421 unsigned char ucTimeout,
00422 unsigned char ucDataManipulationFlags,
00423 unsigned char ucFileNo,
00424 unsigned char ucFileCommSettings,
00425 unsigned int uiRecordOffset,
00426 unsigned int uiNoOfRecords,
00427 unsigned int uiRecordSize,
00428 unsigned char* pucRecordData );
00429
00430
00431 int ClearRecordFile( unsigned char ucMode,
00432 unsigned char ucSlot,
00433 unsigned char ucTimeout,
00434 unsigned char ucDataManipulationFlags,
00435 unsigned char ucFileNo,
00436 unsigned char ucFileCommSettings );
00437
00438
00439 int CommitTransaction( unsigned char ucMode,
00440 unsigned char ucSlot,
00441 unsigned char ucTimeout,
00442 unsigned char ucDataManipulationFlags );
00443
00444
00445 int AbortTransaction( unsigned char ucMode,
00446 unsigned char ucSlot,
00447 unsigned char ucTimeout,
00448 unsigned char ucDataManipulationFlags );
00449
00450
00451 unsigned char m_ucErrorSource;
00452 unsigned int m_uiErrorCode;
00453
00454 };
00455
00456 #endif // #if !defined(_FEDM_NO_TAG_HANDLER_ISO14443)
00457
00458 #endif // !defined(_FEDM_ISC_TAG_HANDLER_ISO14443_4_MIFARE_DESFIRE_IMPL_C3_H_INCLUDED_)