diff --git a/virtualsmartcard/configure.ac b/virtualsmartcard/configure.ac index 50ead4c..4ab0fd0 100644 --- a/virtualsmartcard/configure.ac +++ b/virtualsmartcard/configure.ac @@ -3,7 +3,7 @@ AC_PREREQ([2.64]) AC_INIT([Virtual Smart Card], [0.7], [http://sourceforge.net/projects/vsmartcard/support], [virtualsmartcard], [http://vsmartcard.sourceforge.net/virtualsmartcard/README.html]) -AC_CONFIG_SRCDIR([src/vpcd/ifd-vpcd.c]) +AC_CONFIG_SRCDIR([src/vpcd/vpcd.c]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([m4]) AM_INIT_AUTOMAKE @@ -47,7 +47,7 @@ m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) # --enable-libpcsclite AC_ARG_ENABLE(libpcsclite, - AC_HELP_STRING([--enable-libpcsclite=DIR],[Build a lightweight version of + AC_HELP_STRING([--enable-libpcsclite],[Build a lightweight version of libpcsclite, conflicts with PCSC-Lite @<:@default=no@:>@]), [libpcsclite="${enableval}"], [libpcsclite=no]) if test "${libpcsclite}" = no ; then @@ -102,8 +102,8 @@ if test "${libpcsclite}" = no ; then fi else builddir="`pwd`" - PCSC_CFLAGS="-DNO_LOG -I${builddir}/${srcdir}/src/libpcsclite/PCSC -I${builddir}/${srcdir}/src/libpcsclite" - PCSC_LIBS="$builddir/src/libpcsclite/libpcsclite.la" + PCSC_CFLAGS="-DNO_LOG -I${builddir}/${srcdir}/src/pcsclite-vpcd/PCSC -I${builddir}/${srcdir}/src/pcsclite-vpcd" + PCSC_LIBS="$builddir/src/pcsclite-vpcd/libpcsclite.la" AC_SUBST(PCSC_CFLAGS) AC_SUBST(PCSC_LIBS) fi @@ -226,7 +226,8 @@ AC_CONFIG_FILES([Makefile npa-example-data/dh/Makefile npa-example-data/ecdh/Makefile src/Makefile - src/libpcsclite/Makefile + src/pcsclite-vpcd/Makefile + src/ifd-vpcd/Makefile src/vpcd/Makefile src/vpicc/Makefile ]) diff --git a/virtualsmartcard/src/Makefile.am b/virtualsmartcard/src/Makefile.am index e209f27..0eaa864 100644 --- a/virtualsmartcard/src/Makefile.am +++ b/virtualsmartcard/src/Makefile.am @@ -1,5 +1,5 @@ -SUBDIRS = vpcd vpicc +SUBDIRS = vpcd vpicc ifd-vpcd if BUILD_LIBPCSCLITE -SUBDIRS += libpcsclite +SUBDIRS += pcsclite-vpcd endif diff --git a/virtualsmartcard/src/ifd-vpcd/Makefile.am b/virtualsmartcard/src/ifd-vpcd/Makefile.am new file mode 100644 index 0000000..48d2aa1 --- /dev/null +++ b/virtualsmartcard/src/ifd-vpcd/Makefile.am @@ -0,0 +1,52 @@ +IFDVPCD_LIB = $(LIB_PREFIX)ifdvpcd.$(DYN_LIB_EXT) + +libifdvpcd_la_SOURCES = ifd-vpcd.c +libifdvpcd_la_LDFLAGS = -no-undefined +libifdvpcd_la_CPPFLAGS = $(PCSC_CFLAGS) -I$(srcdir)/../vpcd +libifdvpcd_la_LIBADD = $(top_builddir)/src/vpcd/libvpcd.la + +noinst_HEADERS = ifd-vpcd.h + +EXTRA_DIST = reader.conf.in + + +do_subst = $(SED) \ + -e 's,[@]TARGET[@],$(serialdropdir)/$(IFDVPCD_LIB),g' \ + -e 's,[@]VPCDHOST[@],$(vpcdhost),g' + + +if BUILD_LIBPCSCLITE + +noinst_LTLIBRARIES = libifdvpcd.la + +ifd-vpcd.c: pcsclite.h + +.PHONY: pcsclite.h +pcsclite.h: + $(MAKE) -C $(builddir)/../pcsclite-vpcd pcsclite.h + +else + +libifdvpcd_la_LIBADD += $(PCSC_LIBS) + +lib_LTLIBRARIES = libifdvpcd.la + +install: install_libifdvpcd + +install_libifdvpcd: libifdvpcd.la reader.conf.in + $(mkinstalldirs) $(DESTDIR)$(serialdropdir) + $(LIBTOOL) --mode=install cp .libs/$(IFDVPCD_LIB) $(DESTDIR)$(serialdropdir)/$(IFDVPCD_LIB).$(VERSION) + (cd $(DESTDIR)$(serialdropdir) && \ + $(LN_S) -f $(IFDVPCD_LIB).$(VERSION) $(IFDVPCD_LIB)) + $(mkinstalldirs) $(DESTDIR)$(serialconfdir) + $(do_subst) < $(srcdir)/reader.conf.in > $(DESTDIR)$(serialconfdir)/vpcd + + +uninstall: uninstall_libifdvpcd + +uninstall_libifdvpcd: + rm -f $(DESTDIR)$(serialdropdir)/$(IFDVPCD_LIB).$(VERSION) \ + $(DESTDIR)$(serialdropdir)/$(IFDVPCD_LIB) \ + $(DESTDIR)$(serialconfdir)/vpcd + +endif diff --git a/virtualsmartcard/src/vpcd/ifd-vpcd.c b/virtualsmartcard/src/ifd-vpcd/ifd-vpcd.c similarity index 100% rename from virtualsmartcard/src/vpcd/ifd-vpcd.c rename to virtualsmartcard/src/ifd-vpcd/ifd-vpcd.c diff --git a/virtualsmartcard/src/vpcd/ifd-vpcd.h b/virtualsmartcard/src/ifd-vpcd/ifd-vpcd.h similarity index 100% rename from virtualsmartcard/src/vpcd/ifd-vpcd.h rename to virtualsmartcard/src/ifd-vpcd/ifd-vpcd.h diff --git a/virtualsmartcard/src/vpcd/reader.conf.in b/virtualsmartcard/src/ifd-vpcd/reader.conf.in similarity index 100% rename from virtualsmartcard/src/vpcd/reader.conf.in rename to virtualsmartcard/src/ifd-vpcd/reader.conf.in diff --git a/virtualsmartcard/src/libpcsclite/Makefile.am b/virtualsmartcard/src/pcsclite-vpcd/Makefile.am similarity index 88% rename from virtualsmartcard/src/libpcsclite/Makefile.am rename to virtualsmartcard/src/pcsclite-vpcd/Makefile.am index 84993cf..32c632c 100644 --- a/virtualsmartcard/src/libpcsclite/Makefile.am +++ b/virtualsmartcard/src/pcsclite-vpcd/Makefile.am @@ -2,10 +2,10 @@ EXTRA_DIST = PCSC/pcsclite.h.in libpcsclite.pc.in lib_LTLIBRARIES = libpcsclite.la -libpcsclite_la_CPPFLAGS = $(PCSC_CFLAGS) -I$(srcdir)/../vpcd +libpcsclite_la_CPPFLAGS = $(PCSC_CFLAGS) -I$(srcdir)/../ifd-vpcd -I$(srcdir)/../vpcd libpcsclite_la_LDFLAGS = -no-undefined libpcsclite_la_SOURCES = winscard.c debug.c strlcpy.c error.c -libpcsclite_la_LIBADD = $(top_builddir)/src/vpcd/libvpcd.la +libpcsclite_la_LIBADD = $(top_builddir)/src/ifd-vpcd/libifdvpcd.la noinst_HEADERS = pcsclite.h strlcpycat.h misc.h diff --git a/virtualsmartcard/src/pcsclite-vpcd/PCSC/debug.c b/virtualsmartcard/src/pcsclite-vpcd/PCSC/debug.c new file mode 100644 index 0000000..cc820b0 --- /dev/null +++ b/virtualsmartcard/src/pcsclite-vpcd/PCSC/debug.c @@ -0,0 +1,132 @@ +/* + * MUSCLE SmartCard Development ( http://www.linuxnet.com ) + * + * Copyright (C) 1999-2002 + * David Corcoran + * Copyright (C) 2002-2011 + * Ludovic Rousseau + * + * $Id: debug.c 6551 2013-03-06 13:44:17Z rousseau $ + */ + +/** + * @file + * @brief This handles debugging for libpcsclite. + */ + +#include "config.h" +#include +#include +#include +#include +#include + +#include "debuglog.h" +#include "strlcpycat.h" + +#define DEBUG_BUF_SIZE 2048 + +#ifdef NO_LOG + +void log_msg(const int priority, const char *fmt, ...) +{ + (void)priority; + (void)fmt; +} + +#else + +/** default level is quiet to avoid polluting fd 2 (possibly NOT stderr) */ +static char LogLevel = PCSC_LOG_CRITICAL+1; + +static signed char LogDoColor = 0; /**< no color by default */ + +static void log_init(void) +{ + char *e; + +#ifdef LIBPCSCLITE + e = getenv("PCSCLITE_DEBUG"); +#else + e = getenv("MUSCLECARD_DEBUG"); +#endif + if (e) + LogLevel = atoi(e); + + /* log to stderr and stderr is a tty? */ + if (isatty(fileno(stderr))) + { + char *term; + + term = getenv("TERM"); + if (term) + { + const char *terms[] = { "linux", "xterm", "xterm-color", "Eterm", "rxvt", "rxvt-unicode" }; + unsigned int i; + + /* for each known color terminal */ + for (i = 0; i < sizeof(terms) / sizeof(terms[0]); i++) + { + /* we found a supported term? */ + if (0 == strcmp(terms[i], term)) + { + LogDoColor = 1; + break; + } + } + } + } +} /* log_init */ + +void log_msg(const int priority, const char *fmt, ...) +{ + char DebugBuffer[DEBUG_BUF_SIZE]; + va_list argptr; + static int is_initialized = 0; + + if (!is_initialized) + { + log_init(); + is_initialized = 1; + } + + if (priority < LogLevel) /* log priority lower than threshold? */ + return; + + va_start(argptr, fmt); + (void)vsnprintf(DebugBuffer, DEBUG_BUF_SIZE, fmt, argptr); + va_end(argptr); + + { + if (LogDoColor) + { + const char *color_pfx = "", *color_sfx = "\33[0m"; + + switch (priority) + { + case PCSC_LOG_CRITICAL: + color_pfx = "\33[01;31m"; /* bright + Red */ + break; + + case PCSC_LOG_ERROR: + color_pfx = "\33[35m"; /* Magenta */ + break; + + case PCSC_LOG_INFO: + color_pfx = "\33[34m"; /* Blue */ + break; + + case PCSC_LOG_DEBUG: + color_pfx = ""; /* normal (black) */ + color_sfx = ""; + break; + } + fprintf(stderr, "%s%s%s\n", color_pfx, DebugBuffer, color_sfx); + } + else + fprintf(stderr, "%s\n", DebugBuffer); + } +} /* log_msg */ + +#endif + diff --git a/virtualsmartcard/src/libpcsclite/PCSC/debuglog.h b/virtualsmartcard/src/pcsclite-vpcd/PCSC/debuglog.h similarity index 100% rename from virtualsmartcard/src/libpcsclite/PCSC/debuglog.h rename to virtualsmartcard/src/pcsclite-vpcd/PCSC/debuglog.h diff --git a/virtualsmartcard/src/libpcsclite/PCSC/ifdhandler.h b/virtualsmartcard/src/pcsclite-vpcd/PCSC/ifdhandler.h similarity index 100% rename from virtualsmartcard/src/libpcsclite/PCSC/ifdhandler.h rename to virtualsmartcard/src/pcsclite-vpcd/PCSC/ifdhandler.h diff --git a/virtualsmartcard/src/libpcsclite/PCSC/pcsclite.h b/virtualsmartcard/src/pcsclite-vpcd/PCSC/pcsclite.h similarity index 100% rename from virtualsmartcard/src/libpcsclite/PCSC/pcsclite.h rename to virtualsmartcard/src/pcsclite-vpcd/PCSC/pcsclite.h diff --git a/virtualsmartcard/src/libpcsclite/PCSC/pcsclite.h.in b/virtualsmartcard/src/pcsclite-vpcd/PCSC/pcsclite.h.in similarity index 100% rename from virtualsmartcard/src/libpcsclite/PCSC/pcsclite.h.in rename to virtualsmartcard/src/pcsclite-vpcd/PCSC/pcsclite.h.in diff --git a/virtualsmartcard/src/libpcsclite/PCSC/winscard.h b/virtualsmartcard/src/pcsclite-vpcd/PCSC/winscard.h similarity index 100% rename from virtualsmartcard/src/libpcsclite/PCSC/winscard.h rename to virtualsmartcard/src/pcsclite-vpcd/PCSC/winscard.h diff --git a/virtualsmartcard/src/libpcsclite/PCSC/wintypes.h b/virtualsmartcard/src/pcsclite-vpcd/PCSC/wintypes.h similarity index 100% rename from virtualsmartcard/src/libpcsclite/PCSC/wintypes.h rename to virtualsmartcard/src/pcsclite-vpcd/PCSC/wintypes.h diff --git a/virtualsmartcard/src/libpcsclite/debug.c b/virtualsmartcard/src/pcsclite-vpcd/debug.c similarity index 100% rename from virtualsmartcard/src/libpcsclite/debug.c rename to virtualsmartcard/src/pcsclite-vpcd/debug.c diff --git a/virtualsmartcard/src/libpcsclite/error.c b/virtualsmartcard/src/pcsclite-vpcd/error.c similarity index 100% rename from virtualsmartcard/src/libpcsclite/error.c rename to virtualsmartcard/src/pcsclite-vpcd/error.c diff --git a/virtualsmartcard/src/libpcsclite/libpcsclite.pc.in b/virtualsmartcard/src/pcsclite-vpcd/libpcsclite.pc.in similarity index 100% rename from virtualsmartcard/src/libpcsclite/libpcsclite.pc.in rename to virtualsmartcard/src/pcsclite-vpcd/libpcsclite.pc.in diff --git a/virtualsmartcard/src/libpcsclite/misc.h b/virtualsmartcard/src/pcsclite-vpcd/misc.h similarity index 100% rename from virtualsmartcard/src/libpcsclite/misc.h rename to virtualsmartcard/src/pcsclite-vpcd/misc.h diff --git a/virtualsmartcard/src/libpcsclite/strlcpy.c b/virtualsmartcard/src/pcsclite-vpcd/strlcpy.c similarity index 100% rename from virtualsmartcard/src/libpcsclite/strlcpy.c rename to virtualsmartcard/src/pcsclite-vpcd/strlcpy.c diff --git a/virtualsmartcard/src/libpcsclite/strlcpycat.h b/virtualsmartcard/src/pcsclite-vpcd/strlcpycat.h similarity index 100% rename from virtualsmartcard/src/libpcsclite/strlcpycat.h rename to virtualsmartcard/src/pcsclite-vpcd/strlcpycat.h diff --git a/virtualsmartcard/src/libpcsclite/winscard.c b/virtualsmartcard/src/pcsclite-vpcd/winscard.c similarity index 100% rename from virtualsmartcard/src/libpcsclite/winscard.c rename to virtualsmartcard/src/pcsclite-vpcd/winscard.c diff --git a/virtualsmartcard/src/vpcd/Makefile.am b/virtualsmartcard/src/vpcd/Makefile.am index 56095e3..cbc79d0 100644 --- a/virtualsmartcard/src/vpcd/Makefile.am +++ b/virtualsmartcard/src/vpcd/Makefile.am @@ -1,51 +1,6 @@ -VPCD_LIB = $(LIB_PREFIX)vpcd.$(DYN_LIB_EXT) - -libvpcd_la_SOURCES = ifd-vpcd.c vpcd.c lock.c +libvpcd_la_SOURCES = vpcd.c lock.c libvpcd_la_LDFLAGS = -no-undefined -libvpcd_la_CFLAGS = $(PCSC_CFLAGS) noinst_HEADERS = vpcd.h lock.h -EXTRA_DIST = reader.conf.in - - -do_subst = $(SED) \ - -e 's,[@]TARGET[@],$(serialdropdir)/$(VPCD_LIB),g' \ - -e 's,[@]VPCDHOST[@],$(vpcdhost),g' - - -if BUILD_LIBPCSCLITE - noinst_LTLIBRARIES = libvpcd.la - -ifd-vpcd.c: pcsclite.h - -.PHONY: pcsclite.h -pcsclite.h: - $(MAKE) -C $(builddir)/../libpcsclite pcsclite.h - -else - -libvpcd_la_LIBADD = $(PCSC_LIBS) - -lib_LTLIBRARIES = libvpcd.la - -install: install_libvpcd - -install_libvpcd: libvpcd.la reader.conf.in - $(mkinstalldirs) $(DESTDIR)$(serialdropdir) - $(LIBTOOL) --mode=install cp .libs/$(VPCD_LIB) $(DESTDIR)$(serialdropdir)/$(VPCD_LIB).$(VERSION) - (cd $(DESTDIR)$(serialdropdir) && \ - $(LN_S) -f $(VPCD_LIB).$(VERSION) $(VPCD_LIB)) - $(mkinstalldirs) $(DESTDIR)$(serialconfdir) - $(do_subst) < $(srcdir)/reader.conf.in > $(DESTDIR)$(serialconfdir)/vpcd - - -uninstall: uninstall_libvpcd - -uninstall_libvpcd: - rm -f $(DESTDIR)$(serialdropdir)/$(VPCD_LIB).$(VERSION) \ - $(DESTDIR)$(serialdropdir)/$(VPCD_LIB) \ - $(DESTDIR)$(serialconfdir)/vpcd - -endif