]>
cvs.zerfleddert.de Git - proxmark3-svn/blob - armsrc/emvcard.h
   1 //----------------------------------------------------------------------------- 
   3 // code derived off merloks mifare code 
   6 // This code is licensed to you under the terms of the GNU GPL, version 2 or, 
   7 // at your option, any later version. See the LICENSE.txt file for the text of 
   9 //----------------------------------------------------------------------------- 
  10 // structure to hold EMV card and terminal parameters  
  11 //----------------------------------------------------------------------------- 
  15 //structure to hold received/set tag values 
  16 //variable data inputs have length specifiers  
  18     //ISO14443-A card stuff 
  19     uint8_t ATQA
[2]; //Answer to Request  
  23     uint8_t ATS_len
; //Answer to select   
  31     uint8_t* historicalbytes
; 
  35     uint8_t tag_4F_len
; //length of AID  
  36     uint8_t tag_4F
[16]; //Application Identifier (AID)  
  37     uint8_t tag_50_len
; //length of application label  
  38     uint8_t tag_50
[16]; //Application Label 
  39     uint8_t tag_56_len
; //track1 length  
  40     uint8_t tag_56
[76]; //Track 1 Data 
  41     uint8_t tag_57_len
; //track2 equiv len  
  42     uint8_t tag_57
[19]; //Track 2 Equivalent Data 
  43     uint8_t tag_5A_len
; //PAN length  
  44     uint8_t tag_5A
[10]; //Application Primary Account Number (PAN) 
  45     //uint8_t tag_6F[]; //File Control Information (FCI) Template 
  46     //uint8_t tag_70[255]; //Record Template 
  47     //uint8_t tag_77[]; //Response Message Template Format 2 
  48     //uint8_t tag_80[]; //Response Message Template Format 1  
  49     uint8_t tag_82
[2]; //Application Interchange Profile AIP 
  50     //uint8_t tag_83[]; //Command Template 
  52     uint8_t tag_84
[16]; //DF Name 
  54     uint8_t tag_86
[261]; //Issuer Script Command 
  55     uint8_t tag_87
[1]; //Application Priority Indicator 
  56     uint8_t tag_88
[1]; //Short File Identifier 
  57     uint8_t tag_8A
[2]; //Authorisation Response Code 
  59     uint8_t tag_8C
[252]; //CDOL1 
  61     uint8_t tag_8D
[252]; //CDOL2 
  63     uint8_t tag_8E
[252]; //Cardholder Verification Method (CVM) List 
  64     uint8_t tag_8F
[1];  //Certification Authority Public Key Index 
  66     uint8_t tag_90
[255]; //ssuer Public Key Certificate 
  68     uint8_t tag_92
[255]; //Issuer Public Key Remainder 
  70     uint8_t tag_93
[255]; //Signed Static Application Data 
  72     uint8_t tag_94
[252]; //Application File Locator AFL 
  73     uint8_t tag_95
[5]; //Terminal Verification Results 
  75     uint8_t tag_97
[252]; //Transaction Certificate Data Object List (TDOL) 
  76     uint8_t tag_98
[20]; //Transaction Certificate (TC) Hash Value  
  77     //assume 20 bytes, change after testing 
  79     uint8_t tag_99
[20]; //Transaction Personal Identification Number (PIN) Data  
  80     uint8_t tag_9A
[3]; //Transaction Date  
  81     uint8_t tag_9B
[2]; //Transaction Status Information  
  82     uint8_t tag_9C
[1]; //Transaction Type 
  84     uint8_t tag_9D
[16]; //Directory Definition File 
  86     uint8_t tag_CD
[3]; //Card Issuer Action Codes Paypass 
  90     uint8_t tag_D7
[3]; //Application Control (PayPass) 
  91     uint8_t tag_D8
[2]; //Application Interchange Profile (PayPass)  
  92     uint8_t tag_D9_len
; //Application File Locator (PayPass)  
  94     uint8_t tag_DA
[2]; //Static CVC3track1  
  95     uint8_t tag_DB
[2]; //Static CVC3track2  
  96     uint8_t tag_DC
[2]; //IVCVC3 CVC3track1  
  97     uint8_t tag_DD
[2]; //IVCVC3 CVC3track2  
 100     uint8_t tag_AF
[255]; //Proprietary Information  
 102     uint8_t tag_5F20_len
;  
 103     uint8_t tag_5F20
[26]; //Cardholder Name 
 104     uint8_t tag_5F24
[3]; //Application Expiry Date  
 105     uint8_t tag_5F25
