What is a Driver?
A device driver is a widely used software component that helps hardware interact with operation systems (Linux, RTOS, etc.). The driver is responsible for the hardware available, and all issues about using the hardware are left to the applications.
This allows the driver provides an interface to communicate between the user space and the kernel space. In the Linux operation system, because hardware devices are treated like ordinary files, it is easier for the applications to interact with the device drivers. When a device is connected to the system, a device file is created in `/dev` directory.
Linux Kernel Crypto API Core
Crypto API is a cryptography framework in the Linux kernel, for various parts of the kernel that deal with cryptography. It provides many cryptographic algorithms, including all prevalent block ciphers and hash functions.
Since many platforms provide hardware acceleration of cryptographic algorithms, the crypto framework provides APIs to choose the vendor-defined driver that can bypass the software algorithm. In addition, when platforms are not implemented as ISA extensions, the crypto framework provides a software method to implement the cryptographic algorithms.
For user space applications, the crypto framework has two general methods to interface them. One is `AF_ALG,` which is a netlink-based interface that adds an AF_ALG address family, and the other is `/dev/crypto` which is a virtual device file.
PUF Crypto Driver
PUF Crypto Driver is similar to the ARM TrustZone CryptoCell (CCREE) driver, which supports hardware acceleration of many algorithms.
PUF Crypto Driver enables the PUFsecurity hardware components by registering kernel crypto API transformations that can communicate between kernel space and user space.
The driver further supports general bus protocol (AXI, APB, etc.) to access the PUFsecurity crypto component.
PUFsecurity Crypto Component
PUF-based Crypto Component is a dedicated hardware module that provides hard Graphic Data System (GDS) and soft Register Transfer Layer(RTL) macros to create a secure boundary for cryptographically secure processing. It accelerates cryptographic operations on a device and provides a reliable foundation to build a security sub-system on a chip.