novotnyllc / MiFare

MiFare Classic support for UWP and Windows Desktop apps
MIT License
37 stars 29 forks source link

TestLogin & static key location map #6

Open f-israel opened 5 years ago

f-israel commented 5 years ago

Had some trouble when changing key (A or B doesn't matter) while keeping same instance/session. Even with calling abort() directly before this one didn't fix. I couldn't track down the error but stumbled over one case while searching for workaround: MiFareCard inherits IDisposable which enables the following usage: using(MiFareCard mCard = smartcard.e.SmartCard.CreateMiFareCard()){ }

Using this approach multiple times (for example as workaround for error named above) generated multiple keyLocationMaps for same underlying card reader. Without fully disposing the smartcard object the reader won't get in sync again. Just chaning it to static should do the trick.

While adding trace methodes I added TestLogin(...). As my project strongly depends on knowing which keytype-key combination was successful the integrated key failover (method Login(...) in MiFareStandardCardReaderBase) wasn't the right. The most of the method is plain copy&paste based on Login() just without key determination logic.

Hope this will be usefull for others as well.