[v2,1/3] usb: gadget: ccid: add support for USB CCID Gadget Device
From: Marcus Folkesson <marcus.folkesson@gmail.com>
Date: 2018-05-28 09:33:06
Also in:
linux-doc, lkml
Hi Andrzej, Thank you for reviewing. On Mon, May 28, 2018 at 11:12:27AM +0200, Andrzej Pietrasiewicz wrote:
W dniu 28.05.2018 o 10:38, Marcus Folkesson pisze:quoted
Hi Andrzej, On Mon, May 28, 2018 at 09:04:51AM +0200, Andrzej Pietrasiewicz wrote:quoted
Mi Marcus, W dniu 26.05.2018 o 23:19, Marcus Folkesson pisze:quoted
Chip Card Interface Device (CCID) protocol is a USB protocol that allows a smartcard device to be connected to a computer via a card reader using a standard USB interface, without the need for each manufacturer of smartcards to provide its own reader or protocol. This gadget driver makes Linux show up as a CCID device to the host and let a userspace daemon act as the smartcard. This is useful when the Linux gadget itself should act as a cryptographic device or forward APDUs to an embedded smartcard device. Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com> ---quoted
+config USB_CONFIGFS_CCID + bool "Chip Card Interface Device (CCID)" + depends on USB_CONFIGFS + select USB_F_CCID + help + The CCID function driver provides generic emulation of a + Chip Card Interface Device (CCID). + + You will need a user space server talking to /dev/ccidg*, + since the kernel itself does not implement CCID/TPDU/APDU + protocol.Your function needs a userspace daemon to work. It seems you want to use FunctionFS for such a purpose instead of creating a new function. Andrzejquoted
quoted
+ since the kernel itself does not implement CCID/TPDU/APDUOops, the driver does handle CCID.Which parts of code do this handling?
My bad, I was thinking about the USB descriptors and endpoints setup. That is of cause not part of the CCID protocol.
Is there any kind of state machine usual for protocols? If the protocol is stateless then isn't it just a data format then?
The protocol is stateless.
Which part of this handling must be done in kernel and why? Does the said handling do anything other than forwarding the traffic between USB and a character device?
No, it forward the CCID messages to the character device to be handled by the application.
What is the character device used for? I know: read, write and poll. But why? To do what?
It is used for the application to fetch, interpret and then perform actions depending on commands.
quoted
Well, yes, It needs an application that perform the "smartcard operations", such as generate keys or sign data, as this depends on how it should be used. The actual smartcard operations could for example be in software, use a crypto engine in SoC or external HSM (Hardware Security Module). Without the application, the gadget shows up as a smart card reader with an unconnected smartcard.Does showing up as anything require anything other than merely providing USB descriptors?
I guess.
Andrzej
Thank you, Marcus --- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html