2 * Example fingerprint verification program, which verifies the right index
3 * finger which has been previously enrolled to disk.
4 * Copyright (C) 2007 Daniel Drake <dsd@gentoo.org>
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
25 #include <libfprint/fprint.h>
27 struct fp_dscv_dev
*discover_device(struct fp_dscv_dev
**discovered_devs
)
29 struct fp_dscv_dev
*ddev
= NULL
;
32 for (i
= 0; ddev
= discovered_devs
[i
]; i
++) {
33 struct fp_driver
*drv
= fp_dscv_dev_get_driver(ddev
);
34 printf("Found device claimed by %s driver\n",
35 fp_driver_get_full_name(drv
));
42 int verify(struct fp_dev
*dev
, struct fp_print_data
*data
)
48 printf("\nScan your finger now.\n");
49 r
= fp_verify_finger(dev
, data
);
51 printf("verification failed with error %d :(\n", r
);
55 case FP_VERIFY_NO_MATCH
:
56 printf("NO MATCH!\n");
62 printf("Scan didn't quite work. Please try again.\n");
64 case FP_VERIFY_RETRY_TOO_SHORT
:
65 printf("Swipe was too short, please try again.\n");
67 case FP_VERIFY_RETRY_CENTER_FINGER
:
68 printf("Please center your finger on the sensor and try again.\n");
70 case FP_VERIFY_RETRY_REMOVE_FINGER
:
71 printf("Please remove finger from the sensor and try again.\n");
80 struct fp_dscv_dev
*ddev
;
81 struct fp_dscv_dev
**discovered_devs
;
83 struct fp_print_data
*data
;
87 fprintf(stderr
, "Failed to initialize libfprint\n");
91 discovered_devs
= fp_discover_devs();
92 if (!discovered_devs
) {
93 fprintf(stderr
, "Could not discover devices\n");
97 ddev
= discover_device(discovered_devs
);
99 fprintf(stderr
, "No devices detected.\n");
103 dev
= fp_dev_open(ddev
);
104 fp_dscv_devs_free(discovered_devs
);
106 fprintf(stderr
, "Could not open device.\n");
110 printf("Opened device. Loading previously enrolled right index finger "
113 r
= fp_print_data_load(dev
, RIGHT_INDEX
, &data
);
115 fprintf(stderr
, "Failed to load fingerprint, error %d\n", r
);
116 fprintf(stderr
, "Did you remember to enroll your right index finger "
121 printf("Print loaded. Time to verify!\n");
126 printf("Verify again? [Y/n]? ");
127 fgets(buffer
, sizeof(buffer
), stdin
);
128 if (buffer
[0] != '\n' && buffer
[0] != 'y' && buffer
[0] != 'Y')
132 fp_print_data_free(data
);