[3]; //Application Effective Date YYMMDD 
 106     uint8_t tag_5F28
[2]; //Issuer Country Code   
 107     uint8_t tag_5F2A
[2]; //Transaction Currency Code 
 108     uint8_t tag_5F2D_len
;  
 109     uint8_t tag_5F2D
[8]; //Language Preference 
 110     uint8_t tag_5F30
[2]; //Service Code 
 111     uint8_t tag_5F34
[1]; //Application Primary Account Number (PAN) Sequence Number 
 112     uint8_t tag_5F36
[2]; //ATC 
 113     uint8_t tag_5F50_len
;  
 114     uint8_t tag_5F50
[255]; //Issuer URL  
 115     uint8_t tag_5F54_len
;  
 116     uint8_t tag_5F54
[11]; //Bank Identifier Code (BIC)  
 117     uint8_t tag_9F01
[6]; //Acquirer Identifier  
 118     uint8_t tag_9F02
[6]; // Amount, Authorised (Numeric) 
 119     uint8_t tag_9F03
[6]; //Amount, Other (Numeric)  
 120     uint8_t tag_9F04
[4]; //Amount, Other (Binary) 
 121     uint8_t tag_9F05_len
;  
 122     uint8_t tag_9F05
[32]; //Application Discretionary Data  
 123     uint8_t tag_9F06_len
;  
 124     uint8_t tag_9F06
[16]; //AID terminal  
 125     uint8_t tag_9F07
[2]; //Application Usage Control   
 126     uint8_t tag_9F08
[2]; //Application Version Number  
 127     uint8_t tag_9F09
[2]; //Application Version Number 
 128     //uint8_t tag_9F0A[2]  
 129     uint8_t tag_9F0B_len
;  
 130     uint8_t tag_9F0B
[45]; //Cardholder Name Extended 
 131     uint8_t tag_9F0D
[5]; //Issuer Action Code - Default  
 132     uint8_t tag_9F0E
[5]; //Issuer Action Code - Denial  
 133     uint8_t tag_9F0F
[5]; //Issuer Action Code - Online  
 134     uint8_t tag_9F10_len
; //Issuer Application Data 
 135     uint8_t tag_9F10
[32];  
 136     uint8_t tag_9F11
[1]; //Issuer Code Table Index 
 137     uint8_t tag_9F12_len
;  
 138     uint8_t tag_9F12
[255]; //Application Preferred Name  
 139     uint8_t tag_9F13
[2]; //Last Online Application Transaction Counter (ATC) Registerjk  
 140     uint8_t tag_9F14
[1]; //Lower Consecutive Offline Limit 
 141     uint8_t tag_9F15
[2]; //Merchant Category Code  
 142     uint8_t tag_9F16
[15]; //Merchant Identifier 
 143     uint8_t tag_9F17
[1]; //Personal Identification Number (PIN) Try Counter 
 144     uint8_t tag_9F18
[4]; //Issuer Script Identifier 
 146     uint8_t tag_9F1A
[2]; //Terminal Country Code 
 147     uint8_t tag_9F1B
[4]; //Terminal Floor Limit 
 148     uint8_t tag_9F1C
[8]; //Terminal Identification 
 149     uint8_t tag_9F1D_len
;  
 150     uint8_t tag_9F1D
[8]; //Terminal Risk Management Data  
 151     uint8_t tag_9F1E
[8]; //Interface Device (IFD) Serial Number  
 152     uint8_t tag_9F1F_len
; 
 153     uint8_t tag_9F1F
[255]; //Track 1 Discretionary Data  
 154     uint8_t tag_9F20_len
; 
 155     uint8_t tag_9F20
[255]; //Track 2 DD  
 156     uint8_t tag_9F21
[3]; //Transaction Time 
 157     uint8_t tag_9F22
[1]; //Certification Authority Public Key Index 
 158     uint8_t tag_9F23
[1]; //Upper Consecutive Offline Limit 
 161     uint8_t tag_9F26
[8]; //Application Cryptogram 
 162     uint8_t tag_9F27
[1]; //Cryptogram Information Data 
 168     uint8_t tag_9F2D_len
;  
 169     uint8_t tag_9F2D
[255]; //Integrated Circuit Card (ICC) PIN Encipherment Public Key Certificate 
 170     uint8_t tag_9F2E
[3]; //Integrated Circuit Card (ICC) PIN Encipherment Public Key Exponent 
 171     uint8_t tag_9F2F_len
;  
 172     uint8_t tag_9F2F
[255]; //Integrated Circuit Card (ICC) PIN Encipherment Public Key Remainder  
 175     uint8_t tag_9F32_len
