PCSC4Java  0.2
Library PCSC for Java language.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines
D:/Affaire/Perso/SmartCardToolBox/pcsc4java-framework-0.2/src/fr/redbilled/pcscforjava/PCSCDefines.java
Go to the documentation of this file.
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 }