PCSC4Java
0.2
Library PCSC for Java language.
|
00001 /* 00002 * To change this template, choose Tools | Templates 00003 * and open the template in the editor. 00004 */ 00005 00006 package fr.redbilled.pcscforjava; 00007 00012 public class PCSCDefines 00013 { 00014 public final static int SCARD_SCOPE_USER = 0x0000; 00015 public final static int SCARD_SCOPE_TERMINAL = 0x0001; 00016 public final static int SCARD_SCOPE_SYSTEM = 0x0002; 00017 public final static int SCARD_SCOPE_GLOBAL = 0x0003; 00018 00019 public final static int SCARD_SHARE_EXCLUSIVE = 0x0001; 00020 public final static int SCARD_SHARE_SHARED = 0x0002; 00021 public final static int SCARD_SHARE_DIRECT = 0x0003; 00022 00023 public final static int SCARD_LEAVE_CARD = 0x0000; 00024 public final static int SCARD_RESET_CARD = 0x0001; 00025 public final static int SCARD_UNPOWER_CARD = 0x0002; 00026 public final static int SCARD_EJECT_CARD = 0x0003; 00027 00028 public final static int SCARD_STATE_UNAWARE = 0x0000; 00029 public final static int SCARD_STATE_IGNORE = 0x0001; 00030 public final static int SCARD_STATE_CHANGED = 0x0002; 00031 public final static int SCARD_STATE_UNKNOWN = 0x0004; 00032 public final static int SCARD_STATE_UNAVAILABLE = 0x0008; 00033 public final static int SCARD_STATE_EMPTY = 0x0010; 00034 public final static int SCARD_STATE_PRESENT = 0x0020; 00035 public final static int SCARD_STATE_ATRMATCH = 0x0040; 00036 public final static int SCARD_STATE_EXCLUSIVE = 0x0080; 00037 public final static int SCARD_STATE_INUSE = 0x0100; 00038 public final static int SCARD_STATE_MUTE = 0x0200; 00039 public final static int SCARD_STATE_UNPOWERED = 0x0400; 00040 00041 // Vendor information definitions 00042 public final static int SCARD_CLASS_VENDOR_INFO = 1; 00043 // Communication definitions 00044 public final static int SCARD_CLASS_COMMUNICATIONS = 2; 00045 // Protocol definitions 00046 public final static int SCARD_CLASS_PROTOCOL = 3; 00047 // Power Management definitions 00048 public final static int SCARD_CLASS_POWER_MGMT = 4; 00049 // Security Assurance definitions 00050 public final static int SCARD_CLASS_SECURITY = 5; 00051 // Mechanical characteristic definitions 00052 public final static int SCARD_CLASS_MECHANICAL = 6; 00053 // Vendor specific definitions 00054 public final static int SCARD_CLASS_VENDOR_DEFINED = 7; 00055 // Interface Device Protocol options 00056 public final static int SCARD_CLASS_IFD_PROTOCOL = 8; 00057 // ICC State specific definitions 00058 public final static int SCARD_CLASS_ICC_STATE = 9; 00059 // performace counters 00060 public final static int SCARD_CLASS_PERF = 0x7ffe; 00061 // System-specific definitions 00062 public final static int SCARD_CLASS_SYSTEM = 0x7fff; 00063 00064 public final static int SCARD_ATTR_ATR_STRING = SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE, 0x0303); 00065 public final static int SCARD_ATTR_CHANNEL_ID = SCARD_ATTR_VALUE(SCARD_CLASS_COMMUNICATIONS, 0x0110); 00066 public final static int SCARD_ATTR_CHARACTERISTICS = SCARD_ATTR_VALUE(SCARD_CLASS_MECHANICAL, 0x0150); 00067 public final static int SCARD_ATTR_CURRENT_BWT = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0209); 00068 public final static int SCARD_ATTR_CURRENT_CLK = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0202); 00069 public final static int SCARD_ATTR_CURRENT_CWT = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x020a); 00070 public final static int SCARD_ATTR_CURRENT_D = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0204); 00071 public final static int SCARD_ATTR_CURRENT_EBC_ENCODING = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x020b); 00072 public final static int SCARD_ATTR_CURRENT_F = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0203); 00073 public final static int SCARD_ATTR_CURRENT_IFSC = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0207); 00074 public final static int SCARD_ATTR_CURRENT_IFSD = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0208); 00075 public final static int SCARD_ATTR_CURRENT_N = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0205); 00076 public final static int SCARD_ATTR_CURRENT_PROTOCOL_TYPE = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0201); 00077 public final static int SCARD_ATTR_CURRENT_W = SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0206); 00078 public final static int SCARD_ATTR_DEFAULT_CLK = SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0121); 00079 public final static int SCARD_ATTR_DEFAULT_DATA_RATE = SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0123); 00080 public final static int SCARD_ATTR_DEVICE_FRIENDLY_NAME = SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0003); 00081 public final static int SCARD_ATTR_DEVICE_IN_USE = SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0002); 00082 public final static int SCARD_ATTR_DEVICE_SYSTEM_NAME = SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0004); 00083 public final static int SCARD_ATTR_DEVICE_UNIT = SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0001); 00084 public final static int SCARD_ATTR_ICC_INTERFACE_STATUS = SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE, 0x0301); 00085 public final static int SCARD_ATTR_ICC_PRESENCE = SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE, 0x0300); 00086 public final static int SCARD_ATTR_ICC_TYPE_PER_ATR = SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE, 0x0304); 00087 public final static int SCARD_ATTR_MAX_CLK = SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0122); 00088 public final static int SCARD_ATTR_MAX_DATA_RATE = SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0124); 00089 public final static int SCARD_ATTR_MAX_IFSD = SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0125); 00090 public final static int SCARD_ATTR_POWER_MGMT_SUPPORT = SCARD_ATTR_VALUE(SCARD_CLASS_POWER_MGMT, 0x0131); 00091 public final static int SCARD_ATTR_PROTOCOL_TYPES = SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0120); 00092 public final static int SCARD_ATTR_VENDOR_IFD_SERIAL_NO = SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO, 0x0103); 00093 public final static int SCARD_ATTR_VENDOR_IFD_TYPE = SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO, 0x0101); 00094 public final static int SCARD_ATTR_VENDOR_IFD_VERSION = SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO, 0x0102); 00095 public final static int SCARD_ATTR_VENDOR_NAME = SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO, 0x0100); 00096 00097 public final static int SCARD_ATTR_SUPRESS_T1_IFS_REQUEST = SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0007); 00098 00099 private static int SCARD_ATTR_VALUE(int iClass, int iTag) 00100 { 00101 return (iClass << 16) | iTag; 00102 } 00103 00107 final static byte FEATURE_VERIFY_PIN_START = (byte) 0x01; 00108 00112 final static byte FEATURE_VERIFY_PIN_FINISH = (byte) 0x02; 00113 00117 final static byte FEATURE_MODIFY_PIN_START = (byte) 0x03; 00118 00122 final static byte FEATURE_MODIFY_PIN_FINISH = (byte) 0x04; 00123 00127 final static byte FEATURE_GET_KEY_PRESSED = (byte) 0x05; 00128 00132 final static byte FEATURE_VERIFY_PIN_DIRECT = (byte) 0x06; 00133 00137 final static byte FEATURE_MODIFY_PIN_DIRECT = (byte) 0x07; 00138 00142 final static byte FEATURE_MCT_READER_DIRECT = (byte) 0x08; 00143 00147 final static byte FEATURE_MCT_UNIVERSAL = (byte) 0x09; 00148 00152 final static byte FEATURE_IFD_PIN_PROPERTIES = (byte) 0x0A; 00153 00157 final static byte FEATURE_ABORT = (byte) 0x0B; 00158 00162 final static byte FEATURE_SET_SPE_MESSAGE = (byte) 0x0C; 00163 00167 final static byte FEATURE_VERIFY_PIN_DIRECT_APP_ID = (byte) 0x0D; 00168 00172 final static byte FEATURE_MODIFY_PIN_DIRECT_APP_ID = (byte) 0x0E; 00173 00177 final static byte FEATURE_WRITE_DISPLAY = (byte) 0x0F; 00178 00182 final static byte FEATURE_GET_KEY = (byte) 0x10; 00183 00187 final static byte FEATURE_IFD_DISPLAY_PROPERTIES = (byte) 0x11; 00188 00192 final static String[] FEATURES = {"VERIFY_PIN_START", "VERIFY_PIN_FINISH", 00193 "MODIFY_PIN_START", "MODIFY_PIN_FINISH", "GET_KEY_PRESSED", 00194 "VERIFY_PIN_DIRECT", "MODIFY_PIN_DIRECT", "MCT_READER_DIRECT", 00195 "MCT_UNIVERSAL", "IFD_PIN_PROPERTIES", "ABORT", "SET_SPE_MESSAGE", 00196 "VERIFY_PIN_DIRECT_APP_ID", "MODIFY_PIN_DIRECT_APP_ID", "WRITE_DISPLAY", 00197 "GET_KEY", "IFD_DISPLAY_PROPERTIES"}; 00198 00202 final static byte[] IFD_HANDLER = { 00203 (byte)0x06, (byte)0x04, (byte)0x01, (byte)0x02, (byte)0x03, (byte)0x06, 00204 (byte)0x07, (byte)0x04, (byte)0x01, (byte)0x02, (byte)0x03, (byte)0x07}; 00205 00209 final static byte bPINOperation_PINVerification = (byte)0x00; 00210 00214 final static byte bPINOperation_PINModification = (byte)0x01; 00215 00221 static int SCARD_CTL_CODE(int code) { 00222 if(System.getProperty("os.name").contains("Windows")) 00223 // cf. WinIOCTL.h 00224 return (0x31 << 16 | (code) << 2); 00225 else 00226 // cf. reader.h 00227 return 0x42000000 + (code); 00228 } 00229 }