;  
 176     uint8_t tag_9F32
[3]; //Issuer Public Key Exponent 
 177     uint8_t tag_9F33
[3]; //Terminal Capabilities 
 178     uint8_t tag_9F34
[3]; //Cardholder Verification Method (CVM) Results  
 179     uint8_t tag_9F35
[1]; //Terminal Type 
 180     uint8_t tag_9F36
[2]; //Application Transaction Counter (ATC) 
 181     uint8_t tag_9F37
[4]; //Unpredictable Number 
 182     uint8_t tag_9F38_len
;  
 183     uint8_t tag_9F38
[255]; //PDOL  
 184     uint8_t tag_9F39
[1]; //Point-of-Service (POS) Entry Mode 
 185     uint8_t tag_9F40
[5]; //Additional Terminal Capabilities 
 186     uint8_t tag_9F41
[4]; //Transaction Sequence Counter 
 187     uint8_t tag_9F42
[2]; //Application Currency Code 
 188     uint8_t tag_9F43
[4]; //Application Reference Currency Exponent 
 189     uint8_t tag_9F44
[1]; //Application Currency Exponent 
 190     uint8_t tag_9F45
[2]; //Data Authentication Code 
 191     uint8_t tag_9F46_len
;  
 192     uint8_t tag_9F46
[255]; //ICC Public Key Certificate 
 193     uint8_t tag_9F47_len
;  
 194     uint8_t tag_9F47
[3]; //ICC Public Key Exponent 
 195     uint8_t tag_9F48_len
;  
 196     uint8_t tag_9F48
[255]; //ICC Public Key Remainder 
 197     uint8_t tag_9F49_len
;  
 198     uint8_t tag_9F49
[252];  
 199     uint8_t tag_9F4A
[1]; //SDA Tag list 
 200     uint8_t tag_9F4B_len
;  
 201     uint8_t tag_9F4B
[255]; //Signed Dynamic Application Data  
 202     uint8_t tag_9F4C
[8]; //ICC Dynamic Number 
 203     uint8_t tag_9F4D
[2]; //Log Entry 
 204     uint8_t tag_9F4E
[255]; //Merchant Name and Location 
 205     //9F50-9F7F are payment system specific  
 206     uint8_t tag_9F60
[2]; //CVC3 track1 
 207     uint8_t tag_9F61
[2]; //CVC3 track2 
 208     uint8_t tag_9F62
[6]; //Track 1 Bit Map for CVC3 (PCVC3TRACK1) 
 209     uint8_t tag_9F63
[6]; //Track 1 Bit Map for UN and ATC (PUNATCTRACK1) 
 210     uint8_t tag_9F64
[1]; //Track 1 Number of ATC Digits (NATCTRACK1) 
 211     uint8_t tag_9F65
[2]; //rack 2 Bit Map for CVC3 (PCVC3TRACK2) 
 212     uint8_t tag_9F66
[2];   //Track 2 Bit Map for UN and ATC (PUNATCTRACK2), or VISA card type 
 213     uint8_t tag_9F67
[1];   //Track 2 Number of ATC Digits (NATCTRACK2) 
 214     uint8_t tag_9F68_len
;  
 215     uint8_t tag_9F68
[252]; //Mag Stripe CVM List 
 216     uint8_t tag_9F69_len
;  
 217     uint8_t tag_9F69
[255]; //Unpredictable Number Data Object List (UDOL) 
 218     uint8_t tag_9F6A
[8]; //Unpredictable Number (Numeric) 
 219     uint8_t tag_9F6B_len
;  
 220     uint8_t tag_9F6B
[19]; //track 2 data 
 221     uint8_t tag_9F6C
[2]; //Mag Stripe Application Version  Number(Card) 
 224     uint8_t tag_61
[255]; //Application template 
 226     uint8_t tag_6F
[255]; //6F template 
 228     uint8_t tag_A5
[255]; //A5 template  
 229     uint8_t tag_DFNAME_len
;  
 230     uint8_t tag_DFNAME
[255]; //A5 template  
 232     uint8_t tag_70
[255]; //70 template 
 234     uint8_t tag_77
[255]; //77 template 
 236     uint8_t tag_80
[255]; //80 template  
 237     uint8_t tag_91_len
; //Issuer Authentication Data  
 239     uint8_t tag_BF0C_len
;  
 240     uint8_t tag_BF0C
[222]; //File Control Information (FCI) Issuer Discretionary Data  
 241     uint8_t tag_DFName
[16]; 
 242     uint8_t tag_DFName_len
;