Skip to content

Commit

Permalink
reader-pcsc: removed cardmod driver
Browse files Browse the repository at this point in the history
- pcsc driver takes over all the functionality
- no dedicated reader driver config values for cardmod, use application
  specific blocks to define a different behavior for the pcsc reader if
  needed
- removes legacy code; requiring at least libpcsclite 1.6.5

Fixes OpenSC#892
  • Loading branch information
frankmorgner committed Feb 23, 2017
1 parent 0ebe09f commit acb228b
Show file tree
Hide file tree
Showing 6 changed files with 281 additions and 578 deletions.
2 changes: 1 addition & 1 deletion configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -672,7 +672,7 @@ if test "${enable_pcsc}" = "yes"; then
if test "${WIN32}" != "yes"; then
PKG_CHECK_EXISTS(
[libpcsclite],
[PKG_CHECK_MODULES([PCSC], [libpcsclite])]
[PKG_CHECK_MODULES([PCSC], [libpcsclite >= 1.6.5])]
)
if test -z "${PCSC_CFLAGS}"; then
case "${host}" in
Expand Down
12 changes: 2 additions & 10 deletions etc/opensc.conf.in
Original file line number Diff line number Diff line change
Expand Up @@ -754,7 +754,7 @@ app onepin-opensc-pkcs11 {
}
}

# Used by OpenSC.tokend on Mac OS X only.
# Used by OpenSC.tokend on Mac OS X only
app tokend {
# The file to which debug log will be written
# Default: /tmp/opensc-tokend.log
Expand All @@ -770,14 +770,6 @@ app tokend {
}
}

# XXX: remove cardmod pseudodriver
# Used by OpenSC minidriver on Windows only
app cardmod {
# cardmod app name use special pcsc reader subset
# fix options for this reader driver here.

reader_driver cardmod {
# Enable pinpad if detected (PC/SC v2.0.2 Part 10)
# Default: true
# enable_pinpad = false;
}
}
17 changes: 6 additions & 11 deletions src/libopensc/ctx.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,21 +41,21 @@

int _sc_add_reader(sc_context_t *ctx, sc_reader_t *reader)
{
assert(reader != NULL);
if (!reader)
return SC_ERROR_INVALID_ARGUMENTS;
reader->ctx = ctx;
list_append(&ctx->readers, reader);
return SC_SUCCESS;
}

int _sc_delete_reader(sc_context_t *ctx, sc_reader_t *reader)
{
assert(reader != NULL);
if (!reader)
return SC_ERROR_INVALID_ARGUMENTS;
if (reader->ops->release)
reader->ops->release(reader);
if (reader->name)
free(reader->name);
if (reader->vendor)
free(reader->vendor);
free(reader->name);
free(reader->vendor);
list_delete(&ctx->readers, reader);
free(reader);
return SC_SUCCESS;
Expand Down Expand Up @@ -773,11 +773,6 @@ int sc_context_create(sc_context_t **ctx_out, const sc_context_param_t *parm)

#ifdef ENABLE_PCSC
ctx->reader_driver = sc_get_pcsc_driver();
/* XXX: remove cardmod pseudoreader driver */
#ifdef ENABLE_MINIDRIVER
if(strcmp(ctx->app_name, "cardmod") == 0)
ctx->reader_driver = sc_get_cardmod_driver();
#endif
#elif defined(ENABLE_CTAPI)
ctx->reader_driver = sc_get_ctapi_driver();
#elif defined(ENABLE_OPENCT)
Expand Down
1 change: 0 additions & 1 deletion src/libopensc/internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,6 @@ int sc_apdu_set_resp(sc_context_t *ctx, sc_apdu_t *apdu, const u8 *buf,
extern struct sc_reader_driver *sc_get_pcsc_driver(void);
extern struct sc_reader_driver *sc_get_ctapi_driver(void);
extern struct sc_reader_driver *sc_get_openct_driver(void);
extern struct sc_reader_driver *sc_get_cardmod_driver(void);

#ifdef __cplusplus
}
Expand Down
Loading

0 comments on commit acb228b

Please sign in to comment.