FedmIscTagHandler_ISO14443_4_MIFARE_DESFire_Impl_C3.h
Go to the documentation of this file.
00001 /*-------------------------------------------------------
00002 |                                                       |
00003 | FedmIscTagHandler_ISO14443_4_MIFARE_DESFire_Impl_C3.h |
00004 |                                                       |
00005 ---------------------------------------------------------
00006 
00007 Copyright © 2009-2010   FEIG ELECTRONIC GmbH, All Rights Reserved.
00008                                                 Lange Strasse 4
00009                                                 D-35781 Weilburg
00010                                                 Federal Republic of Germany
00011                                                 phone    : +49 6471 31090
00012                                                 fax      : +49 6471 310999
00013                                                 e-mail   : obid-support@feig.de
00014                                                 Internet : http://www.feig.de
00015                                         
00016 Author                  :       Markus Hultsch
00017 Begin                   :       30.03.2009
00018 
00019 Version                 :       03.02.05 / 08.09.2010 / M. Sahm
00020 
00021 Operation Systems       :       independent
00022 
00023 Function                        :       implementation class for OBID® classic-pro transponder ISO14443-4 MIFARE DESFire
00024 
00025 NOTE                            :       this class supports only selected mode in Host-Mode
00026 
00027 
00028 Trademarks:
00029 -----------
00030 OBID®, OBID i-scan® and OBID myAXXESS® are registered Trademarks of FEIG ELECTRONIC GmbH
00031 Other Trademarks: see FEDM.h
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 // constants
00050 //#####################################################################################
00051 
00052 
00053 
00054 
00055 
00056 //####################################################################
00057 // class FedmIscTagHandler_ISO14443_4_MIFARE_DESFire_Impl_C3
00058 // >> supports only ISO Host Commands <<
00059 //####################################################################
00060 
00061 class FedmIscTagHandler_ISO14443_4_MIFARE_DESFire_Impl_C3 //: public FedmIscTagHandler_ISO14443_4
00062 {
00063 public:
00064         // constructor
00065         FedmIscTagHandler_ISO14443_4_MIFARE_DESFire_Impl_C3(FEDM_ISOTabItem* pTabItem, FedmIscTagHandler_ISO14443_4_MIFARE_DESFire* pParent);
00066         // destructor
00067         virtual ~FedmIscTagHandler_ISO14443_4_MIFARE_DESFire_Impl_C3();
00068 
00069         virtual void Init();                                    // set all data members to 0
00070 
00071         FEDM_ISOTabItem* m_pTabItem;
00072         FedmIscTagHandler_ISO14443_4_MIFARE_DESFire* m_pParent;
00073 
00074 
00075         //####################################################################
00076         // 5 security related commands
00077         
00078         // [0xFA] : [0xC3] DESFire Commands (Authenticate, AuthenticateISO, AuthenticateAES)
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         // [0x54] : [0xC3] DESFire Commands
00092         int ChangeKeySettings(  unsigned char ucMode,
00093                                                         unsigned char ucSlot,
00094                                                         unsigned char ucTimeout,
00095                                                         unsigned char ucNewKeySettings );
00096         
00097         // [0x45] : [0xC3] DESFire Commands
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         // [0xC4] : [0xC3] DESFire Commands
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         // [0x64] : [0xC3] DESFire Commands
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         // 10 PICC level commands
00134 
00135         // [0xCA] : [0xC3] DESFire Commands
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         // [0xDA] : [0xC3] DESFire Commands
00147         int DeleteApplication(  unsigned char ucMode,
00148                                                         unsigned char ucSlot,
00149                                                         unsigned char ucTimeout,
00150                                                         unsigned char ucPICCLevelFlags,
00151                                                         unsigned int uiApplicationID );
00152         
00153         // [0x6A] : [0xC3] DESFire Commands
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         // [0x6E] : [0xC3] DESFire Commands
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         // [0x6D] : [0xC3] DESFire Commands
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         // [0x5A] : [0xC3] DESFire Commands
00181         int SelectApplication(  unsigned char ucMode,
00182                                                         unsigned char ucSlot,
00183                                                         unsigned char ucTimeout,
00184                                                         unsigned char ucPICCLevelFlags,
00185                                                         unsigned int uiApplicationID );
00186 
00187         // [0xFC] : [0xC3] DESFire Commands
00188         int FormatPICC(                 unsigned char ucMode,
00189                                                         unsigned char ucSlot,
00190                                                         unsigned char ucTimeout,
00191                                                         unsigned char ucPICCLevelFlags );
00192 
00193         // [0x60] : [0xC3] DESFire Commands
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         // [0x51] : [0xC3] DESFire Commands
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         // [0x5C] : [0xC3] DESFire Commands
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         // 10 application level commands
00222 
00223         // [0x5F] : [0xC3] DESFire Commands
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         // [0x6F] : [0xC3] DESFire Commands
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         // [0xF5] : [0xC3] DESFire Commands
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         // [0xCD] : [0xC3] DESFire Commands
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         // [0xCB] : [0xC3] DESFire Commands
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         // [0xCC] : [0xC3] DESFire Commands
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         // [0xC1] : [0xC3] DESFire Commands
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         // [0xC0] : [0xC3] DESFire Commands
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         // [0xDF] : [0xC3] DESFire Commands
00329         int DeleteFile(                 unsigned char ucMode,
00330                                                         unsigned char ucSlot,
00331                                                         unsigned char ucTimeout,
00332                                                         unsigned char ucApplicationLevelFlags,
00333                                                         unsigned char ucFileNo );
00334 
00335         // [0x61] : [0xC3] DESFire Commands
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         // 11 data manipulation commands
00347         
00348         // [0xBD] : [0xC3] DESFire Commands
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         // [0x3D] : [0xC3] DESFire Commands
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         // [0x6C] : [0xC3] DESFire Commands
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         // [0x0C] : [0xC3] DESFire Commands
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         // [0xDC] : [0xC3] DESFire Commands
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         // [0x1C] : [0xC3] DESFire Commands
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         // [0x3B] : [0xC3] DESFire Commands
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         // [0xBB] : [0xC3] DESFire Commands
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         // [0xEB] : [0xC3] DESFire Commands
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         // [0xC7] : [0xC3] DESFire Commands
00439         int CommitTransaction(  unsigned char ucMode,
00440                                                         unsigned char ucSlot,
00441                                                         unsigned char ucTimeout,
00442                                                         unsigned char ucDataManipulationFlags );
00443 
00444         // [0xA7] : [0xC3] DESFire Commands
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_)


maggie_rfid_drivers
Author(s): Raul Perula-Martinez
autogenerated on Mon Sep 14 2015 03:05:30