* - Create and verify signatures
* - Derive keys (ECDH, KBKDF, KBKDF hybrid)
* - Get key chunk size
+ * - Create DBP key
+ * - Encrypt data with DBP key
*
* For more information on the Security Keys features and the macros, see HAL Security programming guides and tutorials.
*/
int (*get_max_chunk_size)(const hal_security_keys_context_s context,
size_t* chunk_size);
+ /** Create DBP key */
+ int (*create_key_dbp)(const bool destroy_old);
+
+ /** Encrypt data with DBP key */
+ int (*encrypt_data_dbp)(const hal_security_keys_dbp_scheme_version_e dbp_scheme_version,
+ const hal_security_keys_data_s data,
+ const hal_security_keys_data_s iv,
+ hal_security_keys_data_s* out);
+
} hal_backend_security_keys_funcs;
/**
HAL_SECURITY_KEYS_ERROR_VERIFICATION_FAILED, /**< Verification failed */
HAL_SECURITY_KEYS_ERROR_INTERNAL_ERROR, /**< Internal error */
HAL_SECURITY_KEYS_ERROR_TARGET_DEAD, /**< Target dead */
+ HAL_SECURITY_KEYS_ERROR_NO_KEY, /**< No key available */
+ HAL_SECURITY_KEYS_ERROR_NOT_PERMITTED, /**< Operation not permitted */
} hal_security_keys_error_e;
/**
bool no_separator; /**< Skip the zero octet separator between label and context */
} hal_security_keys_kbkdf_params_s;
+/**
+ * @brief Enumeration for DBP scheme version.
+ * @since HAL_MODULE_SECURITY_KEYS 1.0
+ */
+typedef enum {
+ HAL_SECURITY_KEYS_DBP_SCHEME_VERSION_1 = 1, /**< Database protection scheme version 1 (AES-256-CBC) */
+} hal_security_keys_dbp_scheme_version_e;
+
/**
* @}
*/
int hal_security_keys_get_max_chunk_size(const hal_security_keys_context_s context,
size_t* chunk_size);
+int hal_security_keys_create_key_dbp(const bool destroy_old);
+
+int hal_security_keys_encrypt_data_dbp(const hal_security_keys_dbp_scheme_version_e dbp_scheme_version,
+ const hal_security_keys_data_s data,
+ const hal_security_keys_data_s iv,
+ hal_security_keys_data_s* out);
+
#ifdef __cplusplus
}
#endif
return HAL_SECURITY_KEYS_ERROR_NOT_SUPPORTED;
return g_security_keys_funcs->get_max_chunk_size(context, chunk_size);
}
+
+EXPORT int hal_security_keys_create_key_dbp(const bool destroy_old)
+{
+ if (!g_security_keys_funcs)
+ return HAL_SECURITY_KEYS_ERROR_NOT_SUPPORTED;
+ return g_security_keys_funcs->create_key_dbp(destroy_old);
+}
+
+EXPORT int hal_security_keys_encrypt_data_dbp(const hal_security_keys_dbp_scheme_version_e dbp_scheme_version,
+ const hal_security_keys_data_s data,
+ const hal_security_keys_data_s iv,
+ hal_security_keys_data_s* out)
+{
+ if (!g_security_keys_funcs)
+ return HAL_SECURITY_KEYS_ERROR_NOT_SUPPORTED;
+ return g_security_keys_funcs->encrypt_data_dbp(dbp_scheme_version, data, iv, out);
+}