Adding PINPAD/Keypad and LCD support to smartcard driver

Olivier 0 Reputation points
2024-11-29T10:26:25.1666667+00:00

Hello all,

I am developing a smartcard device driver for my device. My device has an integrated pinpad to securely enter smart card pin.

There is a smartcard reader specification defining how to support it: Interoperability Specification for ICCs and Personal Computer Systems Part 10 IFDs with Secure PIN Entry Capabilities: http://pcscworkgroup.com/Download/Specifications/pcsc10_v2.02.09.pdf

I have implemented such support in my Linux driver but I cannot figure out how to make Windows knows my smartcard reader support it.
I went through the Windows driver documentation for smartcard: https://learn.microsoft.com/en-us/windows-hardware/drivers/smartcard/
I would have expected to find some info in [SCARD_READER_CAPABILITIES](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/smclib/ns-smclib-_scard_reader_capabilities): https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/smclib/ns-smclib-_scard_reader_capabilities

While tracing the calls from Windows to my smartcard reader driver, I cannot see anything that could tell me that I could notify Windows of pinpad support.

Anyone know how to tell Windows that my driver support pinpad?

Windows
Windows
A family of Microsoft operating systems that run across personal computers, tablets, laptops, phones, internet of things devices, self-contained mixed reality headsets, large collaboration screens, and other devices.
5,652 questions
Windows 10 Security
Windows 10 Security
Windows 10: A Microsoft operating system that runs on personal computers and tablets.Security: The precautions taken to guard against crime, attack, sabotage, espionage, or another threat.
2,964 questions
Windows Driver Kit (WDK)
Windows Driver Kit (WDK)
A set of Microsoft tools that are used to develop, test, and deploy Windows drivers.
137 questions
0 comments No comments
{count} votes

2 answers

Sort by: Most helpful
  1. Olivier 0 Reputation points
    2024-12-02T09:19:31.1066667+00:00

    My smartcard reader driver never receives CM_IOCTL_GET_FEATURE_REQUEST that is used on Linux/MacOS to know if the smartcard reader has a display. This IOCTL is also defined in Windows headers.

    From this message https://github.com/OpenSC/OpenSC/issues/2964#issuecomment-1864017382 it is said "Windows simply don't support the CCID extension for PIN entry (and never did)"

    0 comments No comments

  2. Olivier 0 Reputation points
    2024-12-06T11:10:04.71+00:00

    I did try to also use USB interface for SCARD_ATTR_CHANNEL_ID. I was using vendor-defined interface - see https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardgetattrib

    But still no IOCTL_SMARTCARD_GET_FEATURE_REQUEST...

    This IOCTL is part of Windows smartcard reader header: https://github.com/tpn/winsdk-10/blob/master/Include/10.0.10240.0/shared/winsmcrd.h#L126 so I guess I am using the right value.

    0 comments No comments

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.