COMP3301 Assignment 2
OpenBSD ccid(4) USB CCID Driver
The task in this assignment is to develop an OpenBSD kernel driver to support devices implementing a simplified
Copyright By PowCoder代写 加微信 powcoder
version of the USB Integrated Circuit(s) Cards Interface Device (CCID) specification.
The purpose of this assignment is to demonstrate your ability to read and comprehend technical specifications,
and apply low level C programming skills to an operating system kernel environment.
You will be provided with the USB CCID specification, a virtual USB device on the COMP3301 virtual machines,
and userland code to test your driver functionality.
This is an individual assignment. You should feel free to discuss aspects of C programming and the assignment
specification with fellow students, and discuss OpenBSD and its APls in general terms. It is cheating to look at
another student’s code and it is cheating to allow your code to be seen or shared in printed or electronic form
You should note that all submitted code will be subject to automated checks for plagiarism and collusion. If we
detect plagiarism or collusion (outside of the base code given to everyone), formal misconduct proceedings will be
initiated against you. If you’re having trouble, seek help from a member of the teaching staff. Don’t be tempted to
copy another student’s code. You should read and understand the statements on student misconduct in the course
profile and on the school website: https://www.itee.ug.edu.au/itee-student-misconduct-including-plagiarism
Background
The USB CCID protocol provides a standard for a host to communicate with a smartcard reader, which in turn
communicates with an actual smartcard. Physically, a smartcard reader can be a standalone device that plugs
into a computer, or built into another device like a keyboard. Smartcards are then inserted into the reader so the
host can use the functionality they provide. Some devices combine the reader and smartcard functionality into a
single integrated device, eg, or Feitan security keys.
Smartcards provide cryptographic services that can be used for authentication, encryption, and signature generation
and verification. The USB CCID specification defines commands and responses that enable communication with
and use of these services by the host system. Examples uses of these services include using a smart card for
authentication or an extra factor during authentication, as an SSH key, or to cryptographically sign a payload
Several operating systems, including Windows, macOS, and Illumos, have implemented kernel drivers to support
CCID and smart card functionality. On OpenBSD and other UNIX-like operating systems such as Linux there is
no kernel support for CCID functionality. Instead, these systems often use the PCSC lite middleware. PCSC lite
provides a high level API for working with the service provided by smartcards, but ultimately ends up opening a
gen(4) device entry and communicate with a smartcard using the USB CCID protocol itself.
程序代写 CS代考 加微信: powcoder QQ: 1823890830 Email: powcoder@163.com