let src/libopensc/ compile with -Wall -W -Wno-unused-parameter -Werror
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2546 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
parent
13a3e699e5
commit
f6c95792fe
|
@ -41,7 +41,7 @@ static struct sc_card_driver atrust_acos_drv = {
|
||||||
"A-Trust ACOS cards",
|
"A-Trust ACOS cards",
|
||||||
"atrust-acos",
|
"atrust-acos",
|
||||||
&atrust_acos_ops,
|
&atrust_acos_ops,
|
||||||
NULL, 0
|
NULL, 0, NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
/* internal structure to save the current security enviroment */
|
/* internal structure to save the current security enviroment */
|
||||||
|
|
|
@ -136,18 +136,18 @@ static size_t next_idx = (size_t)-1;
|
||||||
|
|
||||||
static struct sc_atr_table belpic_atrs[] = {
|
static struct sc_atr_table belpic_atrs[] = {
|
||||||
/* Applet V1.1 */
|
/* Applet V1.1 */
|
||||||
{ "3B:98:13:40:0A:A5:03:01:01:01:AD:13:11", NULL, NULL, SC_CARD_TYPE_BELPIC_EID },
|
{ "3B:98:13:40:0A:A5:03:01:01:01:AD:13:11", NULL, NULL, SC_CARD_TYPE_BELPIC_EID, 0, NULL },
|
||||||
/* Applet V1.0 with new EMV-compatible ATR */
|
/* Applet V1.0 with new EMV-compatible ATR */
|
||||||
{ "3B:98:94:40:0A:A5:03:01:01:01:AD:13:10", NULL, NULL, SC_CARD_TYPE_BELPIC_EID },
|
{ "3B:98:94:40:0A:A5:03:01:01:01:AD:13:10", NULL, NULL, SC_CARD_TYPE_BELPIC_EID, 0, NULL },
|
||||||
/* Applet beta 5 + V1.0 */
|
/* Applet beta 5 + V1.0 */
|
||||||
{ "3B:98:94:40:FF:A5:03:01:01:01:AD:13:10", NULL, NULL, SC_CARD_TYPE_BELPIC_EID },
|
{ "3B:98:94:40:FF:A5:03:01:01:01:AD:13:10", NULL, NULL, SC_CARD_TYPE_BELPIC_EID, 0, NULL },
|
||||||
#if 0
|
#if 0
|
||||||
/* Applet beta 3 + 4 */
|
/* Applet beta 3 + 4 */
|
||||||
{ "3B:98:11:40:FF:A5:03:01:01:01:AD:13:04", NULL, NULL, SC_CARD_TYPE_BELPIC_EID },
|
{ "3B:98:11:40:FF:A5:03:01:01:01:AD:13:04", NULL, NULL, SC_CARD_TYPE_BELPIC_EID, 0, NULL },
|
||||||
/* Applet beta 2 */
|
/* Applet beta 2 */
|
||||||
{ "3B:68:00:00:29:05:01:02:01:AD:13:03", NULL, NULL, SC_CARD_TYPE_BELPIC_EID },
|
{ "3B:68:00:00:29:05:01:02:01:AD:13:03", NULL, NULL, SC_CARD_TYPE_BELPIC_EID, 0, NULL },
|
||||||
#endif
|
#endif
|
||||||
{ NULL }
|
{ NULL, NULL, NULL, 0, 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
struct belpic_priv_data {
|
struct belpic_priv_data {
|
||||||
|
@ -174,7 +174,8 @@ static struct sc_card_operations belpic_ops;
|
||||||
static struct sc_card_driver belpic_drv = {
|
static struct sc_card_driver belpic_drv = {
|
||||||
"Belpic cards",
|
"Belpic cards",
|
||||||
"belpic",
|
"belpic",
|
||||||
&belpic_ops
|
&belpic_ops,
|
||||||
|
NULL, 0, NULL
|
||||||
};
|
};
|
||||||
static const struct sc_card_operations *iso_ops = NULL;
|
static const struct sc_card_operations *iso_ops = NULL;
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,8 @@ static struct sc_card_operations default_ops;
|
||||||
static struct sc_card_driver default_drv = {
|
static struct sc_card_driver default_drv = {
|
||||||
"Default driver for unknown cards",
|
"Default driver for unknown cards",
|
||||||
"default",
|
"default",
|
||||||
&default_ops
|
&default_ops,
|
||||||
|
NULL, 0, NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
static int default_finish(sc_card_t *card)
|
static int default_finish(sc_card_t *card)
|
||||||
|
|
|
@ -25,7 +25,8 @@ static struct sc_card_operations emv_ops;
|
||||||
static struct sc_card_driver emv_drv = {
|
static struct sc_card_driver emv_drv = {
|
||||||
"EMV compatible cards",
|
"EMV compatible cards",
|
||||||
"emv",
|
"emv",
|
||||||
&emv_ops
|
&emv_ops,
|
||||||
|
NULL, 0, NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
static int emv_finish(sc_card_t *card)
|
static int emv_finish(sc_card_t *card)
|
||||||
|
|
|
@ -37,25 +37,26 @@ struct sc_card_operations etoken_ops;
|
||||||
static struct sc_card_driver etoken_drv = {
|
static struct sc_card_driver etoken_drv = {
|
||||||
"Siemens CardOS",
|
"Siemens CardOS",
|
||||||
"etoken",
|
"etoken",
|
||||||
&etoken_ops
|
&etoken_ops,
|
||||||
|
NULL, 0, NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct sc_atr_table etoken_atrs[] = {
|
static struct sc_atr_table etoken_atrs[] = {
|
||||||
/* 4.0 */
|
/* 4.0 */
|
||||||
{ "3b:e2:00:ff:c1:10:31:fe:55:c8:02:9c", NULL, NULL, SC_CARD_TYPE_ETOKEN_GENERIC },
|
{ "3b:e2:00:ff:c1:10:31:fe:55:c8:02:9c", NULL, NULL, SC_CARD_TYPE_ETOKEN_GENERIC, 0, NULL },
|
||||||
/* 4.01 */
|
/* 4.01 */
|
||||||
{ "3b:f2:98:00:ff:c1:10:31:fe:55:c8:03:15", NULL, NULL, SC_CARD_TYPE_ETOKEN_GENERIC },
|
{ "3b:f2:98:00:ff:c1:10:31:fe:55:c8:03:15", NULL, NULL, SC_CARD_TYPE_ETOKEN_GENERIC, 0, NULL },
|
||||||
/* 4.01a */
|
/* 4.01a */
|
||||||
{ "3b:f2:98:00:ff:c1:10:31:fe:55:c8:04:12", NULL, NULL, SC_CARD_TYPE_ETOKEN_GENERIC },
|
{ "3b:f2:98:00:ff:c1:10:31:fe:55:c8:04:12", NULL, NULL, SC_CARD_TYPE_ETOKEN_GENERIC, 0, NULL },
|
||||||
/* aladdin etoken pro 64 - aj: not compatible :/ */
|
/* aladdin etoken pro 64 - aj: not compatible :/ */
|
||||||
/* { "3b f2 18 00 ff c1 0a 31 fe 55 c8 06 8a", NULL, NULL, SC_CARD_TYPE_ETOKEN_GENERIC }, */
|
/* { "3b f2 18 00 ff c1 0a 31 fe 55 c8 06 8a", NULL, NULL, SC_CARD_TYPE_ETOKEN_GENERIC, 0, NULL }, */
|
||||||
/* Italian eID card, postecert */
|
/* Italian eID card, postecert */
|
||||||
{ "3b:e9:00:ff:c1:10:31:fe:55:00:64:05:00:c8:02:31:80:00:47", NULL, NULL, SC_CARD_TYPE_ETOKEN_GENERIC },
|
{ "3b:e9:00:ff:c1:10:31:fe:55:00:64:05:00:c8:02:31:80:00:47", NULL, NULL, SC_CARD_TYPE_ETOKEN_GENERIC, 0, NULL },
|
||||||
/* Italian eID card, infocamere */
|
/* Italian eID card, infocamere */
|
||||||
{ "3b:fb:98:00:ff:c1:10:31:fe:55:00:64:05:20:47:03:31:80:00:90:00:f3", NULL, NULL, SC_CARD_TYPE_ETOKEN_GENERIC },
|
{ "3b:fb:98:00:ff:c1:10:31:fe:55:00:64:05:20:47:03:31:80:00:90:00:f3", NULL, NULL, SC_CARD_TYPE_ETOKEN_GENERIC, 0, NULL },
|
||||||
/* Another Italian InfocamereCard */
|
/* Another Italian InfocamereCard */
|
||||||
{ "3b:fc:98:00:ff:c1:10:31:fe:55:c8:03:49:6e:66:6f:63:61:6d:65:72:65:28", NULL, NULL, SC_CARD_TYPE_ETOKEN_GENERIC },
|
{ "3b:fc:98:00:ff:c1:10:31:fe:55:c8:03:49:6e:66:6f:63:61:6d:65:72:65:28", NULL, NULL, SC_CARD_TYPE_ETOKEN_GENERIC, 0, NULL },
|
||||||
{ NULL }
|
{ NULL, NULL, NULL, 0, 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
static int etoken_finish(sc_card_t *card)
|
static int etoken_finish(sc_card_t *card)
|
||||||
|
|
|
@ -28,50 +28,50 @@
|
||||||
static struct sc_atr_table flex_atrs[] = {
|
static struct sc_atr_table flex_atrs[] = {
|
||||||
/* Cryptoflex */
|
/* Cryptoflex */
|
||||||
/* 8k win2000 */
|
/* 8k win2000 */
|
||||||
{ "3b:95:15:40:20:68:01:02:00:00", NULL, "Cryptoflex 8K", SC_CARD_TYPE_FLEX_CRYPTO, 0 },
|
{ "3b:95:15:40:20:68:01:02:00:00", NULL, "Cryptoflex 8K", SC_CARD_TYPE_FLEX_CRYPTO, 0, NULL },
|
||||||
/* 8k */
|
/* 8k */
|
||||||
{ "3B:95:15:40:FF:68:01:02:02:01", NULL, "Cryptoflex 8K", SC_CARD_TYPE_FLEX_CRYPTO, 0 },
|
{ "3B:95:15:40:FF:68:01:02:02:01", NULL, "Cryptoflex 8K", SC_CARD_TYPE_FLEX_CRYPTO, 0, NULL },
|
||||||
/* 8k */
|
/* 8k */
|
||||||
{ "3B:95:15:40:FF:68:01:02:02:04", NULL, "Cryptoflex 8K", SC_CARD_TYPE_FLEX_CRYPTO, 0 },
|
{ "3B:95:15:40:FF:68:01:02:02:04", NULL, "Cryptoflex 8K", SC_CARD_TYPE_FLEX_CRYPTO, 0, NULL },
|
||||||
/* 8k */
|
/* 8k */
|
||||||
{ "3B:85:40:20:68:01:01:05:01", NULL, "Cryptoflex 8K", SC_CARD_TYPE_FLEX_CRYPTO, 0 },
|
{ "3B:85:40:20:68:01:01:05:01", NULL, "Cryptoflex 8K", SC_CARD_TYPE_FLEX_CRYPTO, 0, NULL },
|
||||||
/* 16k */
|
/* 16k */
|
||||||
{ "3B:95:94:40:FF:63:01:01:02:01", NULL, "Cryptoflex 16K", SC_CARD_TYPE_FLEX_CRYPTO, SC_CARD_FLAG_ONBOARD_KEY_GEN },
|
{ "3B:95:94:40:FF:63:01:01:02:01", NULL, "Cryptoflex 16K", SC_CARD_TYPE_FLEX_CRYPTO, SC_CARD_FLAG_ONBOARD_KEY_GEN, NULL },
|
||||||
/* 32K v4 */
|
/* 32K v4 */
|
||||||
{ "3B:95:18:40:FF:64:02:01:01:02", NULL, "Cryptoflex 32K v4", SC_CARD_TYPE_FLEX_CRYPTO, SC_CARD_FLAG_ONBOARD_KEY_GEN },
|
{ "3B:95:18:40:FF:64:02:01:01:02", NULL, "Cryptoflex 32K v4", SC_CARD_TYPE_FLEX_CRYPTO, SC_CARD_FLAG_ONBOARD_KEY_GEN, NULL },
|
||||||
/* 32K e-gate */
|
/* 32K e-gate */
|
||||||
{ "3B:95:18:40:FF:62:01:02:01:04", NULL, "Cryptoflex 32K e-gate", SC_CARD_TYPE_FLEX_CRYPTO, SC_CARD_FLAG_ONBOARD_KEY_GEN },
|
{ "3B:95:18:40:FF:62:01:02:01:04", NULL, "Cryptoflex 32K e-gate", SC_CARD_TYPE_FLEX_CRYPTO, SC_CARD_FLAG_ONBOARD_KEY_GEN, NULL },
|
||||||
/* 32K e-gate v4 */
|
/* 32K e-gate v4 */
|
||||||
{ "3B:95:18:40:FF:62:04:01:01:05", NULL, "Cryptoflex 32K e-gate v4", SC_CARD_TYPE_FLEX_CRYPTO, SC_CARD_FLAG_ONBOARD_KEY_GEN },
|
{ "3B:95:18:40:FF:62:04:01:01:05", NULL, "Cryptoflex 32K e-gate v4", SC_CARD_TYPE_FLEX_CRYPTO, SC_CARD_FLAG_ONBOARD_KEY_GEN, NULL },
|
||||||
|
|
||||||
{ "3B:E2:00:00:40:20:49:06", NULL, "Cryptoflex", SC_CARD_TYPE_FLEX_CRYPTO, 0 },
|
{ "3B:E2:00:00:40:20:49:06", NULL, "Cryptoflex", SC_CARD_TYPE_FLEX_CRYPTO, 0, NULL },
|
||||||
/* + full DES option */
|
/* + full DES option */
|
||||||
{ "3B:E2:00:00:40:20:49:05", NULL, "Cryptoflex", SC_CARD_TYPE_FLEX_CRYPTO, 0 },
|
{ "3B:E2:00:00:40:20:49:05", NULL, "Cryptoflex", SC_CARD_TYPE_FLEX_CRYPTO, 0, NULL },
|
||||||
/* + Key Generation */
|
/* + Key Generation */
|
||||||
{ "3B:E2:00:00:40:20:49:07", NULL, "Cryptoflex", SC_CARD_TYPE_FLEX_CRYPTO, SC_CARD_FLAG_ONBOARD_KEY_GEN },
|
{ "3B:E2:00:00:40:20:49:07", NULL, "Cryptoflex", SC_CARD_TYPE_FLEX_CRYPTO, SC_CARD_FLAG_ONBOARD_KEY_GEN, NULL },
|
||||||
/* + Key Generation */
|
/* + Key Generation */
|
||||||
{ "3B:85:40:20:68:01:01:03:05", NULL, "Cryptoflex", SC_CARD_TYPE_FLEX_CRYPTO, SC_CARD_FLAG_ONBOARD_KEY_GEN },
|
{ "3B:85:40:20:68:01:01:03:05", NULL, "Cryptoflex", SC_CARD_TYPE_FLEX_CRYPTO, SC_CARD_FLAG_ONBOARD_KEY_GEN, NULL },
|
||||||
|
|
||||||
/* Multiflex */
|
/* Multiflex */
|
||||||
/* 3K */
|
/* 3K */
|
||||||
{ "3B:02:14:50", NULL, "Multiflex 3K", SC_CARD_TYPE_FLEX_MULTI, 0 },
|
{ "3B:02:14:50", NULL, "Multiflex 3K", SC_CARD_TYPE_FLEX_MULTI, 0, NULL },
|
||||||
/* 4K */
|
/* 4K */
|
||||||
{ "3B:19:14:55:90:01:02:01:00:05:04:B0", NULL, "Multiflex 4K", SC_CARD_TYPE_FLEX_MULTI, 0 },
|
{ "3B:19:14:55:90:01:02:01:00:05:04:B0", NULL, "Multiflex 4K", SC_CARD_TYPE_FLEX_MULTI, 0, NULL },
|
||||||
/* 8K */
|
/* 8K */
|
||||||
{ "3B:32:15:00:06:80", NULL, "Multiflex 8K", SC_CARD_TYPE_FLEX_MULTI, 0 },
|
{ "3B:32:15:00:06:80", NULL, "Multiflex 8K", SC_CARD_TYPE_FLEX_MULTI, 0, NULL },
|
||||||
/* 8K + full DES option */
|
/* 8K + full DES option */
|
||||||
{ "3B:32:15:00:06:95", NULL, "Multiflex 8K", SC_CARD_TYPE_FLEX_MULTI, 0 },
|
{ "3B:32:15:00:06:95", NULL, "Multiflex 8K", SC_CARD_TYPE_FLEX_MULTI, 0, NULL },
|
||||||
/* 8K */
|
/* 8K */
|
||||||
{ "3B:19:14:59:01:01:0F:01:00:05:08:B0", NULL, "Multiflex 8K", SC_CARD_TYPE_FLEX_MULTI, 0 },
|
{ "3B:19:14:59:01:01:0F:01:00:05:08:B0", NULL, "Multiflex 8K", SC_CARD_TYPE_FLEX_MULTI, 0, NULL },
|
||||||
/* 8K */
|
/* 8K */
|
||||||
{ "3B:19:14:55:90:01:01:01:00:05:08:B0", NULL, "Multiflex 8K", SC_CARD_TYPE_FLEX_MULTI, 0 },
|
{ "3B:19:14:55:90:01:01:01:00:05:08:B0", NULL, "Multiflex 8K", SC_CARD_TYPE_FLEX_MULTI, 0, NULL },
|
||||||
|
|
||||||
/* Cyberflex Access */
|
/* Cyberflex Access */
|
||||||
/* Crypto */
|
/* Crypto */
|
||||||
{ "3B:16:94:81:10:06:01:81:3F", NULL, "Cyberflex Access", SC_CARD_TYPE_FLEX_CYBER, 0 },
|
{ "3B:16:94:81:10:06:01:81:3F", NULL, "Cyberflex Access", SC_CARD_TYPE_FLEX_CYBER, 0, NULL },
|
||||||
/* Aug. Crypto */
|
/* Aug. Crypto */
|
||||||
{ "3B:16:94:81:10:06:01:81:2F", NULL, "Cyberflex Access", SC_CARD_TYPE_FLEX_CYBER, 0 },
|
{ "3B:16:94:81:10:06:01:81:2F", NULL, "Cyberflex Access", SC_CARD_TYPE_FLEX_CYBER, 0, NULL },
|
||||||
{ NULL }
|
{ NULL, NULL, NULL, 0, 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
struct flex_private_data {
|
struct flex_private_data {
|
||||||
|
@ -91,12 +91,14 @@ static struct sc_card_operations *iso_ops;
|
||||||
static struct sc_card_driver cryptoflex_drv = {
|
static struct sc_card_driver cryptoflex_drv = {
|
||||||
"Schlumberger Multiflex/Cryptoflex",
|
"Schlumberger Multiflex/Cryptoflex",
|
||||||
"flex",
|
"flex",
|
||||||
&cryptoflex_ops
|
&cryptoflex_ops,
|
||||||
|
NULL, 0, NULL
|
||||||
};
|
};
|
||||||
static struct sc_card_driver cyberflex_drv = {
|
static struct sc_card_driver cyberflex_drv = {
|
||||||
"Schlumberger Cyberflex",
|
"Schlumberger Cyberflex",
|
||||||
"cyberflex",
|
"cyberflex",
|
||||||
&cyberflex_ops
|
&cyberflex_ops,
|
||||||
|
NULL, 0, NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
static int flex_finish(sc_card_t *card)
|
static int flex_finish(sc_card_t *card)
|
||||||
|
|
|
@ -90,15 +90,15 @@ static int gpk_get_info(sc_card_t *, int, int, u8 *, size_t);
|
||||||
* ATRs of GPK4000 cards courtesy of libscez
|
* ATRs of GPK4000 cards courtesy of libscez
|
||||||
*/
|
*/
|
||||||
static struct sc_atr_table gpk_atrs[] = {
|
static struct sc_atr_table gpk_atrs[] = {
|
||||||
{ "3B:27:00:80:65:A2:04:01:01:37", NULL, "GPK 4K", SC_CARD_TYPE_GPK_GPK4000_s },
|
{ "3B:27:00:80:65:A2:04:01:01:37", NULL, "GPK 4K", SC_CARD_TYPE_GPK_GPK4000_s, 0, NULL },
|
||||||
{ "3B:27:00:80:65:A2:05:01:01:37", NULL, "GPK 4K", SC_CARD_TYPE_GPK_GPK4000_sp },
|
{ "3B:27:00:80:65:A2:05:01:01:37", NULL, "GPK 4K", SC_CARD_TYPE_GPK_GPK4000_sp, 0, NULL },
|
||||||
{ "3B:27:00:80:65:A2:0C:01:01:37", NULL, "GPK 4K", SC_CARD_TYPE_GPK_GPK4000_su256 },
|
{ "3B:27:00:80:65:A2:0C:01:01:37", NULL, "GPK 4K", SC_CARD_TYPE_GPK_GPK4000_su256, 0, NULL },
|
||||||
{ "3B:A7:00:40:14:80:65:A2:14:01:01:37", NULL, "GPK 4K", SC_CARD_TYPE_GPK_GPK4000_sdo },
|
{ "3B:A7:00:40:14:80:65:A2:14:01:01:37", NULL, "GPK 4K", SC_CARD_TYPE_GPK_GPK4000_sdo, 0, NULL },
|
||||||
{ "3B:A7:00:40:18:80:65:A2:08:01:01:52", NULL, "GPK 8K", SC_CARD_TYPE_GPK_GPK8000_8K },
|
{ "3B:A7:00:40:18:80:65:A2:08:01:01:52", NULL, "GPK 8K", SC_CARD_TYPE_GPK_GPK8000_8K, 0, NULL },
|
||||||
{ "3B:A7:00:40:18:80:65:A2:09:01:01:52", NULL, "GPK 8K", SC_CARD_TYPE_GPK_GPK8000_16K },
|
{ "3B:A7:00:40:18:80:65:A2:09:01:01:52", NULL, "GPK 8K", SC_CARD_TYPE_GPK_GPK8000_16K, 0, NULL },
|
||||||
{ "3B:A7:00:40:18:80:65:A2:09:01:02:52", NULL, "GPK 16K", SC_CARD_TYPE_GPK_GPK16000 },
|
{ "3B:A7:00:40:18:80:65:A2:09:01:02:52", NULL, "GPK 16K", SC_CARD_TYPE_GPK_GPK16000, 0, NULL },
|
||||||
{ "3B:A7:00:40:18:80:65:A2:09:01:03:52", NULL, "GPK 16K", SC_CARD_TYPE_GPK_GPK16000 },
|
{ "3B:A7:00:40:18:80:65:A2:09:01:03:52", NULL, "GPK 16K", SC_CARD_TYPE_GPK_GPK16000, 0, NULL },
|
||||||
{ NULL }
|
{ NULL, NULL, NULL, 0, 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -108,7 +108,8 @@ static struct sc_card_operations gpk_ops, *iso_ops;
|
||||||
static struct sc_card_driver gpk_drv = {
|
static struct sc_card_driver gpk_drv = {
|
||||||
"Gemplus GPK",
|
"Gemplus GPK",
|
||||||
"gpk",
|
"gpk",
|
||||||
&gpk_ops
|
&gpk_ops,
|
||||||
|
NULL, 0, NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -31,17 +31,18 @@
|
||||||
#include "esteid.h"
|
#include "esteid.h"
|
||||||
|
|
||||||
static struct sc_atr_table mcrd_atrs[] = {
|
static struct sc_atr_table mcrd_atrs[] = {
|
||||||
{ "3B:FF:94:00:FF:80:B1:FE:45:1F:03:00:68:D2:76:00:00:28:FF:05:1E:31:80:00:90:00:23", NULL, "German BMI", SC_CARD_TYPE_MCRD_GENERIC },
|
{ "3B:FF:94:00:FF:80:B1:FE:45:1F:03:00:68:D2:76:00:00:28:FF:05:1E:31:80:00:90:00:23", NULL, "German BMI", SC_CARD_TYPE_MCRD_GENERIC, 0, NULL },
|
||||||
{ "3B:FE:94:00:FF:80:B1:FA:45:1F:03:45:73:74:45:49:44:20:76:65:72:20:31:2E:30:43", NULL, "EstEID (cold)", SC_CARD_TYPE_MCRD_ESTEID },
|
{ "3B:FE:94:00:FF:80:B1:FA:45:1F:03:45:73:74:45:49:44:20:76:65:72:20:31:2E:30:43", NULL, "EstEID (cold)", SC_CARD_TYPE_MCRD_ESTEID, 0, NULL },
|
||||||
{ "3B:6E:00:FF:45:73:74:45:49:44:20:76:65:72:20:31:2E:30", NULL, "EstEID (warm)", SC_CARD_TYPE_MCRD_ESTEID },
|
{ "3B:6E:00:FF:45:73:74:45:49:44:20:76:65:72:20:31:2E:30", NULL, "EstEID (warm)", SC_CARD_TYPE_MCRD_ESTEID, 0, NULL },
|
||||||
{ NULL }
|
{ NULL, NULL, NULL, 0, 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct sc_card_operations mcrd_ops;
|
static struct sc_card_operations mcrd_ops;
|
||||||
static struct sc_card_driver mcrd_drv = {
|
static struct sc_card_driver mcrd_drv = {
|
||||||
"MICARDO 2.1",
|
"MICARDO 2.1",
|
||||||
"mcrd",
|
"mcrd",
|
||||||
&mcrd_ops
|
&mcrd_ops,
|
||||||
|
NULL, 0, NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct sc_card_operations *iso_ops = NULL;
|
static const struct sc_card_operations *iso_ops = NULL;
|
||||||
|
|
|
@ -26,17 +26,18 @@
|
||||||
|
|
||||||
static struct sc_atr_table miocos_atrs[] = {
|
static struct sc_atr_table miocos_atrs[] = {
|
||||||
/* Test card with 32 kB memory */
|
/* Test card with 32 kB memory */
|
||||||
{ "3B:9D:94:40:23:00:68:10:11:4D:69:6F:43:4F:53:00:90:00", NULL, NULL, SC_CARD_TYPE_MIOCOS_GENERIC },
|
{ "3B:9D:94:40:23:00:68:10:11:4D:69:6F:43:4F:53:00:90:00", NULL, NULL, SC_CARD_TYPE_MIOCOS_GENERIC, 0, NULL },
|
||||||
/* Test card with 64 kB memory */
|
/* Test card with 64 kB memory */
|
||||||
{ "3B:9D:94:40:23:00:68:20:01:4D:69:6F:43:4F:53:00:90:00", NULL, NULL, SC_CARD_TYPE_MIOCOS_GENERIC },
|
{ "3B:9D:94:40:23:00:68:20:01:4D:69:6F:43:4F:53:00:90:00", NULL, NULL, SC_CARD_TYPE_MIOCOS_GENERIC, 0, NULL },
|
||||||
{ NULL }
|
{ NULL, NULL, NULL, 0, 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct sc_card_operations miocos_ops;
|
static struct sc_card_operations miocos_ops;
|
||||||
static struct sc_card_driver miocos_drv = {
|
static struct sc_card_driver miocos_drv = {
|
||||||
"MioCOS 1.1",
|
"MioCOS 1.1",
|
||||||
"miocos",
|
"miocos",
|
||||||
&miocos_ops
|
&miocos_ops,
|
||||||
|
NULL, 0, NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
static int miocos_finish(sc_card_t *card)
|
static int miocos_finish(sc_card_t *card)
|
||||||
|
|
|
@ -42,15 +42,15 @@
|
||||||
|
|
||||||
static struct sc_atr_table oberthur_atrs[] = {
|
static struct sc_atr_table oberthur_atrs[] = {
|
||||||
#if 0
|
#if 0
|
||||||
{ "3B:7F:18:00:00:00:31:C0:73:9E:01:0B:64:52:D9:04:00:82:90:00", NULL, "Oberthur 32k", SC_CARD_TYPE_OBERTHUR_32K },
|
{ "3B:7F:18:00:00:00:31:C0:73:9E:01:0B:64:52:D9:04:00:82:90:00", NULL, "Oberthur 32k", SC_CARD_TYPE_OBERTHUR_32K, 0, NULL },
|
||||||
{ "3B:7F:18:00:00:00:31:C0:73:9E:01:0B:64:52:D9:05:00:82:90:00", NULL, "Oberthur 32k BIO", SC_CARD_TYPE_OBERTHUR_32K_BIO },
|
{ "3B:7F:18:00:00:00:31:C0:73:9E:01:0B:64:52:D9:05:00:82:90:00", NULL, "Oberthur 32k BIO", SC_CARD_TYPE_OBERTHUR_32K_BIO, 0, NULL },
|
||||||
#endif
|
#endif
|
||||||
{ "3B:7D:18:00:00:00:31:80:71:8E:64:77:E3:01:00:82:90:00", NULL, "Oberthur 64k v4/2.1.1", SC_CARD_TYPE_OBERTHUR_64K },
|
{ "3B:7D:18:00:00:00:31:80:71:8E:64:77:E3:01:00:82:90:00", NULL, "Oberthur 64k v4/2.1.1", SC_CARD_TYPE_OBERTHUR_64K, 0, NULL },
|
||||||
{ "3B:7D:18:00:00:00:31:80:71:8E:64:77:E3:02:00:82:90:00", NULL, "Oberthur 64k v4/2.1.1", SC_CARD_TYPE_OBERTHUR_64K },
|
{ "3B:7D:18:00:00:00:31:80:71:8E:64:77:E3:02:00:82:90:00", NULL, "Oberthur 64k v4/2.1.1", SC_CARD_TYPE_OBERTHUR_64K, 0, NULL },
|
||||||
{ "3B:7D:11:00:00:00:31:80:71:8E:64:77:E3:01:00:82:90:00", NULL, "Oberthur 64k v5", SC_CARD_TYPE_OBERTHUR_64K },
|
{ "3B:7D:11:00:00:00:31:80:71:8E:64:77:E3:01:00:82:90:00", NULL, "Oberthur 64k v5", SC_CARD_TYPE_OBERTHUR_64K, 0, NULL },
|
||||||
{ "3B:7D:11:00:00:00:31:80:71:8E:64:77:E3:02:00:82:90:00", NULL, "Oberthur 64k v5/2.2.0", SC_CARD_TYPE_OBERTHUR_64K },
|
{ "3B:7D:11:00:00:00:31:80:71:8E:64:77:E3:02:00:82:90:00", NULL, "Oberthur 64k v5/2.2.0", SC_CARD_TYPE_OBERTHUR_64K, 0, NULL },
|
||||||
{ "3B:7B:18:00:00:00:31:C0:64:77:E3:03:00:82:90:00", NULL, "Oberthur 64k CosmopolIC v5.2/2.2", SC_CARD_TYPE_OBERTHUR_64K },
|
{ "3B:7B:18:00:00:00:31:C0:64:77:E3:03:00:82:90:00", NULL, "Oberthur 64k CosmopolIC v5.2/2.2", SC_CARD_TYPE_OBERTHUR_64K, 0, NULL },
|
||||||
{ NULL }
|
{ NULL, NULL, NULL, 0, 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
struct NTLV {
|
struct NTLV {
|
||||||
|
@ -120,7 +120,8 @@ static struct sc_card_operations *iso_ops;
|
||||||
static struct sc_card_driver auth_drv = {
|
static struct sc_card_driver auth_drv = {
|
||||||
"Oberthur AuthentIC.v2/CosmopolIC.v4",
|
"Oberthur AuthentIC.v2/CosmopolIC.v4",
|
||||||
"oberthur",
|
"oberthur",
|
||||||
&auth_ops
|
&auth_ops,
|
||||||
|
NULL, 0, NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
static int auth_get_pin_reference (sc_card_t *card,
|
static int auth_get_pin_reference (sc_card_t *card,
|
||||||
|
@ -1858,6 +1859,7 @@ auth_init_pin_info(sc_card_t *card, struct sc_pin_cmd_pin *pin,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
static int
|
static int
|
||||||
auth_pin_cmd(struct sc_card *card, struct sc_pin_cmd_data *data,
|
auth_pin_cmd(struct sc_card *card, struct sc_pin_cmd_data *data,
|
||||||
int *tries_left)
|
int *tries_left)
|
||||||
|
@ -1871,6 +1873,7 @@ auth_pin_cmd(struct sc_card *card, struct sc_pin_cmd_data *data,
|
||||||
data->pin_reference = pin_ref;
|
data->pin_reference = pin_ref;
|
||||||
return iso_ops->pin_cmd(card, data, tries_left);
|
return iso_ops->pin_cmd(card, data, tries_left);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static int
|
static int
|
||||||
auth_verify(sc_card_t *card, unsigned int type,
|
auth_verify(sc_card_t *card, unsigned int type,
|
||||||
|
|
|
@ -26,8 +26,8 @@
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
static struct sc_atr_table pgp_atrs[] = {
|
static struct sc_atr_table pgp_atrs[] = {
|
||||||
{ "3b:fa:13:00:ff:81:31:80:45:00:31:c1:73:c0:01:00:00:90:00:b1", NULL, NULL, SC_CARD_TYPE_OPENPGP_GENERIC },
|
{ "3b:fa:13:00:ff:81:31:80:45:00:31:c1:73:c0:01:00:00:90:00:b1", NULL, NULL, SC_CARD_TYPE_OPENPGP_GENERIC, 0, NULL },
|
||||||
{ NULL }
|
{ NULL, NULL, NULL, 0, 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct sc_card_operations *iso_ops;
|
static struct sc_card_operations *iso_ops;
|
||||||
|
@ -35,7 +35,8 @@ static struct sc_card_operations pgp_ops;
|
||||||
static struct sc_card_driver pgp_drv = {
|
static struct sc_card_driver pgp_drv = {
|
||||||
"OpenPGP card",
|
"OpenPGP card",
|
||||||
"openpgp",
|
"openpgp",
|
||||||
&pgp_ops
|
&pgp_ops,
|
||||||
|
NULL, 0, NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -93,7 +94,7 @@ static struct do_info pgp_objects[] = {
|
||||||
{ 0xb801, 0, 0, pgp_get_pubkey_pem,NULL },
|
{ 0xb801, 0, 0, pgp_get_pubkey_pem,NULL },
|
||||||
{ 0xa401, 0, 0, pgp_get_pubkey_pem,NULL },
|
{ 0xa401, 0, 0, pgp_get_pubkey_pem,NULL },
|
||||||
|
|
||||||
{ 0 },
|
{ 0, 0, 0, NULL, NULL },
|
||||||
};
|
};
|
||||||
|
|
||||||
#define DRVDATA(card) ((struct pgp_priv_data *) ((card)->drv_data))
|
#define DRVDATA(card) ((struct pgp_priv_data *) ((card)->drv_data))
|
||||||
|
|
|
@ -442,7 +442,7 @@ static int setcos_create_file_44(sc_card_t *card, sc_file_t *file)
|
||||||
bBuf[len++] = bCommands_always;
|
bBuf[len++] = bCommands_always;
|
||||||
}
|
}
|
||||||
/* Add commands that require pins */
|
/* Add commands that require pins */
|
||||||
for (i = 0; i < sizeof(bCommands_pin) && pins[i] != -1; i++) {
|
for (i = 0; i < (int)sizeof(bCommands_pin) && pins[i] != -1; i++) {
|
||||||
bBuf[len++] = 2;
|
bBuf[len++] = 2;
|
||||||
bBuf[len++] = bCommands_pin[i];
|
bBuf[len++] = bCommands_pin[i];
|
||||||
bBuf[len++] = pins[i] & 0x07; /* pin ref */
|
bBuf[len++] = pins[i] & 0x07; /* pin ref */
|
||||||
|
|
|
@ -25,9 +25,9 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
static struct sc_atr_table starcos_atrs[] = {
|
static struct sc_atr_table starcos_atrs[] = {
|
||||||
{ "3B:B7:94:00:c0:24:31:fe:65:53:50:4b:32:33:90:00:b4", NULL, NULL, SC_CARD_TYPE_STARCOS_GENERIC },
|
{ "3B:B7:94:00:c0:24:31:fe:65:53:50:4b:32:33:90:00:b4", NULL, NULL, SC_CARD_TYPE_STARCOS_GENERIC, 0, NULL },
|
||||||
{ "3B:B7:94:00:81:31:fe:65:53:50:4b:32:33:90:00:d1", NULL, NULL, SC_CARD_TYPE_STARCOS_GENERIC },
|
{ "3B:B7:94:00:81:31:fe:65:53:50:4b:32:33:90:00:d1", NULL, NULL, SC_CARD_TYPE_STARCOS_GENERIC, 0, NULL },
|
||||||
{ NULL }
|
{ NULL, NULL, NULL, 0, 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct sc_card_operations starcos_ops;
|
static struct sc_card_operations starcos_ops;
|
||||||
|
@ -37,7 +37,7 @@ static struct sc_card_driver starcos_drv = {
|
||||||
"STARCOS SPK 2.3",
|
"STARCOS SPK 2.3",
|
||||||
"starcos",
|
"starcos",
|
||||||
&starcos_ops,
|
&starcos_ops,
|
||||||
NULL, 0
|
NULL, 0, NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct sc_card_error starcos_errors[] =
|
static const struct sc_card_error starcos_errors[] =
|
||||||
|
|
|
@ -29,19 +29,20 @@
|
||||||
|
|
||||||
static struct sc_atr_table tcos_atrs[] = {
|
static struct sc_atr_table tcos_atrs[] = {
|
||||||
/* SLE44 */
|
/* SLE44 */
|
||||||
{ "3B:BA:13:00:81:31:86:5D:00:64:05:0A:02:01:31:80:90:00:8B", NULL, NULL, SC_CARD_TYPE_TCOS_GENERIC },
|
{ "3B:BA:13:00:81:31:86:5D:00:64:05:0A:02:01:31:80:90:00:8B", NULL, NULL, SC_CARD_TYPE_TCOS_GENERIC, 0, NULL },
|
||||||
/* SLE66S */
|
/* SLE66S */
|
||||||
{ "3B:BA:14:00:81:31:86:5D:00:64:05:14:02:02:31:80:90:00:91", NULL, NULL, SC_CARD_TYPE_TCOS_GENERIC },
|
{ "3B:BA:14:00:81:31:86:5D:00:64:05:14:02:02:31:80:90:00:91", NULL, NULL, SC_CARD_TYPE_TCOS_GENERIC, 0, NULL },
|
||||||
/* SLE66P */
|
/* SLE66P */
|
||||||
{ "3B:BA:96:00:81:31:86:5D:00:64:05:60:02:03:31:80:90:00:66", NULL, NULL, SC_CARD_TYPE_TCOS_GENERIC },
|
{ "3B:BA:96:00:81:31:86:5D:00:64:05:60:02:03:31:80:90:00:66", NULL, NULL, SC_CARD_TYPE_TCOS_GENERIC, 0, NULL },
|
||||||
{ NULL }
|
{ NULL, NULL, NULL, 0, 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct sc_card_operations tcos_ops;
|
static struct sc_card_operations tcos_ops;
|
||||||
static struct sc_card_driver tcos_drv = {
|
static struct sc_card_driver tcos_drv = {
|
||||||
"TCOS 2.0",
|
"TCOS 2.0",
|
||||||
"tcos",
|
"tcos",
|
||||||
&tcos_ops
|
&tcos_ops,
|
||||||
|
NULL, 0, NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct sc_card_operations *iso_ops = NULL;
|
static const struct sc_card_operations *iso_ops = NULL;
|
||||||
|
@ -695,6 +696,7 @@ static int tcos_restore_security_env(sc_card_t *card, int se_num)
|
||||||
static int tcos_compute_signature(sc_card_t *card, const u8 * data, size_t datalen, u8 * out, size_t outlen)
|
static int tcos_compute_signature(sc_card_t *card, const u8 * data, size_t datalen, u8 * out, size_t outlen)
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
|
size_t i;
|
||||||
sc_apdu_t apdu;
|
sc_apdu_t apdu;
|
||||||
u8 rbuf[SC_MAX_APDU_BUFFER_SIZE];
|
u8 rbuf[SC_MAX_APDU_BUFFER_SIZE];
|
||||||
u8 sbuf[SC_MAX_APDU_BUFFER_SIZE];
|
u8 sbuf[SC_MAX_APDU_BUFFER_SIZE];
|
||||||
|
@ -709,7 +711,8 @@ static int tcos_compute_signature(sc_card_t *card, const u8 * data, size_t datal
|
||||||
} else {
|
} else {
|
||||||
unsigned int keylen=128; /* FIXME: use correct key-size */
|
unsigned int keylen=128; /* FIXME: use correct key-size */
|
||||||
sc_format_apdu(card, &apdu, SC_APDU_CASE_4_SHORT, 0x2A, 0x80, 0x84);
|
sc_format_apdu(card, &apdu, SC_APDU_CASE_4_SHORT, 0x2A, 0x80, 0x84);
|
||||||
for(r=0;r<sizeof(sbuf);++r) sbuf[r]=0xff;
|
for(i = 0; i < sizeof(sbuf); ++i)
|
||||||
|
sbuf[i]=0xff;
|
||||||
sbuf[0]=0x00; sbuf[1]=0x01; sbuf[keylen-datalen-1]=0x00;
|
sbuf[0]=0x00; sbuf[1]=0x01; sbuf[keylen-datalen-1]=0x00;
|
||||||
memcpy(sbuf+keylen-datalen, data, datalen);
|
memcpy(sbuf+keylen-datalen, data, datalen);
|
||||||
datalen=keylen;
|
datalen=keylen;
|
||||||
|
|
|
@ -410,7 +410,8 @@ static struct sc_reader_operations ctapi_ops;
|
||||||
static struct sc_reader_driver ctapi_drv = {
|
static struct sc_reader_driver ctapi_drv = {
|
||||||
"CT-API module",
|
"CT-API module",
|
||||||
"ctapi",
|
"ctapi",
|
||||||
&ctapi_ops
|
&ctapi_ops,
|
||||||
|
0, 0, 0, NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct ctapi_module * add_module(struct ctapi_global_private_data *gpriv,
|
static struct ctapi_module * add_module(struct ctapi_global_private_data *gpriv,
|
||||||
|
|
|
@ -522,7 +522,8 @@ static struct sc_reader_operations pcsc_ops;
|
||||||
static struct sc_reader_driver pcsc_drv = {
|
static struct sc_reader_driver pcsc_drv = {
|
||||||
"PC/SC reader",
|
"PC/SC reader",
|
||||||
"pcsc",
|
"pcsc",
|
||||||
&pcsc_ops
|
&pcsc_ops,
|
||||||
|
0, 0, 0, NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
static int pcsc_init(sc_context_t *ctx, void **reader_data)
|
static int pcsc_init(sc_context_t *ctx, void **reader_data)
|
||||||
|
|
Loading…
Reference in New Issue