libicdlc
library for IC driving license card
|
00001 00051 #if defined(_MSC_VER) && 1000 < _MSC_VER 00052 #pragma once 00053 #endif 00054 00055 #ifndef ICDL_0B6C1D32_C9E5_4823_A60F_BE457E03FE95_INCLUDE_GUARD 00056 #define ICDL_0B6C1D32_C9E5_4823_A60F_BE457E03FE95_INCLUDE_GUARD 00057 00058 #if defined(ICDL_PHOTO_DECODE_ENABLE) || defined(ICDL_EUDC_DECODE_ENABLE) 00059 #include <windows.h> 00060 #endif 00061 00062 #if defined(_MSC_VER) 00063 00064 typedef unsigned char uint8_t; 00065 typedef signed char int8_t; 00066 typedef unsigned short uint16_t; 00067 typedef signed short int16_t; 00068 typedef unsigned int uint32_t; 00069 typedef signed int int32_t; 00070 typedef unsigned __int64 uint64_t; 00071 typedef signed __int64 int64_t; 00072 00073 #else 00074 00075 #include <inttypes.h> 00076 00077 #endif 00078 00079 00080 00081 static const uint16_t SW_NO_ERROR = 0x9000; 00082 00083 static const uint16_t SW_SELECTED_FILE_INVALIDATED = 0x6283; 00084 00085 static const uint16_t SW_VERIFICATION_FAILED = 0x6300; 00086 static const uint16_t SW_VERIFICATION_FAILED_RETRY_COUNTER_0 = 0x63C0; 00087 static const uint16_t SW_VERIFICATION_FAILED_RETRY_COUNTER_1 = 0x63C1; 00088 static const uint16_t SW_VERIFICATION_FAILED_RETRY_COUNTER_2 = 0x63C2; 00089 static const uint16_t SW_VERIFICATION_FAILED_RETRY_COUNTER_3 = 0x63C3; 00090 00091 static const uint16_t SW_NON_VOLATILE_MEMORY_UNCHANGED = 0x6400; 00092 00093 static const uint16_t SW_MEMORY_FAILURE = 0x6581; 00094 static const uint16_t SW_WRONG_LENGTH = 0x6700; 00095 00096 static const uint16_t SW_LOGICAL_CHANNEL_NOT_SUPPORTED = 0x6881; 00097 static const uint16_t SW_SECURE_MESSAGING_NOT_SUPPORTED = 0x6882; 00098 00099 static const uint16_t SW_COMMAND_INCOMPATIBLE_WITH_FILE_STRUCTURE = 0x6981; 00100 static const uint16_t SW_SECURITY_STATUS_NOT_SATISFIED = 0x6982; 00101 static const uint16_t SW_REFERENCED_DATA_INVALIDATED = 0x6984; 00102 static const uint16_t SW_NO_CURRENT_EF = 0x6986; 00103 00104 static const uint16_t SW_FUNCTION_NOT_SUPPORTED = 0x6A81; 00105 static const uint16_t SW_FILE_NOT_FOUND = 0x6A82; 00106 static const uint16_t SW_INCORRECT_PARAMETERS_P1_P2 = 0x6A86; 00107 static const uint16_t SW_Lc_INCONSISTENT_WITH_P1_P2 = 0x6A87; 00108 static const uint16_t SW_REFERENCED_DATA_NOT_FOUND = 0x6A88; 00109 static const uint16_t SW_OFFSET_OUTSIDE_THE_EF = 0x6B00; 00110 static const uint16_t SW_INSTRUCTION_CODE_NOT_SUPPORTED_OR_INVALID = 0x6D00; 00111 static const uint16_t SW_CLASS_NOT_SUPPORTED = 0x6E00; 00112 00113 00114 static const uint16_t DPIN = (uint16_t)‾0; 00115 00116 00117 static const uint16_t EF_ID_MF_EF01 = 0x2F01; 00118 static const uint16_t EF_ID_MF_EF02 = 0x000A; 00119 static const uint16_t EF_ID_MF_IEF01 = 0x0001; 00120 static const uint16_t EF_ID_MF_IEF02 = 0x0002; 00121 static const uint16_t EF_ID_DF1_EF01 = 0x0001; 00122 static const uint16_t EF_ID_DF1_EF02 = 0x0002; 00123 static const uint16_t EF_ID_DF1_EF03 = 0x0003; 00124 static const uint16_t EF_ID_DF1_EF04 = 0x0004; 00125 static const uint16_t EF_ID_DF1_EF05 = 0x0005; 00126 static const uint16_t EF_ID_DF1_EF06 = 0x0006; 00127 static const uint16_t EF_ID_DF1_EF07 = 0x0007; 00128 static const uint16_t EF_ID_DF2_EF01 = 0x0001; 00129 static const uint16_t EF_ID_DF3_EF01 = 0x0001; 00130 00131 00132 static const uint8_t AID_DF1[16] = { 0xA0, 0x00, 0x00, 0x02, 0x31, 00133 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; 00134 static const uint8_t AID_DF2[16] = { 0xA0, 0x00, 0x00, 0x02, 0x31, 00135 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; 00136 static const uint8_t AID_DF3[16] = { 0xA0, 0x00, 0x00, 0x02, 0x48, 00137 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; 00138 00139 00140 static const uint8_t LICENSE_TYPE_YET_ACQUIRED[6] = { '0','0','0','0','0','0'}; 00141 static const uint8_t LICENSE_TYPE_UNKNOWN_DATE_ACQUIRED[7] = {'*','*','*','*','*','*','*'}; 00142 00143 00144 static const uint16_t TAG_CARD_PUBLISHER = 0x45; 00145 static const uint16_t TAG_PREVIOUS_ISSUE = 0x46; 00146 static const size_t MAXLEN_CARD_PUBLISHER = 11; 00147 static const size_t MAXLEN_PREVIOUS_ISSUE = 2; 00148 00149 00150 static const uint16_t TAG_PIN_CONFIG = 0x05; 00151 static const size_t MAXLEN_PIN_CONFIG = 1; 00152 00153 static const uint8_t PIN_ENABLE = 0x01; 00154 static const uint8_t PIN_DISABLE = 0x00; 00155 static const uint8_t PIN_ENABLE_MASK = 0x01; 00156 00157 00158 static const uint16_t TAG_JISX_REVISION = 0x11; 00159 static const uint16_t TAG_NAME = 0x12; 00160 static const uint16_t TAG_PHONETIC_NAME = 0x13; 00161 static const uint16_t TAG_ALIAS_NAME = 0x14; 00162 static const uint16_t TAG_UNIFIED_NAME = 0x15; 00163 static const uint16_t TAG_BIRTHDAY = 0x16; 00164 static const uint16_t TAG_DOMICILE = 0x17; 00165 static const uint16_t TAG_ISSUE_DATE = 0x18; 00166 static const uint16_t TAG_REFERENCE_NUMBER = 0x19; 00167 static const uint16_t TAG_LICENSE_COLOR = 0x1A; 00168 static const uint16_t TAG_EXPIRATION_DATE = 0x1B; 00169 static const uint16_t TAG_LICENSE_REQUIREMENT1 = 0x1C; 00170 static const uint16_t TAG_LICENSE_REQUIREMENT2 = 0x1D; 00171 static const uint16_t TAG_LICENSE_REQUIREMENT3 = 0x1E; 00172 static const uint16_t TAG_LICENSE_REQUIREMENT4 = 0x1F; 00173 static const uint16_t TAG_POLICE_AUTHORITY_NAME = 0x20; 00174 static const uint16_t TAG_LICENSE_NUMBER = 0x21; 00175 static const uint16_t TAG_LICENSE_DATE_MOTORCYCLE_OR_SMALL_OR_MOPED = 0x22; 00176 static const uint16_t TAG_LICENSE_DATE_MISC = 0x23; 00177 static const uint16_t TAG_LICENSE_DATE_CLASS_2 = 0x24; 00178 static const uint16_t TAG_LICENSE_DATE_LARGE_SIZED_MOTOR_VEHICLE = 0x25; 00179 static const uint16_t TAG_LICENSE_DATE_MOTOR_VEHICLE = 0x26; 00180 static const uint16_t TAG_LICENSE_DATE_LARGE_SIZED_SPECIAL_MOTOR_VEHICLE = 0x27; 00181 static const uint16_t TAG_LICENSE_DATE_LARGE_SIZED_MOTORCYCLE = 0x28; 00182 static const uint16_t TAG_LICENSE_DATE_MOTORCYCLE = 0x29; 00183 static const uint16_t TAG_LICENSE_DATE_SMALL_SIZED_SPECIAL_MOTOR_VEHICLE = 0x2A; 00184 static const uint16_t TAG_LICENSE_DATE_MOPED = 0x2B; 00185 static const uint16_t TAG_LICENSE_DATE_TOWING = 0x2C; 00186 static const uint16_t TAG_LICENSE_DATE_CLASS_2_LARGE_SIZED_MOTOR_VEHICLE = 0x2D; 00187 static const uint16_t TAG_LICENSE_DATE_CLASS_2_MOTOR_VEHICLE = 0x2E; 00188 static const uint16_t TAG_LICENSE_DATE_CLASS_2_LARGE_SIZED_SPECIAL_MOTOR_VEHICLE = 0x2F; 00189 static const uint16_t TAG_LICENSE_DATE_CLASS_2_TOWING = 0x30; 00190 static const uint16_t TAG_LICENSE_DATE_MIDSIZE_MOTOR_VEHICLE = 0x31; 00191 static const uint16_t TAG_LICENSE_DATE_CLASS_2_MIDSIZE_MOTOR_VEHICLE = 0x32; 00192 00193 static const size_t MAXLEN_JISX_REVISION = 1; 00194 static const size_t MAXLEN_NAME = 72; 00195 static const size_t MAXLEN_PHONETIC_NAME = 32; 00196 static const size_t MAXLEN_ALIAS_NAME = 32; 00197 static const size_t MAXLEN_UNIFIED_NAME = 16; 00198 static const size_t MAXLEN_BIRTHDAY = 7; 00199 static const size_t MAXLEN_DOMICILE = 80; 00200 static const size_t MAXLEN_ISSUE_DATE = 7; 00201 static const size_t MAXLEN_REFERENCE_NUMBER = 5; 00202 static const size_t MAXLEN_LICENSE_COLOR = 6; 00203 static const size_t MAXLEN_EXPIRATION_DATE = 7; 00204 static const size_t MAXLEN_LICENSE_REQUIREMENT1 = 80; 00205 static const size_t MAXLEN_LICENSE_REQUIREMENT2 = 80; 00206 static const size_t MAXLEN_LICENSE_REQUIREMENT3 = 80; 00207 static const size_t MAXLEN_LICENSE_REQUIREMENT4 = 80; 00208 static const size_t MAXLEN_POLICE_AUTHORITY_NAME = 24; 00209 static const size_t MAXLEN_LICENSE_NUMBER = 12; 00210 static const size_t MAXLEN_LICENSE_DATE_MOTORCYCLE_OR_SMALL_OR_MOPED = 7; 00211 static const size_t MAXLEN_LICENSE_DATE_MISC = 7; 00212 static const size_t MAXLEN_LICENSE_DATE_CLASS_2 = 7; 00213 static const size_t MAXLEN_LICENSE_DATE_LARGE_SIZED_MOTOR_VEHICLE = 7; 00214 static const size_t MAXLEN_LICENSE_DATE_MOTOR_VEHICLE = 7; 00215 static const size_t MAXLEN_LICENSE_DATE_LARGE_SIZED_SPECIAL_MOTOR_VEHICLE = 7; 00216 static const size_t MAXLEN_LICENSE_DATE_LARGE_SIZED_MOTORCYCLE = 7; 00217 static const size_t MAXLEN_LICENSE_DATE_MOTORCYCLE = 7; 00218 static const size_t MAXLEN_LICENSE_DATE_SMALL_SIZED_SPECIAL_MOTOR_VEHICLE = 7; 00219 static const size_t MAXLEN_LICENSE_DATE_MOPED = 7; 00220 static const size_t MAXLEN_LICENSE_DATE_TOWING = 7; 00221 static const size_t MAXLEN_LICENSE_DATE_CLASS_2_LARGE_SIZED_MOTOR_VEHICLE = 7; 00222 static const size_t MAXLEN_LICENSE_DATE_CLASS_2_MOTOR_VEHICLE = 7; 00223 static const size_t MAXLEN_LICENSE_DATE_CLASS_2_LARGE_SIZED_SPECIAL_MOTOR_VEHICLE = 7; 00224 static const size_t MAXLEN_LICENSE_DATE_CLASS_2_TOWING = 7; 00225 static const size_t MAXLEN_LICENSE_DATE_MIDSIZE_MOTOR_VEHICLE = 7; 00226 static const size_t MAXLEN_LICENSE_DATE_CLASS_2_MIDSIZE_MOTOR_VEHICLE = 7; 00227 00228 00229 static const uint16_t TAG_REGISTERED_DOMICILE = 0x41; 00230 00231 static const size_t MAXLEN_REGISTERED_DOMICILE = 80; 00232 00233 00234 static const uint16_t TAG_EUDC1 = 0x48; 00235 static const uint16_t TAG_EUDC2 = 0x49; 00236 00237 00238 static const uint16_t TAG_APPEND_STATUS = 0x50; 00239 static const uint16_t TAG_APPEND_DOMICILE_POLICE_AUTHORITY_NAME1 = 0x51; 00240 static const uint16_t TAG_APPEND_DOMICILE_POLICE_AUTHORITY_NAME2 = 0x52; 00241 static const uint16_t TAG_APPEND_DOMICILE_POLICE_AUTHORITY_NAME3 = 0x53; 00242 static const uint16_t TAG_APPEND_DOMICILE_POLICE_AUTHORITY_NAME4 = 0x54; 00243 static const uint16_t TAG_APPEND_DOMICILE_POLICE_AUTHORITY_NAME5 = 0x55; 00244 static const uint16_t TAG_APPEND_DOMICILE_POLICE_AUTHORITY_NAME6 = 0x56; 00245 static const uint16_t TAG_APPEND_DOMICILE_POLICE_AUTHORITY_NAME7 = 0x57; 00246 static const uint16_t TAG_APPEND_DOMICILE_POLICE_AUTHORITY_NAME8 = 0x58; 00247 static const uint16_t TAG_APPEND_DOMICILE_POLICE_AUTHORITY_NAME9 = 0x59; 00248 static const uint16_t TAG_APPEND_DOMICILE_POLICE_AUTHORITY_NAME10 = 0x5A; 00249 static const uint16_t TAG_APPEND_DOMICILE_POLICE_AUTHORITY_NAME11 = 0x5B; 00250 static const uint16_t TAG_APPEND_DOMICILE_POLICE_AUTHORITY_NAME12 = 0x5C; 00251 static const uint16_t TAG_APPEND_DOMICILE_POLICE_AUTHORITY_NAME13 = 0x5D; 00252 static const uint16_t TAG_APPEND_DOMICILE_POLICE_AUTHORITY_NAME14 = 0x5E; 00253 static const uint16_t TAG_APPEND_DOMICILE_POLICE_AUTHORITY_NAME15 = 0x5F; 00254 static const uint16_t TAG_APPEND_NAME_AND_POLICE_AUTHORITY_NAME1 = 0x60; 00255 static const uint16_t TAG_APPEND_NAME_AND_POLICE_AUTHORITY_NAME2 = 0x61; 00256 static const uint16_t TAG_APPEND_NAME_AND_POLICE_AUTHORITY_NAME3 = 0x62; 00257 static const uint16_t TAG_APPEND_NAME_AND_POLICE_AUTHORITY_NAME4 = 0x63; 00258 static const uint16_t TAG_APPEND_NAME_AND_POLICE_AUTHORITY_NAME5 = 0x64; 00259 static const uint16_t TAG_APPEND_NAME_AND_POLICE_AUTHORITY_NAME6 = 0x65; 00260 static const uint16_t TAG_APPEND_NAME_AND_POLICE_AUTHORITY_NAME7 = 0x66; 00261 static const uint16_t TAG_APPEND_NAME_AND_POLICE_AUTHORITY_NAME8 = 0x67; 00262 static const uint16_t TAG_APPEND_PHONETIC_NAME_AND_POLICE_AUTHORITY_NAME1 = 0x68; 00263 static const uint16_t TAG_APPEND_PHONETIC_NAME_AND_POLICE_AUTHORITY_NAME2 = 0x69; 00264 static const uint16_t TAG_APPEND_PHONETIC_NAME_AND_POLICE_AUTHORITY_NAME3 = 0x6A; 00265 static const uint16_t TAG_APPEND_PHONETIC_NAME_AND_POLICE_AUTHORITY_NAME4 = 0x6B; 00266 static const uint16_t TAG_APPEND_PHONETIC_NAME_AND_POLICE_AUTHORITY_NAME5 = 0x6C; 00267 static const uint16_t TAG_APPEND_PHONETIC_NAME_AND_POLICE_AUTHORITY_NAME6 = 0x6D; 00268 static const uint16_t TAG_APPEND_PHONETIC_NAME_AND_POLICE_AUTHORITY_NAME7 = 0x6E; 00269 static const uint16_t TAG_APPEND_PHONETIC_NAME_AND_POLICE_AUTHORITY_NAME8 = 0x6F; 00270 static const uint16_t TAG_APPEND_DOMICILE_AND_POLICE_AUTHORITY_NAME1 = 0x70; 00271 static const uint16_t TAG_APPEND_DOMICILE_AND_POLICE_AUTHORITY_NAME2 = 0x71; 00272 static const uint16_t TAG_APPEND_DOMICILE_AND_POLICE_AUTHORITY_NAME3 = 0x72; 00273 static const uint16_t TAG_APPEND_DOMICILE_AND_POLICE_AUTHORITY_NAME4 = 0x73; 00274 static const uint16_t TAG_APPEND_DOMICILE_AND_POLICE_AUTHORITY_NAME5 = 0x74; 00275 static const uint16_t TAG_APPEND_DOMICILE_AND_POLICE_AUTHORITY_NAME6 = 0x75; 00276 static const uint16_t TAG_APPEND_DOMICILE_AND_POLICE_AUTHORITY_NAME7 = 0x76; 00277 static const uint16_t TAG_APPEND_DOMICILE_AND_POLICE_AUTHORITY_NAME8 = 0x77; 00278 static const uint16_t TAG_APPEND_LICENSE_REQUIREMENT_AND_POLICE_AUTHORITY_NAME1 = 0x78; 00279 static const uint16_t TAG_APPEND_LICENSE_REQUIREMENT_AND_POLICE_AUTHORITY_NAME2 = 0x79; 00280 static const uint16_t TAG_APPEND_LICENSE_REQUIREMENT_AND_POLICE_AUTHORITY_NAME3 = 0x7A; 00281 static const uint16_t TAG_APPEND_LICENSE_REQUIREMENT_AND_POLICE_AUTHORITY_NAME4 = 0x7B; 00282 static const uint16_t TAG_APPEND_LICENSE_REQUIREMENT_AND_POLICE_AUTHORITY_NAME5 = 0x7C; 00283 static const uint16_t TAG_APPEND_LICENSE_REQUIREMENT_AND_POLICE_AUTHORITY_NAME6 = 0x7D; 00284 static const uint16_t TAG_APPEND_LICENSE_REQUIREMENT_AND_POLICE_AUTHORITY_NAME7 = 0x7E; 00285 static const uint16_t TAG_APPEND_LICENSE_REQUIREMENT_AND_POLICE_AUTHORITY_NAME8 = 0x7F; 00286 static const uint16_t TAG_APPEND_CONDITION_RELEASE_AND_POLICE_AUTHORITY_NAME1 = 0x80; 00287 static const uint16_t TAG_APPEND_CONDITION_RELEASE_AND_POLICE_AUTHORITY_NAME2 = 0x81; 00288 static const uint16_t TAG_APPEND_CONDITION_RELEASE_AND_POLICE_AUTHORITY_NAME3 = 0x82; 00289 static const uint16_t TAG_APPEND_CONDITION_RELEASE_AND_POLICE_AUTHORITY_NAME4 = 0x83; 00290 static const uint16_t TAG_APPEND_CONDITION_RELEASE_AND_POLICE_AUTHORITY_NAME5 = 0x84; 00291 static const uint16_t TAG_APPEND_CONDITION_RELEASE_AND_POLICE_AUTHORITY_NAME6 = 0x85; 00292 static const uint16_t TAG_APPEND_CONDITION_RELEASE_AND_POLICE_AUTHORITY_NAME7 = 0x86; 00293 static const uint16_t TAG_APPEND_CONDITION_RELEASE_AND_POLICE_AUTHORITY_NAME8 = 0x87; 00294 static const uint16_t TAG_APPEND_REMARK_AND_POLICE_AUTHORITY_NAME1 = 0x88; 00295 static const uint16_t TAG_APPEND_REMARK_AND_POLICE_AUTHORITY_NAME2 = 0x89; 00296 static const uint16_t TAG_APPEND_REMARK_AND_POLICE_AUTHORITY_NAME3 = 0x8A; 00297 static const uint16_t TAG_APPEND_REMARK_AND_POLICE_AUTHORITY_NAME4 = 0x8B; 00298 static const uint16_t TAG_APPEND_REMARK_AND_POLICE_AUTHORITY_NAME5 = 0x8C; 00299 static const uint16_t TAG_APPEND_REMARK_AND_POLICE_AUTHORITY_NAME6 = 0x8D; 00300 static const uint16_t TAG_APPEND_REMARK_AND_POLICE_AUTHORITY_NAME7 = 0x8E; 00301 static const uint16_t TAG_APPEND_REMARK_AND_POLICE_AUTHORITY_NAME8 = 0x8F; 00302 static const uint16_t TAG_APPEND_SPARE_AND_POLICE_AUTHORITY_NAME1 = 0x90; 00303 static const uint16_t TAG_APPEND_SPARE_AND_POLICE_AUTHORITY_NAME2 = 0x91; 00304 static const uint16_t TAG_APPEND_SPARE_AND_POLICE_AUTHORITY_NAME3 = 0x92; 00305 static const uint16_t TAG_APPEND_SPARE_AND_POLICE_AUTHORITY_NAME4 = 0x93; 00306 static const uint16_t TAG_APPEND_SPARE_AND_POLICE_AUTHORITY_NAME5 = 0x94; 00307 static const uint16_t TAG_APPEND_SPARE_AND_POLICE_AUTHORITY_NAME6 = 0x95; 00308 static const uint16_t TAG_APPEND_SPARE_AND_POLICE_AUTHORITY_NAME7 = 0x96; 00309 static const uint16_t TAG_APPEND_SPARE_AND_POLICE_AUTHORITY_NAME8 = 0x97; 00310 00311 static const size_t MAXLEN_APPEND_STATUS = 1; 00312 static const size_t MAXLEN_APPEND_DOMICILE_POLICE_AUTHORITY_NAME1 = 25; 00313 static const size_t MAXLEN_APPEND_DOMICILE_POLICE_AUTHORITY_NAME2 = 25; 00314 static const size_t MAXLEN_APPEND_DOMICILE_POLICE_AUTHORITY_NAME3 = 25; 00315 static const size_t MAXLEN_APPEND_DOMICILE_POLICE_AUTHORITY_NAME4 = 25; 00316 static const size_t MAXLEN_APPEND_DOMICILE_POLICE_AUTHORITY_NAME5 = 25; 00317 static const size_t MAXLEN_APPEND_DOMICILE_POLICE_AUTHORITY_NAME6 = 25; 00318 static const size_t MAXLEN_APPEND_DOMICILE_POLICE_AUTHORITY_NAME7 = 25; 00319 static const size_t MAXLEN_APPEND_DOMICILE_POLICE_AUTHORITY_NAME8 = 25; 00320 static const size_t MAXLEN_APPEND_DOMICILE_POLICE_AUTHORITY_NAME9 = 25; 00321 static const size_t MAXLEN_APPEND_DOMICILE_POLICE_AUTHORITY_NAME10 = 25; 00322 static const size_t MAXLEN_APPEND_DOMICILE_POLICE_AUTHORITY_NAME11 = 25; 00323 static const size_t MAXLEN_APPEND_DOMICILE_POLICE_AUTHORITY_NAME12 = 25; 00324 static const size_t MAXLEN_APPEND_DOMICILE_POLICE_AUTHORITY_NAME13 = 25; 00325 static const size_t MAXLEN_APPEND_DOMICILE_POLICE_AUTHORITY_NAME14 = 25; 00326 static const size_t MAXLEN_APPEND_DOMICILE_POLICE_AUTHORITY_NAME15 = 25; 00327 static const size_t MAXLEN_APPEND_NAME_AND_POLICE_AUTHORITY_NAME1 = 97; 00328 static const size_t MAXLEN_APPEND_NAME_AND_POLICE_AUTHORITY_NAME2 = 97; 00329 static const size_t MAXLEN_APPEND_NAME_AND_POLICE_AUTHORITY_NAME3 = 97; 00330 static const size_t MAXLEN_APPEND_NAME_AND_POLICE_AUTHORITY_NAME4 = 97; 00331 static const size_t MAXLEN_APPEND_NAME_AND_POLICE_AUTHORITY_NAME5 = 97; 00332 static const size_t MAXLEN_APPEND_NAME_AND_POLICE_AUTHORITY_NAME6 = 97; 00333 static const size_t MAXLEN_APPEND_NAME_AND_POLICE_AUTHORITY_NAME7 = 97; 00334 static const size_t MAXLEN_APPEND_NAME_AND_POLICE_AUTHORITY_NAME8 = 97; 00335 static const size_t MAXLEN_APPEND_PHONETIC_NAME_AND_POLICE_AUTHORITY_NAME1 = 57; 00336 static const size_t MAXLEN_APPEND_PHONETIC_NAME_AND_POLICE_AUTHORITY_NAME2 = 57; 00337 static const size_t MAXLEN_APPEND_PHONETIC_NAME_AND_POLICE_AUTHORITY_NAME3 = 57; 00338 static const size_t MAXLEN_APPEND_PHONETIC_NAME_AND_POLICE_AUTHORITY_NAME4 = 57; 00339 static const size_t MAXLEN_APPEND_PHONETIC_NAME_AND_POLICE_AUTHORITY_NAME5 = 57; 00340 static const size_t MAXLEN_APPEND_PHONETIC_NAME_AND_POLICE_AUTHORITY_NAME6 = 57; 00341 static const size_t MAXLEN_APPEND_PHONETIC_NAME_AND_POLICE_AUTHORITY_NAME7 = 57; 00342 static const size_t MAXLEN_APPEND_PHONETIC_NAME_AND_POLICE_AUTHORITY_NAME8 = 57; 00343 static const size_t MAXLEN_APPEND_DOMICILE_AND_POLICE_AUTHORITY_NAME1 = 105; 00344 static const size_t MAXLEN_APPEND_DOMICILE_AND_POLICE_AUTHORITY_NAME2 = 105; 00345 static const size_t MAXLEN_APPEND_DOMICILE_AND_POLICE_AUTHORITY_NAME3 = 105; 00346 static const size_t MAXLEN_APPEND_DOMICILE_AND_POLICE_AUTHORITY_NAME4 = 105; 00347 static const size_t MAXLEN_APPEND_DOMICILE_AND_POLICE_AUTHORITY_NAME5 = 105; 00348 static const size_t MAXLEN_APPEND_DOMICILE_AND_POLICE_AUTHORITY_NAME6 = 105; 00349 static const size_t MAXLEN_APPEND_DOMICILE_AND_POLICE_AUTHORITY_NAME7 = 105; 00350 static const size_t MAXLEN_APPEND_DOMICILE_AND_POLICE_AUTHORITY_NAME8 = 105; 00351 static const size_t MAXLEN_APPEND_LICENSE_REQUIREMENT_AND_POLICE_AUTHORITY_NAME1 = 105; 00352 static const size_t MAXLEN_APPEND_LICENSE_REQUIREMENT_AND_POLICE_AUTHORITY_NAME2 = 105; 00353 static const size_t MAXLEN_APPEND_LICENSE_REQUIREMENT_AND_POLICE_AUTHORITY_NAME3 = 105; 00354 static const size_t MAXLEN_APPEND_LICENSE_REQUIREMENT_AND_POLICE_AUTHORITY_NAME4 = 105; 00355 static const size_t MAXLEN_APPEND_LICENSE_REQUIREMENT_AND_POLICE_AUTHORITY_NAME5 = 105; 00356 static const size_t MAXLEN_APPEND_LICENSE_REQUIREMENT_AND_POLICE_AUTHORITY_NAME6 = 105; 00357 static const size_t MAXLEN_APPEND_LICENSE_REQUIREMENT_AND_POLICE_AUTHORITY_NAME7 = 105; 00358 static const size_t MAXLEN_APPEND_LICENSE_REQUIREMENT_AND_POLICE_AUTHORITY_NAME8 = 105; 00359 static const size_t MAXLEN_APPEND_CONDITION_RELEASE_AND_POLICE_AUTHORITY_NAME1 = 105; 00360 static const size_t MAXLEN_APPEND_CONDITION_RELEASE_AND_POLICE_AUTHORITY_NAME2 = 105; 00361 static const size_t MAXLEN_APPEND_CONDITION_RELEASE_AND_POLICE_AUTHORITY_NAME3 = 105; 00362 static const size_t MAXLEN_APPEND_CONDITION_RELEASE_AND_POLICE_AUTHORITY_NAME4 = 105; 00363 static const size_t MAXLEN_APPEND_CONDITION_RELEASE_AND_POLICE_AUTHORITY_NAME5 = 105; 00364 static const size_t MAXLEN_APPEND_CONDITION_RELEASE_AND_POLICE_AUTHORITY_NAME6 = 105; 00365 static const size_t MAXLEN_APPEND_CONDITION_RELEASE_AND_POLICE_AUTHORITY_NAME7 = 105; 00366 static const size_t MAXLEN_APPEND_CONDITION_RELEASE_AND_POLICE_AUTHORITY_NAME8 = 105; 00367 static const size_t MAXLEN_APPEND_REMARK_AND_POLICE_AUTHORITY_NAME1 = 105; 00368 static const size_t MAXLEN_APPEND_REMARK_AND_POLICE_AUTHORITY_NAME2 = 105; 00369 static const size_t MAXLEN_APPEND_REMARK_AND_POLICE_AUTHORITY_NAME3 = 105; 00370 static const size_t MAXLEN_APPEND_REMARK_AND_POLICE_AUTHORITY_NAME4 = 105; 00371 static const size_t MAXLEN_APPEND_REMARK_AND_POLICE_AUTHORITY_NAME5 = 105; 00372 static const size_t MAXLEN_APPEND_REMARK_AND_POLICE_AUTHORITY_NAME6 = 105; 00373 static const size_t MAXLEN_APPEND_REMARK_AND_POLICE_AUTHORITY_NAME7 = 105; 00374 static const size_t MAXLEN_APPEND_REMARK_AND_POLICE_AUTHORITY_NAME8 = 105; 00375 static const size_t MAXLEN_APPEND_SPARE_AND_POLICE_AUTHORITY_NAME1 = 105; 00376 static const size_t MAXLEN_APPEND_SPARE_AND_POLICE_AUTHORITY_NAME2 = 105; 00377 static const size_t MAXLEN_APPEND_SPARE_AND_POLICE_AUTHORITY_NAME3 = 105; 00378 static const size_t MAXLEN_APPEND_SPARE_AND_POLICE_AUTHORITY_NAME4 = 105; 00379 static const size_t MAXLEN_APPEND_SPARE_AND_POLICE_AUTHORITY_NAME5 = 105; 00380 static const size_t MAXLEN_APPEND_SPARE_AND_POLICE_AUTHORITY_NAME6 = 105; 00381 static const size_t MAXLEN_APPEND_SPARE_AND_POLICE_AUTHORITY_NAME7 = 105; 00382 static const size_t MAXLEN_APPEND_SPARE_AND_POLICE_AUTHORITY_NAME8 = 105; 00383 00384 00385 static const uint16_t TAG_EUDC_APPEND_STATUS = 0xA0; 00386 static const uint16_t TAG_EUDC3 = 0xA1; 00387 static const uint16_t TAG_EUDC4 = 0xA2; 00388 static const uint16_t TAG_EUDC5 = 0xA3; 00389 static const uint16_t TAG_EUDC6 = 0xA4; 00390 static const uint16_t TAG_EUDC7 = 0xA5; 00391 00392 00393 static const uint16_t TAG_REGISTERED_DOMICILE_APPEND_STATUS = 0xAA; 00394 static const uint16_t TAG_APPEND_REGISTERED_DOMICILE_AND_POLICE_AUTHORITY_NAME1 = 0xAB; 00395 static const uint16_t TAG_APPEND_REGISTERED_DOMICILE_AND_POLICE_AUTHORITY_NAME2 = 0xAC; 00396 static const uint16_t TAG_APPEND_REGISTERED_DOMICILE_AND_POLICE_AUTHORITY_NAME3 = 0xAD; 00397 static const uint16_t TAG_APPEND_REGISTERED_DOMICILE_AND_POLICE_AUTHORITY_NAME4 = 0xAE; 00398 static const uint16_t TAG_APPEND_REGISTERED_DOMICILE_AND_POLICE_AUTHORITY_NAME5 = 0xAF; 00399 00400 static const size_t MAXLEN_REGISTERED_DOMICILE_APPEND_STATUS = 1; 00401 static const size_t MAXLEN_APPEND_REGISTERED_DOMICILE_AND_POLICE_AUTHORITY_NAME1 = 105; 00402 static const size_t MAXLEN_APPEND_REGISTERED_DOMICILE_AND_POLICE_AUTHORITY_NAME2 = 105; 00403 static const size_t MAXLEN_APPEND_REGISTERED_DOMICILE_AND_POLICE_AUTHORITY_NAME3 = 105; 00404 static const size_t MAXLEN_APPEND_REGISTERED_DOMICILE_AND_POLICE_AUTHORITY_NAME4 = 105; 00405 static const size_t MAXLEN_APPEND_REGISTERED_DOMICILE_AND_POLICE_AUTHORITY_NAME5 = 105; 00406 00407 00408 static const uint16_t TAG_CHECK_CODE = 0xB1; 00409 static const uint16_t TAG_SERIAL_NUMBER = 0xB2; 00410 static const uint16_t TAG_CHECK_CODE_RFU = 0xB3; 00411 static const uint16_t TAG_PUBLISHER_NAME = 0xB4; 00412 static const uint16_t TAG_PRINCIPAL_NAME = 0xB5; 00413 static const uint16_t TAG_PRINCIPAL_KEY_ID = 0xB6; 00414 00415 static const size_t MAXLEN_CHECK_CODE = 256; 00416 static const size_t MAXLEN_SERIAL_NUMBER = 16; 00417 static const size_t MAXLEN_CHECK_CODE_RFU = 48; 00418 static const size_t MAXLEN_PUBLISHER_NAME = 80; 00419 static const size_t MAXLEN_PRINCIPAL_NAME = 130; 00420 static const size_t MAXLEN_PRINCIPAL_KEY_ID = 32; 00421 00422 00423 static const uint16_t TAG_PHOTO = 0x5F40; 00424 00425 static const size_t MAXLEN_PHOTO = 2000; 00426 00427 00428 static const uint8_t APPEND_STATUS_MARKER = 0x11; 00429 00430 00431 static const uint8_t CIPHER_ID_TRIPLE_DES = 0x04; 00432 00433 00434 static const uint8_t CARD_MANUFACTURER_RFU = 0xFF; 00435 00436 00437 static const uint8_t ERA_ID_UNKNOWN = 0x30; 00438 static const uint8_t ERA_ID_MEIJI = 0x31; 00439 static const uint8_t ERA_ID_TAISHO = 0x32; 00440 static const uint8_t ERA_ID_SHOWA = 0x33; 00441 static const uint8_t ERA_ID_HEISEI = 0x34; 00442 00444 typedef struct { 00445 uint8_t era_id; 00446 int year; 00447 int month; 00448 int day; 00449 } ICDL_DATE_TYPE; 00450 00452 typedef struct { 00453 int size; 00454 size_t length; 00455 uint8_t*data; 00456 } ICDL_EUDC_TYPE; 00457 00458 #ifdef __cplusplus 00459 extern "C" { 00460 #endif 00461 00462 #if defined(ICDL_PHOTO_DECODE_ENABLE) 00463 00472 HBITMAP icdl_photo_to_bitmap(const unsigned char * data, size_t size); 00473 00474 #endif 00475 00476 #if defined(ICDL_EUDC_DECODE_ENABLE) 00477 00487 HBITMAP icdl_eudc_to_bitmap(const unsigned char * data, size_t size, int char_dots); 00488 00489 #endif 00490 00491 #ifdef __cplusplus 00492 } 00493 #endif 00494 00495 #endif