diff --git a/tool/yubico-piv-tool.c b/tool/yubico-piv-tool.c index 0a34c08..275bc9d 100644 --- a/tool/yubico-piv-tool.c +++ b/tool/yubico-piv-tool.c @@ -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];