From 69b7f200eb23780415abdba0b7c98e27a48847b0 Mon Sep 17 00:00:00 2001 From: vtarasov Date: Wed, 16 Feb 2011 10:59:10 +0000 Subject: [PATCH] IAS/ECC: include support of the IAS/ECC v1.0.1 cards ... http://www.opensc-project.org/pipermail/opensc-devel/2011-January/015756.html git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5198 c6295689-39f2-0310-b995-f0e70906c6a9 --- src/libopensc/Makefile.am | 4 +++- src/libopensc/Makefile.mak | 1 + src/libopensc/cardctl.h | 12 ++++++++++++ src/libopensc/cards.h | 6 ++++++ src/libopensc/ctx.c | 1 + src/pkcs15init/Makefile.am | 7 +++++-- src/pkcs15init/Makefile.mak | 2 +- src/pkcs15init/pkcs15-init.h | 1 + src/pkcs15init/pkcs15-lib.c | 1 + 9 files changed, 31 insertions(+), 4 deletions(-) diff --git a/src/libopensc/Makefile.am b/src/libopensc/Makefile.am index b6f09984..33bb0de7 100644 --- a/src/libopensc/Makefile.am +++ b/src/libopensc/Makefile.am @@ -9,7 +9,8 @@ noinst_HEADERS = cards.h ctbcs.h internal.h esteid.h muscle.h muscle-filesystem. internal-winscard.h p15card-helper.h \ opensc.h pkcs15.h \ cardctl.h asn1.h log.h \ - errors.h types.h compression.h itacns.h iso7816.h authentic.h + errors.h types.h compression.h itacns.h iso7816.h \ + authentic.h iasecc.h iasecc-sdo.h AM_CPPFLAGS = -DOPENSC_CONF_PATH=\"$(sysconfdir)/opensc.conf\" AM_CFLAGS = $(OPTIONAL_OPENSSL_CFLAGS) $(OPTIONAL_OPENCT_CFLAGS) \ @@ -38,6 +39,7 @@ libopensc_la_SOURCES = \ card-asepcos.c card-akis.c card-gemsafeV1.c card-rutoken.c \ card-rtecp.c card-westcos.c card-myeid.c card-ias.c \ card-javacard.c card-itacns.c card-authentic.c \ + card-iasecc.c iasecc-sdo.c \ \ pkcs15-openpgp.c pkcs15-infocamere.c pkcs15-starcert.c \ pkcs15-tcos.c pkcs15-esteid.c pkcs15-postecert.c pkcs15-gemsafeGPK.c \ diff --git a/src/libopensc/Makefile.mak b/src/libopensc/Makefile.mak index 90a00722..4b7403ee 100644 --- a/src/libopensc/Makefile.mak +++ b/src/libopensc/Makefile.mak @@ -22,6 +22,7 @@ OBJECTS = \ card-asepcos.obj card-akis.obj card-gemsafeV1.obj card-rutoken.obj \ card-rtecp.obj card-westcos.obj card-myeid.obj card-ias.obj \ card-javacard.obj card-itacns.obj card-authentic.obj \ + card-iasecc.obj iasecc-sdo.obj \ \ pkcs15-openpgp.obj pkcs15-infocamere.obj pkcs15-starcert.obj \ pkcs15-tcos.obj pkcs15-esteid.obj pkcs15-postecert.obj pkcs15-gemsafeGPK.obj \ diff --git a/src/libopensc/cardctl.h b/src/libopensc/cardctl.h index ef6d6109..563b4fb0 100644 --- a/src/libopensc/cardctl.h +++ b/src/libopensc/cardctl.h @@ -215,6 +215,18 @@ enum { SC_CARDCTL_AUTHENTIC_SDO_DELETE, SC_CARDCTL_AUTHENTIC_SDO_STORE, SC_CARDCTL_AUTHENTIC_SDO_GENERATE, + + /* + * IAS/ECC + */ + SC_CARDCTL_IASECC_BASE = _CTL_PREFIX('E','C','C'), + SC_CARDCTL_IASECC_GET_FREE_KEY_REFERENCE, + SC_CARDCTL_IASECC_SDO_MAGIC = _CTL_PREFIX('S','D','O') | 'M', + SC_CARDCTL_IASECC_SDO_MAGIC_PUT_DATA = _CTL_PREFIX('S','D','O') | 'P', + SC_CARDCTL_IASECC_SDO_PUT_DATA, + SC_CARDCTL_IASECC_SDO_KEY_RSA_PUT_DATA, + SC_CARDCTL_IASECC_SDO_GET_DATA, + SC_CARDCTL_IASECC_SDO_GENERATE, }; enum { diff --git a/src/libopensc/cards.h b/src/libopensc/cards.h index 0c85428f..60565620 100644 --- a/src/libopensc/cards.h +++ b/src/libopensc/cards.h @@ -180,6 +180,11 @@ enum { SC_CARD_TYPE_JAVACARD_BASE = 24000, SC_CARD_TYPE_JAVACARD, + /* IAS/ECC cards */ + SC_CARD_TYPE_IASECC_BASE = 25000, + SC_CARD_TYPE_IASECC_GEMALTO, + SC_CARD_TYPE_IASECC_OBERTHUR, + SC_CARD_TYPE_IASECC_SAGEM, }; extern sc_card_driver_t *sc_get_default_driver(void); @@ -213,6 +218,7 @@ extern sc_card_driver_t *sc_get_ias_driver(void); extern sc_card_driver_t *sc_get_javacard_driver(void); extern sc_card_driver_t *sc_get_itacns_driver(void); extern sc_card_driver_t *sc_get_authentic_driver(void); +extern sc_card_driver_t *sc_get_iasecc_driver(); #ifdef __cplusplus } diff --git a/src/libopensc/ctx.c b/src/libopensc/ctx.c index 3acce456..80952d25 100644 --- a/src/libopensc/ctx.c +++ b/src/libopensc/ctx.c @@ -79,6 +79,7 @@ static const struct _sc_driver_entry internal_card_drivers[] = { #ifdef ENABLE_OPENSSL { "oberthur", (void *(*)(void)) sc_get_oberthur_driver }, { "authentic", (void *(*)(void)) sc_get_authentic_driver }, + { "iasecc", (void *(*)(void)) sc_get_iasecc_driver }, #endif { "belpic", (void *(*)(void)) sc_get_belpic_driver }, { "ias", (void *(*)(void)) sc_get_ias_driver }, diff --git a/src/pkcs15init/Makefile.am b/src/pkcs15init/Makefile.am index 07819a42..62ea8495 100644 --- a/src/pkcs15init/Makefile.am +++ b/src/pkcs15init/Makefile.am @@ -24,7 +24,10 @@ dist_pkgdata_DATA = \ rutoken_ecp.profile \ westcos.profile \ myeid.profile \ - authentic.profile + authentic.profile \ + iasecc.profile \ + ias_adele_admin1.profile ias_adele_admin2.profile ias_adele_common.profile \ + iasecc_generic_pki.profile iasecc_admin_eid.profile iasecc_generic_oberthur.profile AM_CPPFLAGS = -DSC_PKCS15_PROFILE_DIRECTORY=\"$(pkgdatadir)\" AM_CFLAGS = $(OPTIONAL_OPENSSL_CFLAGS) $(LTLIB_CFLAGS) @@ -39,4 +42,4 @@ libpkcs15init_la_SOURCES = \ pkcs15-asepcos.c pkcs15-rutoken.c pkcs15-entersafe.c \ pkcs15-rtecp.c pkcs15-myeid.c \ pkcs15-oberthur.c pkcs15-oberthur-awp.c \ - pkcs15-authentic.c + pkcs15-authentic.c pkcs15-iasecc.c diff --git a/src/pkcs15init/Makefile.mak b/src/pkcs15init/Makefile.mak index fe68c062..70467963 100644 --- a/src/pkcs15init/Makefile.mak +++ b/src/pkcs15init/Makefile.mak @@ -8,7 +8,7 @@ OBJECTS = pkcs15-lib.obj profile.obj \ pkcs15-setcos.obj pkcs15-incrypto34.obj \ pkcs15-muscle.obj pkcs15-asepcos.obj pkcs15-rutoken.obj \ pkcs15-entersafe.obj pkcs15-rtecp.obj pkcs15-westcos.obj \ - pkcs15-myeid.obj pkcs15-authentic.obj + pkcs15-myeid.obj pkcs15-authentic.obj pkcs15-iasecc.obj all: $(TARGET) diff --git a/src/pkcs15init/pkcs15-init.h b/src/pkcs15init/pkcs15-init.h index 8daea46f..2086ca77 100644 --- a/src/pkcs15init/pkcs15-init.h +++ b/src/pkcs15init/pkcs15-init.h @@ -389,6 +389,7 @@ extern struct sc_pkcs15init_operations *sc_pkcs15init_get_rtecp_ops(void); extern struct sc_pkcs15init_operations *sc_pkcs15init_get_westcos_ops(void); extern struct sc_pkcs15init_operations *sc_pkcs15init_get_myeid_ops(void); extern struct sc_pkcs15init_operations *sc_pkcs15init_get_authentic_ops(void); +extern struct sc_pkcs15init_operations *sc_pkcs15init_get_iasecc_ops(void); #ifdef __cplusplus } diff --git a/src/pkcs15init/pkcs15-lib.c b/src/pkcs15init/pkcs15-lib.c index 0a5be6c0..e287840d 100644 --- a/src/pkcs15init/pkcs15-lib.c +++ b/src/pkcs15init/pkcs15-lib.c @@ -153,6 +153,7 @@ static struct profile_operations { { "myeid", (void *) sc_pkcs15init_get_myeid_ops }, #ifdef ENABLE_OPENSSL { "authentic", (void *) sc_pkcs15init_get_authentic_ops }, + { "iasecc", (void *) sc_pkcs15init_get_iasecc_ops }, #endif { NULL, NULL }, };