1 /*
2  * cards.h: Registered card types for sc_card_t->type
3  *
4  * Copyright (C) 2005  Antti Tapaninen <aet@cc.hut.fi>
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  */
20 
21 #ifndef _OPENSC_CARDS_H
22 #define _OPENSC_CARDS_H
23 
24 #include "libopensc/types.h"
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
30 enum {
31 	/* Generic card types */
32 	SC_CARD_TYPE_UNKNOWN = -1,
33 	SC_CARD_TYPE_GENERIC_BASE = 0,
34 	SC_CARD_TYPE_GENERIC,
35 
36 	/* Cards without registered type, yet */
37 	SC_CARD_TYPE_TEST_BASE = 500,
38 
39 	/* cardos driver */
40 	SC_CARD_TYPE_CARDOS_BASE = 1000,
41 	SC_CARD_TYPE_CARDOS_GENERIC,
42 	SC_CARD_TYPE_CARDOS_M4_01,
43 	SC_CARD_TYPE_CARDOS_M4_2,
44 	SC_CARD_TYPE_CARDOS_M4_3,
45 	SC_CARD_TYPE_CARDOS_M4_2B, /* 4.2b is after 4.3b */
46 	SC_CARD_TYPE_CARDOS_M4_2C,
47 	SC_CARD_TYPE_CARDOS_CIE_V1, /* Italian CIE (eID) v1 */
48 	SC_CARD_TYPE_CARDOS_M4_4,
49 	SC_CARD_TYPE_CARDOS_V5_0,
50 	SC_CARD_TYPE_CARDOS_V5_3,
51 
52 	/* flex/cyberflex drivers */
53 	SC_CARD_TYPE_FLEX_BASE = 2000,
54 	SC_CARD_TYPE_FLEX_GENERIC,
55 	SC_CARD_TYPE_FLEX_CRYPTO,
56 	SC_CARD_TYPE_FLEX_MULTI,
57 	SC_CARD_TYPE_FLEX_CYBER,
58 
59 	/* gpk driver */
60 	SC_CARD_TYPE_GPK_BASE = 3000,
61 	SC_CARD_TYPE_GPK_GENERIC,
62 	SC_CARD_TYPE_GPK_GPK4000_su256 = 3040,
63 	SC_CARD_TYPE_GPK_GPK4000_s,
64 	SC_CARD_TYPE_GPK_GPK4000_sp,
65 	SC_CARD_TYPE_GPK_GPK4000_sdo,
66 	SC_CARD_TYPE_GPK_GPK8000 = 3080,
67 	SC_CARD_TYPE_GPK_GPK8000_8K,
68 	SC_CARD_TYPE_GPK_GPK8000_16K,
69 	SC_CARD_TYPE_GPK_GPK16000 = 3160,
70 
71 	/* miocos driver */
72 	SC_CARD_TYPE_MIOCOS_BASE = 4000,
73 	SC_CARD_TYPE_MIOCOS_GENERIC,
74 
75 	/* mcrd driver */
76 	SC_CARD_TYPE_MCRD_BASE = 5000,
77 	SC_CARD_TYPE_MCRD_GENERIC,
78 	SC_CARD_TYPE_MCRD_ESTEID_V30,
79 
80 	/* setcos driver */
81 	SC_CARD_TYPE_SETCOS_BASE = 6000,
82 	SC_CARD_TYPE_SETCOS_GENERIC,
83 	SC_CARD_TYPE_SETCOS_PKI,
84 	SC_CARD_TYPE_SETCOS_FINEID,
85 	SC_CARD_TYPE_SETCOS_FINEID_V2,
86 	SC_CARD_TYPE_SETCOS_NIDEL,
87 	SC_CARD_TYPE_SETCOS_FINEID_V2_2048,
88 	SC_CARD_TYPE_SETCOS_44 = 6100,
89 	SC_CARD_TYPE_SETCOS_EID_V2_0,
90 	SC_CARD_TYPE_SETCOS_EID_V2_1,
91 
92 	/* starcos driver */
93 	SC_CARD_TYPE_STARCOS_BASE = 7000,
94 	SC_CARD_TYPE_STARCOS_GENERIC,
95 	SC_CARD_TYPE_STARCOS_V3_4,
96 	SC_CARD_TYPE_STARCOS_V3_5,
97 
98 	/* tcos driver */
99 	SC_CARD_TYPE_TCOS_BASE = 8000,
100 	SC_CARD_TYPE_TCOS_GENERIC,
101 	SC_CARD_TYPE_TCOS_V2,
102 	SC_CARD_TYPE_TCOS_V3,
103 
104 	/* openpgp driver */
105 	SC_CARD_TYPE_OPENPGP_BASE = 9000,
106 	SC_CARD_TYPE_OPENPGP_V1,
107 	SC_CARD_TYPE_OPENPGP_V2,
108 	SC_CARD_TYPE_OPENPGP_V3,
109 	SC_CARD_TYPE_OPENPGP_GNUK,
110 
111 	/* jcop driver */
112 	SC_CARD_TYPE_JCOP_BASE = 10000,
113 	SC_CARD_TYPE_JCOP_GENERIC,
114 
115 	/* oberthur driver */
116 	SC_CARD_TYPE_OBERTHUR_BASE = 11000,
117 	SC_CARD_TYPE_OBERTHUR_GENERIC,
118 	SC_CARD_TYPE_OBERTHUR_32K,
119 	SC_CARD_TYPE_OBERTHUR_32K_BIO,
120 	SC_CARD_TYPE_OBERTHUR_64K,
121 	/* Oberthur 'COSMO v7' with applet 'AuthentIC v3.2' */
122         SC_CARD_TYPE_OBERTHUR_AUTHENTIC_3_2 = 11100,
123 
124 	/* belpic driver */
125 	SC_CARD_TYPE_BELPIC_BASE = 12000,
126 	SC_CARD_TYPE_BELPIC_GENERIC,
127 	SC_CARD_TYPE_BELPIC_EID,
128 
129 	/* incrypto34 driver */
130 	SC_CARD_TYPE_INCRYPTO34_BASE = 13000,
131 	SC_CARD_TYPE_INCRYPTO34_GENERIC,
132 
133 	/* PIV-II type cards */
134 	SC_CARD_TYPE_PIV_II_BASE = 14000,
135 	SC_CARD_TYPE_PIV_II_GENERIC,
136 	SC_CARD_TYPE_PIV_II_HIST,
137 	SC_CARD_TYPE_PIV_II_NEO,
138 	SC_CARD_TYPE_PIV_II_YUBIKEY4,
139 	SC_CARD_TYPE_PIV_II_GI_DE_DUAL_CAC,
140 	SC_CARD_TYPE_PIV_II_GI_DE,
141 	SC_CARD_TYPE_PIV_II_GEMALTO_DUAL_CAC,
142 	SC_CARD_TYPE_PIV_II_GEMALTO,
143 	SC_CARD_TYPE_PIV_II_OBERTHUR_DUAL_CAC,
144 	SC_CARD_TYPE_PIV_II_OBERTHUR,
145 	SC_CARD_TYPE_PIV_II_PIVKEY,
146 
147 	/* MuscleApplet */
148 	SC_CARD_TYPE_MUSCLE_BASE = 15000,
149 	SC_CARD_TYPE_MUSCLE_GENERIC,
150 	SC_CARD_TYPE_MUSCLE_V1,
151 	SC_CARD_TYPE_MUSCLE_V2,
152 	SC_CARD_TYPE_MUSCLE_ETOKEN_72K,
153 	SC_CARD_TYPE_MUSCLE_JCOP241,
154 	SC_CARD_TYPE_MUSCLE_JCOP242R2_NO_EXT_APDU,
155 
156 	/* Athena APCOS cards */
157 	SC_CARD_TYPE_ASEPCOS_BASE = 17000,
158 	SC_CARD_TYPE_ASEPCOS_GENERIC,
159 	SC_CARD_TYPE_ASEPCOS_JAVA,
160 
161 	/* TUBITAK UEKAE cards */
162 	SC_CARD_TYPE_AKIS_BASE = 18000,
163 	SC_CARD_TYPE_AKIS_GENERIC,
164 
165 	/* EnterSafe cards */
166 	SC_CARD_TYPE_ENTERSAFE_BASE = 19000,
167 	SC_CARD_TYPE_ENTERSAFE_3K,
168 	SC_CARD_TYPE_ENTERSAFE_FTCOS_PK_01C,
169 	SC_CARD_TYPE_ENTERSAFE_FTCOS_EPASS2003,
170 	SC_CARD_TYPE_ENTERSAFE_EJAVA_PK_01C,
171 	SC_CARD_TYPE_ENTERSAFE_EJAVA_PK_01C_T0,
172 	SC_CARD_TYPE_ENTERSAFE_EJAVA_H10CR_PK_01C_T1,
173 	SC_CARD_TYPE_ENTERSAFE_EJAVA_D11CR_PK_01C_T1,
174 	SC_CARD_TYPE_ENTERSAFE_EJAVA_C21C_PK_01C_T1,
175 	SC_CARD_TYPE_ENTERSAFE_EJAVA_A22CR_PK_01C_T1,
176 	SC_CARD_TYPE_ENTERSAFE_EJAVA_A40CR_PK_01C_T1,
177 
178 	/* MyEID cards */
179 	SC_CARD_TYPE_MYEID_BASE = 20000,
180 	SC_CARD_TYPE_MYEID_GENERIC,
181 	SC_CARD_TYPE_MYEID_OSEID,
182 
183 	/* GemsafeV1 cards */
184 	SC_CARD_TYPE_GEMSAFEV1_BASE = 21000,
185 	SC_CARD_TYPE_GEMSAFEV1_GENERIC,
186 	SC_CARD_TYPE_GEMSAFEV1_PTEID,
187 	SC_CARD_TYPE_GEMSAFEV1_SEEID,
188 
189 	/* Italian CNS cards */
190 	SC_CARD_TYPE_ITACNS_BASE = 23000,
191 	SC_CARD_TYPE_ITACNS_GENERIC,
192 	SC_CARD_TYPE_ITACNS_CNS,
193 	SC_CARD_TYPE_ITACNS_CIE_V2,
194 	SC_CARD_TYPE_ITACNS_CIE_V1,
195 
196 	/* Generic JavaCards without supported applet */
197 	SC_CARD_TYPE_JAVACARD_BASE = 24000,
198 	SC_CARD_TYPE_JAVACARD,
199 
200 	/* IAS/ECC cards */
201 	SC_CARD_TYPE_IASECC_BASE = 25000,
202 	SC_CARD_TYPE_IASECC_GEMALTO,
203 	SC_CARD_TYPE_IASECC_OBERTHUR,
204 	SC_CARD_TYPE_IASECC_SAGEM,
205 	SC_CARD_TYPE_IASECC_AMOS,
206 	SC_CARD_TYPE_IASECC_MI,
207 	SC_CARD_TYPE_IASECC_MI2,
208 	SC_CARD_TYPE_IASECC_CPX,
209 	SC_CARD_TYPE_IASECC_CPXCL,
210 
211 	/* SmartCard-HSM */
212 	SC_CARD_TYPE_SC_HSM = 26000,
213 	SC_CARD_TYPE_SC_HSM_SOC = 26001,
214 	SC_CARD_TYPE_SC_HSM_GOID = 26002,
215 
216 	/* Spanish DNIe card */
217 	SC_CARD_TYPE_DNIE_BASE = 27000,
218 	SC_CARD_TYPE_DNIE_BLANK, /* ATR LC byte: 00 */
219 	SC_CARD_TYPE_DNIE_ADMIN, /* ATR LC byte: 01 */
220 	SC_CARD_TYPE_DNIE_USER,  /* ATR LC byte: 03 */
221 	SC_CARD_TYPE_DNIE_TERMINATED, /* ATR LC byte: 0F */
222 
223 	/* JavaCards with isoApplet */
224 	SC_CARD_TYPE_ISO_APPLET_BASE = 28000,
225 	SC_CARD_TYPE_ISO_APPLET_GENERIC,
226 
227 	/* Masktech cards */
228 	SC_CARD_TYPE_MASKTECH_BASE = 29000,
229 	SC_CARD_TYPE_MASKTECH_GENERIC,
230 
231 	/* GIDS cards */
232 	SC_CARD_TYPE_GIDS_BASE = 30000,
233 	SC_CARD_TYPE_GIDS_GENERIC,
234 	SC_CARD_TYPE_GIDS_V1,
235 	SC_CARD_TYPE_GIDS_V2,
236 
237 	/* JPKI cards */
238 	SC_CARD_TYPE_JPKI_BASE = 31000,
239 
240 	/* Coolkey cards */
241 	SC_CARD_TYPE_COOLKEY_BASE = 32000,
242 	SC_CARD_TYPE_COOLKEY_GENERIC,
243 
244 	/* CAC cards */
245 	SC_CARD_TYPE_CAC_BASE = 33000,
246 	SC_CARD_TYPE_CAC_GENERIC,
247 	SC_CARD_TYPE_CAC_I,
248 	SC_CARD_TYPE_CAC_II,
249 	SC_CARD_TYPE_CAC_ALT_HID,
250 
251 	/* nPA cards */
252 	SC_CARD_TYPE_NPA = 34000,
253 	SC_CARD_TYPE_NPA_TEST,
254 	SC_CARD_TYPE_NPA_ONLINE,
255 
256 	/* EstEID cards */
257 	SC_CARD_TYPE_ESTEID = 35000,
258 	SC_CARD_TYPE_ESTEID_2018,
259 
260 	/* Rutoken cards */
261 	SC_CARD_TYPE_RUTOKENS = 36000,
262 	SC_CARD_TYPE_RUTOKEN_ECP,
263 	SC_CARD_TYPE_RUTOKEN_ECP_SC,
264 	SC_CARD_TYPE_RUTOKEN_LITE,
265 	SC_CARD_TYPE_RUTOKEN_LITE_SC,
266 
267 	/* IDPrime cards */
268 	SC_CARD_TYPE_IDPRIME_BASE = 37000,
269 	SC_CARD_TYPE_IDPRIME_V1,
270 	SC_CARD_TYPE_IDPRIME_V2,
271 	SC_CARD_TYPE_IDPRIME_V3,
272 	SC_CARD_TYPE_IDPRIME_V4,
273 	SC_CARD_TYPE_IDPRIME_GENERIC,
274 
275 	/* eDO cards */
276 	SC_CARD_TYPE_EDO = 38000
277 };
278 
279 extern sc_card_driver_t *sc_get_default_driver(void);
280 extern sc_card_driver_t *sc_get_cardos_driver(void);
281 extern sc_card_driver_t *sc_get_cryptoflex_driver(void);
282 extern sc_card_driver_t *sc_get_cyberflex_driver(void);
283 extern sc_card_driver_t *sc_get_gpk_driver(void);
284 extern sc_card_driver_t *sc_get_gemsafeV1_driver(void);
285 extern sc_card_driver_t *sc_get_miocos_driver(void);
286 extern sc_card_driver_t *sc_get_mcrd_driver(void);
287 extern sc_card_driver_t *sc_get_setcos_driver(void);
288 extern sc_card_driver_t *sc_get_starcos_driver(void);
289 extern sc_card_driver_t *sc_get_tcos_driver(void);
290 extern sc_card_driver_t *sc_get_openpgp_driver(void);
291 extern sc_card_driver_t *sc_get_jcop_driver(void);
292 extern sc_card_driver_t *sc_get_oberthur_driver(void);
293 extern sc_card_driver_t *sc_get_belpic_driver(void);
294 extern sc_card_driver_t *sc_get_atrust_acos_driver(void);
295 extern sc_card_driver_t *sc_get_incrypto34_driver(void);
296 extern sc_card_driver_t *sc_get_piv_driver(void);
297 extern sc_card_driver_t *sc_get_muscle_driver(void);
298 extern sc_card_driver_t *sc_get_asepcos_driver(void);
299 extern sc_card_driver_t *sc_get_akis_driver(void);
300 extern sc_card_driver_t *sc_get_entersafe_driver(void);
301 extern sc_card_driver_t *sc_get_rutoken_driver(void);
302 extern sc_card_driver_t *sc_get_rtecp_driver(void);
303 extern sc_card_driver_t *sc_get_westcos_driver(void);
304 extern sc_card_driver_t *sc_get_myeid_driver(void);
305 extern sc_card_driver_t *sc_get_sc_hsm_driver(void);
306 extern sc_card_driver_t *sc_get_itacns_driver(void);
307 extern sc_card_driver_t *sc_get_authentic_driver(void);
308 extern sc_card_driver_t *sc_get_iasecc_driver(void);
309 extern sc_card_driver_t *sc_get_epass2003_driver(void);
310 extern sc_card_driver_t *sc_get_dnie_driver(void);
311 extern sc_card_driver_t *sc_get_isoApplet_driver(void);
312 extern sc_card_driver_t *sc_get_masktech_driver(void);
313 extern sc_card_driver_t *sc_get_gids_driver(void);
314 extern sc_card_driver_t *sc_get_jpki_driver(void);
315 extern sc_card_driver_t *sc_get_coolkey_driver(void);
316 extern sc_card_driver_t *sc_get_cac_driver(void);
317 extern sc_card_driver_t *sc_get_cac1_driver(void);
318 extern sc_card_driver_t *sc_get_npa_driver(void);
319 extern sc_card_driver_t *sc_get_esteid2018_driver(void);
320 extern sc_card_driver_t *sc_get_idprime_driver(void);
321 extern sc_card_driver_t *sc_get_edo_driver(void);
322 
323 #ifdef __cplusplus
324 }
325 #endif
326 
327 #endif /* _OPENSC_CARDS_H */
328