Lines Matching refs:driver
72 /* In the driver table, location=0 means an entry that isn't used.
73 * No driver has a location of 0 because it's a reserved value
75 * a driver entry for location 0. */
88 const psa_se_drv_table_entry_t *driver)
90 return driver->methods;
94 psa_se_drv_table_entry_t *driver)
96 return &driver->u.context;
103 psa_se_drv_table_entry_t *driver = psa_get_se_driver_entry(lifetime);
105 *p_methods = (driver ? driver->methods : NULL);
108 *p_drv_context = (driver ? &driver->u.context : NULL);
110 return driver != NULL;
120 const psa_se_drv_table_entry_t *driver,
123 if (driver->location > PSA_MAX_SE_LOCATION) {
128 if (driver->u.internal.persistent_data_size > UINT32_MAX) {
133 *uid = PSA_CRYPTO_SE_DRIVER_ITS_UID_BASE + driver->location;
138 const psa_se_drv_table_entry_t *driver)
144 status = psa_get_se_driver_its_file_uid(driver, &uid);
149 /* Read the amount of persistent data that the driver requests.
157 (uint32_t) driver->u.internal.persistent_data_size,
158 driver->u.internal.persistent_data,
163 const psa_se_drv_table_entry_t *driver)
168 status = psa_get_se_driver_its_file_uid(driver, &uid);
177 (uint32_t) driver->u.internal.persistent_data_size,
178 driver->u.internal.persistent_data,
195 psa_se_drv_table_entry_t *driver,
203 if (driver->location != key_location) {
207 /* If the driver doesn't support key creation in any way, give up now. */
208 if (driver->methods->key_management == NULL) {
214 * the driver supports it. On a system with isolation,
218 driver->methods->key_management->p_validate_slot_number;
222 status = p_validate_slot_number(&driver->u.context,
223 driver->u.internal.persistent_data,
231 /* The application didn't tell us which slot to use. Let the driver
234 driver->methods->key_management->p_allocate;
238 status = p_allocate(&driver->u.context,
239 driver->u.internal.persistent_data,
246 psa_status_t psa_destroy_se_key(psa_se_drv_table_entry_t *driver,
254 * be able to destroy it. The only use case for a driver that
257 * destroy them. Hence, if the driver doesn't support destroying
259 if (driver->methods->key_management == NULL ||
260 driver->methods->key_management->p_destroy == NULL) {
263 status = driver->methods->key_management->p_destroy(
264 &driver->u.context,
265 driver->u.internal.persistent_data,
267 storage_status = psa_save_se_persistent_data(driver);
275 psa_se_drv_table_entry_t *driver = &driver_table[i];
276 if (driver->location == 0) {
279 const psa_drv_se_t *methods = psa_get_se_driver_methods(driver);
282 &driver->u.context,
283 driver->u.internal.persistent_data,
284 driver->location);
288 status = psa_save_se_persistent_data(driver);
313 /* Driver table entries are 0-initialized. 0 is not a valid driver
352 /* Load the driver's persistent data. On first use, the persistent