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:


Build state

Build Status Build status


D language: Deimos-like binding to headers of, 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).

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
(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
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.

  • Carsten Blüggel
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

Short URL: