FreeCalypso > hg > fc-sim-tools
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pcsc/connect.c Sun Mar 14 01:09:23 2021 +0000 @@ -0,0 +1,47 @@ +#include <string.h> +#include <strings.h> +#include <stdio.h> +#include <stdlib.h> +#include <pcsclite.h> +#include <winscard.h> + +extern SCARDCONTEXT hContext; +extern char *reader_list; +extern unsigned select_reader_num; + +SCARDHANDLE hCard; +char *selected_reader; + +select_reader_by_num() +{ + char *cp; + unsigned num; + + for (cp = reader_list, num = 0; *cp; num++) { + if (num == select_reader_num) { + selected_reader = cp; + return(0); + } + cp += strlen(cp) + 1; + } + fprintf(stderr, + "error: requested reader #%u, but only %u reader(s) found\n", + select_reader_num, num); + SCardReleaseContext(hContext); + exit(1); +} + +connect_to_card() +{ + LONG rv; + DWORD dwActiveProtocol; + + rv = SCardConnect(hContext, selected_reader, SCARD_SHARE_EXCLUSIVE, + SCARD_PROTOCOL_T0, &hCard, &dwActiveProtocol); + if (rv != SCARD_S_SUCCESS) { + fprintf(stderr, "SCardConnect: %s\n", pcsc_stringify_error(rv)); + SCardReleaseContext(hContext); + exit(1); + } + return(0); +}