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:
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.
- Registered by Carsten Blüggel
- 0.18.0-beta.2 released a year ago
- Copyright © 2016-2018, Carsten Blüggel
0.19.0-beta.1 2019-Jul-07 0.19.0-alpha.1 2019-May-07 0.18.0-beta.4 2018-Jul-13 0.18.0-beta.3 2018-Jun-02 0.18.0-beta.2 2018-May-17
- Download Stats:
0 downloads today
0 downloads this week
1 downloads this month
301 downloads total
- Short URL: