Reputation: 21
I've recently implemented eVRC reader (for Slovak vehicle registration cards) using javax.smartcardio and Jevrc library ( https://github.com/grakic/jevrc ), which uses CommandAPDU to communicate with card. It works perfectly for older eVRC card, e.g. from years like 2018 or 2021.
However, I cannot cannot read new cards from last years (starting circa 2022 / 2023) this way. My client says there has been some change to these cards, but they're not technical/SW people and don't know any details.
Jevrc selects AID (A0000004564556522D3031) of card using these lines:
// EU eVRC AID
response = channel.transmit(new CommandAPDU(0x00, 0xA4, 0x04, 0x0C,
Utils.asByteArray(0xA0, 0x00, 0x00, 0x04, 0x56, 0x45, 0x56, 0x52, 0x2D, 0x30, 0x31)));
if (response.getSW() == 0x9000) {
specifyCurrentCountry(Country.EU);
return;
}
as seen here: https://github.com/grakic/jevrc/blob/master/jevrc/src/main/java/net/devbase/jevrc/EvrcCard.java#L176
00 A4 04 0C = Select AID command
A0000004564556522D3031 = eVRC AID
For older cards, response.getSW() is equal to 0x9000 and selection is successful. However, new cards return code 6a82, which is "file not found".
There must have been some change to AID or underlying technology / protocol / command syntax, but I cannot find what has changed.
Any information or link to related documentation (which I cannot find either) would be very welcome!
Upvotes: 2
Views: 128