- made establishpacechannel output independant from any byte order conversion.
little endian handling is done by the ccid-part. - pacelib exports PACE-functionality. git-svn-id: https://vsmartcard.svn.sourceforge.net/svnroot/vsmartcard@223 96b47cad-a561-4643-ad3b-153ac7d7599c
This commit is contained in:
@@ -1,2 +1,7 @@
|
|||||||
ACLOCAL_AMFLAGS = -I m4
|
ACLOCAL_AMFLAGS = -I m4
|
||||||
SUBDIRS = src m4 patches
|
SUBDIRS = src m4 patches
|
||||||
|
|
||||||
|
if WITH_PACE
|
||||||
|
pkgconfigdir = $(libdir)/pkgconfig
|
||||||
|
pkgconfig_DATA = libpace.pc
|
||||||
|
endif
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ AM_INIT_AUTOMAKE
|
|||||||
AC_PROG_CC
|
AC_PROG_CC
|
||||||
AC_PROG_INSTALL
|
AC_PROG_INSTALL
|
||||||
AC_PROG_LN_S
|
AC_PROG_LN_S
|
||||||
|
AC_PROG_LIBTOOL
|
||||||
AM_PROG_CC_C_O
|
AM_PROG_CC_C_O
|
||||||
PKG_PROG_PKG_CONFIG
|
PKG_PROG_PKG_CONFIG
|
||||||
|
|
||||||
@@ -62,34 +63,41 @@ AC_SUBST(PTHREAD_CFLAGS)
|
|||||||
AC_SUBST(PTHREAD_LIBS)
|
AC_SUBST(PTHREAD_LIBS)
|
||||||
AM_CONDITIONAL(WITH_CCID, test "${enable_ccid}" != "no")
|
AM_CONDITIONAL(WITH_CCID, test "${enable_ccid}" != "no")
|
||||||
|
|
||||||
|
|
||||||
|
PKG_CHECK_EXISTS([libssl],
|
||||||
|
[PKG_CHECK_MODULES([OPENSSL], [libssl])],
|
||||||
|
[AC_MSG_WARN([libssl not found by pkg-config])])
|
||||||
|
|
||||||
|
saved_CPPFLAGS="$CPPFLAGS"
|
||||||
|
saved_LIBS="$LIBS"
|
||||||
|
CPPFLAGS="$CPPFLAGS $OPENSSL_CFLAGS"
|
||||||
|
LIBS="$LDFLAGS $OPENSSL_LIBS"
|
||||||
|
|
||||||
|
AC_CHECK_HEADERS(openssl/evp.h, [], [ AC_MSG_ERROR([openssl/evp.h not found, install OpenSSL or use ./configure OPENSSL_CFLAGS=...]) ])
|
||||||
|
AC_MSG_CHECKING([for EVP_read_pw_string_min])
|
||||||
|
AC_TRY_LINK_FUNC(EVP_read_pw_string_min, [ AC_MSG_RESULT([yes]) ], [ AC_MSG_ERROR([OpenSSL not found, use ./configure OPENSSL_LIBS=...]) ])
|
||||||
|
|
||||||
# --enable-pace
|
# --enable-pace
|
||||||
AC_ARG_ENABLE(pace,
|
AC_ARG_ENABLE(pace,
|
||||||
AS_HELP_STRING([--enable-pace], [Enable Password Authenticated Connection Establishment (PACE)]),
|
AS_HELP_STRING([--enable-pace], [Enable Password Authenticated Connection Establishment (PACE)]),
|
||||||
[enable_pace="${enableval}"], [enable_pace=no])
|
[enable_pace="${enableval}"], [enable_pace=no])
|
||||||
if test "x$enable_pace" != xno ; then
|
if test "x$enable_pace" != xno ; then
|
||||||
PKG_CHECK_EXISTS([libssl],
|
|
||||||
[PKG_CHECK_MODULES([OPENSSL], [libssl])],
|
|
||||||
[AC_MSG_WARN([libssl not found by pkg-config])])
|
|
||||||
|
|
||||||
saved_CPPFLAGS="$CPPFLAGS"
|
|
||||||
saved_LIBS="$LIBS"
|
|
||||||
CPPFLAGS="$CPPFLAGS $OPENSSL_CFLAGS"
|
|
||||||
LIBS="$LDFLAGS $OPENSSL_LIBS"
|
|
||||||
|
|
||||||
AC_CHECK_HEADERS(openssl/pace.h, [], [ AC_MSG_ERROR([openssl/pace.h not found, install OpenPACE or use ./configure OPENSSL_CFLAGS=...]) ])
|
AC_CHECK_HEADERS(openssl/pace.h, [], [ AC_MSG_ERROR([openssl/pace.h not found, install OpenPACE or use ./configure OPENSSL_CFLAGS=...]) ])
|
||||||
AC_MSG_CHECKING([for parse_ef_card_access])
|
AC_MSG_CHECKING([for parse_ef_card_access])
|
||||||
AC_TRY_LINK_FUNC(parse_ef_card_access, [ AC_MSG_RESULT([yes]) ], [ AC_MSG_ERROR([OpenPACE not found, use ./configure OPENSSL_LIBS=...]) ])
|
AC_TRY_LINK_FUNC(parse_ef_card_access, [ AC_MSG_RESULT([yes]) ], [ AC_MSG_ERROR([OpenPACE not found, use ./configure OPENSSL_LIBS=...]) ])
|
||||||
|
|
||||||
CPPFLAGS="$saved_CPPFLAGS"
|
|
||||||
LIBS="$saved_LIBS"
|
|
||||||
|
|
||||||
enable_pace=yes
|
enable_pace=yes
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
CPPFLAGS="$saved_CPPFLAGS"
|
||||||
|
LIBS="$saved_LIBS"
|
||||||
AC_SUBST(OPENSSL_CFLAGS)
|
AC_SUBST(OPENSSL_CFLAGS)
|
||||||
AC_SUBST(OPENSSL_LIBS)
|
AC_SUBST(OPENSSL_LIBS)
|
||||||
|
|
||||||
AM_CONDITIONAL(WITH_PACE, test "${enable_pace}" != "no")
|
AM_CONDITIONAL(WITH_PACE, test "${enable_pace}" != "no")
|
||||||
AM_COND_IF(WITH_PACE, [AC_DEFINE(WITH_PACE, 1, [enable PACE support])])
|
AM_COND_IF(WITH_PACE, [AC_DEFINE(WITH_PACE, 1, [enable PACE support])])
|
||||||
|
|
||||||
|
|
||||||
# --enable-ccid-test
|
# --enable-ccid-test
|
||||||
AC_ARG_ENABLE(ccid-test,
|
AC_ARG_ENABLE(ccid-test,
|
||||||
AS_HELP_STRING([--enable-ccid-test], [Enable test of PACE smartcard reader]),
|
AS_HELP_STRING([--enable-ccid-test], [Enable test of PACE smartcard reader]),
|
||||||
@@ -166,8 +174,11 @@ PACE test for reader ${enable_ccid_test}
|
|||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
AC_CONFIG_FILES([Makefile
|
AC_CONFIG_FILES([
|
||||||
|
Makefile
|
||||||
m4/Makefile
|
m4/Makefile
|
||||||
patches/Makefile
|
patches/Makefile
|
||||||
src/Makefile])
|
src/Makefile
|
||||||
|
libpace.pc
|
||||||
|
])
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
EXTRA_DIST = ccid-1.3.11.patch ccid-1.3.13.patch \
|
EXTRA_DIST = ccid-1.3.11.patch ccid-1.3.13.patch \
|
||||||
pcsc-lite-1.5.5.patch pcsc-lite-1.6.1.patch \
|
pcsc-lite-1.5.5.patch pcsc-lite-1.6.1.patch \
|
||||||
pcsclite_trunk_r5063.patch
|
pcsclite_trunk_r5067.patch
|
||||||
|
|||||||
@@ -1,27 +1,51 @@
|
|||||||
IFDNFC_LIB = libifdnfc.$(DYN_LIB_EXT)
|
AM_CPPFLAGS = -I$(top_srcdir)/src/pace -I$(top_builddir)/src/pace
|
||||||
|
|
||||||
ccid_emulator_SOURCES = ccid.c usbstring.c usb.c binutil.c scutil.c
|
libpace_la_SOURCES = sm.c scutil.c pace.c pace_lib.c
|
||||||
ccid_emulator_LDADD = $(OPENSC_LIBS) $(PTHREAD_LIBS)
|
libpace_la_LIBADD = $(OPENSC_LIBS) $(OPENSSL_LIBS)
|
||||||
ccid_emulator_CFLAGS = $(OPENSC_CFLAGS) $(PTHREAD_CFLAGS)
|
libpace_la_CFLAGS = $(OPENSC_CFLAGS) $(OPENSSL_CFLAGS)
|
||||||
|
|
||||||
|
ccid_emulator_SOURCES = ccid.c usbstring.c usb.c binutil.c
|
||||||
|
ccid_emulator_LDADD = $(OPENSC_LIBS) $(OPENSSL_LIBS) $(PTHREAD_LIBS)
|
||||||
|
ccid_emulator_CFLAGS = $(OPENSC_CFLAGS) $(OPENSSL_CFLAGS) $(PTHREAD_CFLAGS)
|
||||||
|
|
||||||
ccid_test_SOURCES = ccid-test.c
|
ccid_test_SOURCES = ccid-test.c
|
||||||
ccid_test_LDADD = $(PCSC_LIBS)
|
ccid_test_LDADD = $(PCSC_LIBS)
|
||||||
ccid_test_CFLAGS = $(PCSC_CFLAGS)
|
ccid_test_CFLAGS = $(PCSC_CFLAGS)
|
||||||
|
|
||||||
pace_tool_SOURCES = sm.c pace-tool.c binutil.c scutil.c pace.c pace_lib.c
|
pace_tool_SOURCES = pace-tool.c binutil.c
|
||||||
pace_tool_LDADD = $(OPENSC_LIBS) $(OPENSSL_LIBS)
|
pace_tool_LDADD = $(OPENSC_LIBS) $(OPENSSL_LIBS) libpace.la
|
||||||
pace_tool_CFLAGS = $(OPENSC_CFLAGS) $(OPENSSL_CFLAGS)
|
pace_tool_CFLAGS = $(OPENSC_CFLAGS) $(OPENSSL_CFLAGS)
|
||||||
|
|
||||||
bin_PROGRAMS =
|
bin_PROGRAMS =
|
||||||
|
|
||||||
|
noinst_HEADERS = \
|
||||||
|
binutil.h \
|
||||||
|
ccid.h \
|
||||||
|
usbstring.h
|
||||||
|
|
||||||
if WITH_CCID
|
if WITH_CCID
|
||||||
bin_PROGRAMS += ccid-emulator ccid-test
|
bin_PROGRAMS += ccid-emulator ccid-test
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
if WITH_PACE
|
if WITH_PACE
|
||||||
bin_PROGRAMS += pace-tool
|
bin_PROGRAMS += pace-tool
|
||||||
|
ccid_emulator_LDADD += libpace.la
|
||||||
|
|
||||||
ccid_emulator_SOURCES += sm.c pace.c pace_lib.c
|
lib_LTLIBRARIES = libpace.la
|
||||||
ccid_emulator_LDADD += $(OPENSSL_LIBS)
|
|
||||||
ccid_emulator_CFLAGS += $(OPENSSL_CFLAGS)
|
nobase_include_HEADERS = \
|
||||||
|
pace/sm.h \
|
||||||
|
pace/pace.h \
|
||||||
|
pace/scutil.h \
|
||||||
|
pace/pace_lib.h
|
||||||
|
|
||||||
|
else
|
||||||
|
ccid_emulator_SOURCES += scutil.c sm.c
|
||||||
|
|
||||||
|
noinst_HEADERS += \
|
||||||
|
pace/sm.h \
|
||||||
|
pace/pace.h \
|
||||||
|
pace/scutil.h \
|
||||||
|
pace/pace_lib.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
noinst_HEADERS = binutil.h ccid.h pace.h pace_lib.h scutil.h sm.h usbstring.h
|
|
||||||
|
|||||||
@@ -27,14 +27,17 @@
|
|||||||
#include <opensc/log.h>
|
#include <opensc/log.h>
|
||||||
|
|
||||||
#include "ccid.h"
|
#include "ccid.h"
|
||||||
#include "sm.h"
|
|
||||||
#include "scutil.h"
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#ifdef WITH_PACE
|
#ifdef WITH_PACE
|
||||||
#include "pace.h"
|
#include <pace/pace.h>
|
||||||
|
#include <pace/sm.h>
|
||||||
|
#include <pace/scutil.h>
|
||||||
|
|
||||||
struct sm_ctx sctx;
|
static struct sm_ctx sctx;
|
||||||
|
|
||||||
|
#else
|
||||||
|
#include "pace/scutil.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static sc_context_t *ctx = NULL;
|
static sc_context_t *ctx = NULL;
|
||||||
@@ -178,7 +181,11 @@ static int get_rapdu(sc_apdu_t *apdu, size_t slot, __u8 **buf, size_t *resplen)
|
|||||||
}
|
}
|
||||||
*buf = apdu->resp;
|
*buf = apdu->resp;
|
||||||
|
|
||||||
|
#ifdef WITH_PACE
|
||||||
sc_result = sm_transmit_apdu(&sctx, card_in_slot[slot], apdu);
|
sc_result = sm_transmit_apdu(&sctx, card_in_slot[slot], apdu);
|
||||||
|
#else
|
||||||
|
sc_result = sc_transmit_apdu(&sctx, card_in_slot[slot], apdu);
|
||||||
|
#endif
|
||||||
if (sc_result < 0) {
|
if (sc_result < 0) {
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
@@ -1069,7 +1076,7 @@ perform_PC_to_RDR_Secure(const __u8 *in, size_t inlen, __u8** out, size_t *outle
|
|||||||
uint8_t encoding = bmFormatString & 2;
|
uint8_t encoding = bmFormatString & 2;
|
||||||
uint8_t blocksize = bmPINBlockString & 0xf;
|
uint8_t blocksize = bmPINBlockString & 0xf;
|
||||||
|
|
||||||
sc_debug(ctx, "PIN %s block (%d bytes) proberties:\n"
|
sc_debug(ctx, "PIN %s block (%d bytes) proberties:\n"
|
||||||
"\tminimum %d, maximum %d PIN digits\n"
|
"\tminimum %d, maximum %d PIN digits\n"
|
||||||
"\t%s PIN encoding, %s justification\n"
|
"\t%s PIN encoding, %s justification\n"
|
||||||
"\tsystem units are %s\n"
|
"\tsystem units are %s\n"
|
||||||
|
|||||||
@@ -19,8 +19,8 @@
|
|||||||
#ifndef _CCID_PACE_H
|
#ifndef _CCID_PACE_H
|
||||||
#define _CCID_PACE_H
|
#define _CCID_PACE_H
|
||||||
|
|
||||||
#include "pace_lib.h"
|
#include <pace/pace_lib.h>
|
||||||
#include "sm.h"
|
#include <pace/sm.h>
|
||||||
#include <opensc/opensc.h>
|
#include <opensc/opensc.h>
|
||||||
#include <openssl/bn.h>
|
#include <openssl/bn.h>
|
||||||
#include <openssl/pace.h>
|
#include <openssl/pace.h>
|
||||||
Reference in New Issue
Block a user