drop the connect_reader() function
This commit is contained in:
@@ -104,72 +104,6 @@ static bool sign_data(ykpiv_state*, unsigned char*, int, unsigned char, unsigned
|
||||
ASN1_BIT_STRING*, int);
|
||||
static int get_object_id(enum enum_slot slot);
|
||||
|
||||
static bool connect_reader(SCARDHANDLE *card, SCARDCONTEXT *context, const char *wanted, int verbose) {
|
||||
unsigned long num_readers = 0;
|
||||
unsigned long active_protocol;
|
||||
char reader_buf[1024];
|
||||
long rc;
|
||||
char *reader_ptr;
|
||||
|
||||
rc = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, context);
|
||||
if (rc != SCARD_S_SUCCESS) {
|
||||
fprintf (stderr, "error: SCardEstablishContext failed, rc=%08lx\n", rc);
|
||||
return false;
|
||||
}
|
||||
|
||||
rc = SCardListReaders(*context, NULL, NULL, &num_readers);
|
||||
if (rc != SCARD_S_SUCCESS) {
|
||||
fprintf (stderr, "error: SCardListReaders failed, rc=%08lx\n", rc);
|
||||
SCardReleaseContext(*context);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (num_readers > sizeof(reader_buf)) {
|
||||
num_readers = sizeof(reader_buf);
|
||||
}
|
||||
|
||||
rc = SCardListReaders(*context, NULL, reader_buf, &num_readers);
|
||||
if (rc != SCARD_S_SUCCESS)
|
||||
{
|
||||
fprintf (stderr, "error: SCardListReaders failed, rc=%08lx\n", rc);
|
||||
SCardReleaseContext(*context);
|
||||
return false;
|
||||
}
|
||||
|
||||
reader_ptr = reader_buf;
|
||||
if(wanted) {
|
||||
while(*reader_ptr != '\0') {
|
||||
if(strstr(reader_ptr, wanted)) {
|
||||
if(verbose) {
|
||||
fprintf(stderr, "using reader '%s' matching '%s'.\n", reader_ptr, wanted);
|
||||
}
|
||||
break;
|
||||
} else {
|
||||
if(verbose) {
|
||||
fprintf(stderr, "skipping reader '%s' since it doesn't match.\n", reader_ptr);
|
||||
}
|
||||
reader_ptr += strlen(reader_ptr) + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(*reader_ptr == '\0') {
|
||||
fprintf(stderr, "error: no useable reader found.\n");
|
||||
SCardReleaseContext(*context);
|
||||
return false;
|
||||
}
|
||||
|
||||
rc = SCardConnect(*context, reader_ptr, SCARD_SHARE_SHARED,
|
||||
SCARD_PROTOCOL_T1, card, &active_protocol);
|
||||
if(rc != SCARD_S_SUCCESS)
|
||||
{
|
||||
fprintf(stderr, "error: SCardConnect failed, rc=%08lx\n", rc);
|
||||
SCardReleaseContext(*context);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool select_applet(ykpiv_state *state, int verbose) {
|
||||
APDU apdu;
|
||||
unsigned char data[0xff];
|
||||
|
||||
Reference in New Issue
Block a user