opensc 0.18.0-beta.2

Deimos-like binding to libopensc (reduced extend required by external modules [driver/SecureMessaging])


To use this package, put the following dependency into your project's dependencies section:

dub.json
dub.sdl

Build state

Build Status Build status

Overview

D language: Deimos-like binding to headers of libopensc.so/opensc.dll, supporting the current 2 last/rolling OpenSC releases (i.e. version OpenSC-0.18.0, released May 16, 2018, and the previous version 0.17.0, released July 2017; up to version tag v0.15.16, OpenSC release version 0.16.0 released in June 2016 was supported). https://github.com/OpenSC/OpenSC

The OpenSC framework allows for providing e.g. a Smart Card Driver (and/or Secure Messaging/PKCS#15 module) as external shared object/DLL(s), if opensc.conf is configured accordingly.
This binding allows to implement in the D programming language.

category: Development Library | D language binding | Deimos header only binding (dub configuration "deimos")
category: Development Library | Development support library (with the difference to "deimos", that it must be compiled to make use of some additional toString methods; dub configuration "toString")

Not all OpenSC header content is covered, but what is required/useful for external modules and at least what is accessible from libopensc.so/opensc.dll.
(There are a few acos564 specific extensions to OpenSC content in files cards.d, cardctl.d, iso7816.d and opensc.d, all in scopes version(Haveacos564): Just disregard that like the compiler will do, if Your interest is in other than driver acos564). There are a few general extensions/deviations too, e.g. some enums are typed in the D binding in order to enable final switch usage, there are a few templates added like FreeEnumMembers in types.d, the templated enum log! in log.d (, a few template functions replaced the #defined-functions). Thus at it's heart it is no pure deimos binding any more but very close to it and still doesn't require compilation in dub configuration "deimos".

There is a tight dependency on how OpenSC's libopensc binary was build, thus reading info/options is recommended !

There are multiple reasons why code using this binding has to tell at compile time, to which exact libopensc binary version it's going to be linked/call at runtime. The version issue is managed by Dlang version identifier OPENSCVERSIONLATEST, that has to be removed from dub.json, if not linking against the latest libopensc.so/.dll.
More about OPENSCVERSIONLATEST and other version identifiers in info/options, but this info ahead:
v0.15.7 up to v0.15.13: OPENSCVERSIONLATEST refers to OpenSC release v0.16.0, the only other one usable (omitting OPENSCVERSIONLATEST) is opensc v0.15.0.
v0.15.14 up to v0.15.16: OPENSCVERSIONLATEST refers to OpenSC release v0.17.0,
Since v0.18.0, OPENSCVERSIONLATEST refers to OpenSC release v0.18.0.
Also, file C/releaseversion states, what is OPENSCVERSION_LATEST refering to, the OpenSC release, where the headers came from to be "translated".

The operating system support is limited to those OSs I have/know and can test (64 bit CPU: Linux/Windows), but may work for others too.

Last but not least my curiosity: In consideration of the fact, that this is a very specialized binding topic useful only for implementation of a driver etc., I had quite a lot of downloads via dub so far. Are You all happy, or have suggestions for enhancements? What are You doing with this binding? I didn't get any feedback/PR/issue so far; I would like to get some.

Authors:
  • Carsten Blüggel
Dependencies:
openssl
Versions:
0.18.0-beta.2 2018-May-17
0.18.0-beta.1 2018-May-17
0.15.16 2018-Apr-21
0.15.15 2018-Apr-19
0.15.14 2017-Sep-29
Show all 20 versions
Download Stats:
  • 0 downloads today

  • 0 downloads this week

  • 8 downloads this month

  • 289 downloads total

Score:
0.5
Short URL:
opensc.dub.pm