comparison pcsc/connect.c @ 1:f7a03e53bb2c

fc-pcsc-atr ported over
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 14 Mar 2021 01:09:23 +0000
parents
children
comparison
equal deleted inserted replaced
0:f4479a0d4cea 1:f7a03e53bb2c
1 #include <string.h>
2 #include <strings.h>
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include <pcsclite.h>
6 #include <winscard.h>
7
8 extern SCARDCONTEXT hContext;
9 extern char *reader_list;
10 extern unsigned select_reader_num;
11
12 SCARDHANDLE hCard;
13 char *selected_reader;
14
15 select_reader_by_num()
16 {
17 char *cp;
18 unsigned num;
19
20 for (cp = reader_list, num = 0; *cp; num++) {
21 if (num == select_reader_num) {
22 selected_reader = cp;
23 return(0);
24 }
25 cp += strlen(cp) + 1;
26 }
27 fprintf(stderr,
28 "error: requested reader #%u, but only %u reader(s) found\n",
29 select_reader_num, num);
30 SCardReleaseContext(hContext);
31 exit(1);
32 }
33
34 connect_to_card()
35 {
36 LONG rv;
37 DWORD dwActiveProtocol;
38
39 rv = SCardConnect(hContext, selected_reader, SCARD_SHARE_EXCLUSIVE,
40 SCARD_PROTOCOL_T0, &hCard, &dwActiveProtocol);
41 if (rv != SCARD_S_SUCCESS) {
42 fprintf(stderr, "SCardConnect: %s\n", pcsc_stringify_error(rv));
43 SCardReleaseContext(hContext);
44 exit(1);
45 }
46 return(0);
47 }