Skip to content
This repository has been archived by the owner on Dec 4, 2017. It is now read-only.
priitr edited this page Oct 2, 2015 · 13 revisions

Welcome to the smartcardpp wiki!

Logging / Debugging in esteid drivers

To turn on logging set SMARTCARDPP_DEBUG enviroment variable and set it`s 
value to 1.
Log file will be written to users temp folder.

Turn off PINPAD detection

Set SMARTCARDPP_NOPINPAD = 1 enviroment variable

Turn on extended APDU

Set SMARTCARDPP_EXTAPDU = 1 enviroment variable Error 0x0000045d is returned when used with reader without extended APDU support.

Card type detection(Currently used version)

To correctly identify a specific EstEID card, one should first use the AID (application identifier) to select the proper application. Secondly, the specific application version stored on the card should be queried. See EstEID chip specifications http://www.id.ee/public/TB-SPEC-EstEID-Chip-App-v3.4.pdf and http://www.id.ee/public/TB-SPEC-EstEID-Chip-App-v3_5-20140327.pdf for detail.

Smartcardpp API exposes all the necessary methods for these commands. It is the responsibility of the caller to further identify the card when needed (see sendApplicationIdentifierV3, sendApplicationIdentifierV3_5 and getApplicationVersion methods in the API)

Note that currently smartcardpp internally uses only card recognition by ATR (due to the fact that there is no need to for additional APDU commands). Smartcardpp tries to guess the card version according to warm or cold ATR issued by the card.

An example of the identification process by ATR

Retrieve ATR.
- ``If ATR is ESTEID_V1_COLD_ATR then card version is set to VER_1_0``
- ``If ATR is ESTEID_V1_WARM_ATR then card version is set to VER_1_0``
- ``If ATR is ESTEID_V1_2007_COLD_ATR then card version is set to VER_1_0_2007``
- ``If ATR is ESTEID_V1_2007_WARM_ATR then card version is set to VER_1_0_2007``
- ``If ATR is ESTEID_V1_1_COLD_ATR then card version is set to VER_1_1 (Digi-ID)``
- ``If ATR is ESTEID_V3_COLD_DEV1_ATR or ESTEID_V3_WARM_DEV1_ATR or ESTEID_V3_WARM_DEV2_ATR or ATR is ESTEID_V3_WARM_DEV3_ATR then card version is set to VER_3_4``
- ``If ATR is ESTEID_V35_COLD_DEV1_ATR or ESTEID_V35_COLD_DEV2_ATR or ESTEID_V35_COLD_DEV3_ATR or ESTEID_V35_WARM_ATR then card version is set to VER_3_5``

If card version detection failed, card version is set to VER_INVALID. This does not block usage of library function, and it is assumed that card is EstEID card with 2K key. Additionaly to this in some places(EstEIDManager::readCardID and EstEIDManager::readCardName) first symbol of Card Number is checked to determine if it is a Digi-ID card or ordinary ID-Card

Links

https://github.com/OpenSC/OpenSC/wiki/Estonian-eID-(EstEID)