Driver context structure. More...
|const void *const||persistent_data|
|A read-only pointer to the driver's persistent data. More...|
|The size of |
|Driver transient data. More...|
Driver context structure.
Driver functions receive a pointer to this structure. Each registered driver has one instance of this structure.
Implementations must include the fields specified here and may include other fields.
|const void* const persistent_data|
A read-only pointer to the driver's persistent data.
Drivers typically use this persistent data to keep track of which slot numbers are available. This is only a guideline: drivers may use the persistent data for any purpose, keeping in mind the restrictions on when the persistent data is saved to storage: the persistent data is only saved after calling certain functions that receive a writable pointer to the persistent data.
The core allocates a memory buffer for the persistent data. The pointer is guaranteed to be suitably aligned for any data type, like a pointer returned by
malloc (but the core can use any method to allocate the buffer, not necessarily
The size of this buffer is in the
persistent_data_size field of this structure.
Before the driver is initialized for the first time, the content of the persistent data is all-bits-zero. After a driver upgrade, if the size of the persistent data has increased, the original data is padded on the right with zeros; if the size has decreased, the original data is truncated to the new size.
This pointer is to read-only data. Only a few driver functions are allowed to modify the persistent data. These functions receive a writable pointer. These functions are:
The PSA Cryptography core saves the persistent data from one session to the next. It does this before returning from API functions that call a driver method that is allowed to modify the persistent data, specifically:
|const size_t persistent_data_size|