Tuesday, October 9, 2012

Hacking on fingerprinting again or AES2550/AES2810 driver for libfprint

Back in 2007 I participated in driver development for AuthenTec AES2501 scanner, driver was later merged into libfprint project. I didn't hack much on libfprint, just sent few bugfixes, but recently AuthenTec announced that they're willing to send fingerprint scanners for opensource enthusiasts who wants to develop driver for those scanners. So far, so good... I've wrote a letter to AuthenTec and they proposed to send AES2550 or AES2810 scanner to me. I chose AES2550. Actually, AES2550 and AES2810 are pretty same (AES2550 driver should work with AES2810), the only difference is missing crypto engine on AES2550 (who needs cryptography anyway? :))

So, I've got parcel with scanner in August, but unfortunately had no spare time for hacking, I only coded driver stub and read datasheet from AuthenTec.




So, in September/October I've spent few (5-6?) nights hacking on this driver, and finally got it working on my AES2550. Image quality is much better then on my AES2501. Driver lacks crypto features for AES2810 and external flash support for both devices. Anyway, libfprint has no external flash API yet, so there's some space for hacking :)



As usual, code is on my github page, branch aes2550-v2. Some testing is appreciated :)

P.S. Thanks to AuthenTec for opened specs and provided hardware! AuthenTec rocks!

Update: driver was merged into upstream, so you can use upstream libfprint repo

9 comments:

Pavel Borecki said...

Thank you! (aes2810 on HP 2530p)

Scott Pause said...

Thanks for this work. I'm a newb, using Ubuntu 12.10, and I'm unable to install following the INSTALL info.

I installed libtools and some other stuff it needed.

Now it says it needs NSS (CRYPTO). I can't figure out what needs to be installed for this. Any pointers?

Scott Pause said...

Nevermind, I followed your link and ended up with an Ubuntu PPA that got it for me.

Thanks for the driver!

Scott Pause said...

In a quick test I passed with 30+ minutia, but failed with 17. Are the specs for this key requirement available?

Vasily Khoruzhick said...

Scott, it's not about minutia count, there's match score, >=40 means match. But AFAIK you can see it only in debug logs (if libfprint was compiled with debug logs), it's not exported to users.

Scott Pause said...

Thanks! It seems it would be nice to have some control over this value (High, Med, Low) for permitting auth in a setting somewhere. I have no idea how that would be implemented or if possible/wise.

Andreas Schlemmer said...

Thank you!
aes2810 , HP elitebook 6930p

Arun Chauhan said...

Nice work. Thanks for great work. Is very helpfull.

I am trying to use

struct fp_img *fpi_img_new(size_t length)

function in my code. For this I need to add API_EXPORTED in front of the function. But one I try to call the function I need some header files error one by one. As this function is declared in fp_internal.h. I get an error like this function is not in the scope. What to do?

Vasily Khoruzhick said...

Arun Chauhan, it's internal API, it's available only for libfprint drivers and its internals, generic apps aren't supposed to use internal API