Files
test/drivers/include/crypto/mailbox/sdrv_crypto_mailbox_basic_mgmt.h
2025-11-07 20:19:23 +08:00

197 lines
5.0 KiB
C

/**
* @file sdrv_crypto_mailbox_basic_mgmt.h
* @brief SemiDrive CRYPTO mailbox basic header file.
*
* @copyright Copyright (c) 2021 Semidrive Semiconductor.
* All rights reserved.
*/
#ifndef SDRV_CRYPTO_MAILBOX_BASIC_MGMT_H
#define SDRV_CRYPTO_MAILBOX_BASIC_MGMT_H
#include "sdrv_crypto_mailbox_common.h"
/**
* @brief CRYPTO cmd of get device information.
*/
typedef struct {
uint8_t cmd_id;
uint8_t info_len;
uint8_t key_id[2];
uint8_t device_info_ptr[4];
uint8_t aut_info_ptr[4];
} cmd_get_device_info_t;
/**
* @brief CRYPTO cmd of get device status.
*/
typedef struct {
uint8_t cmd_id;
uint8_t status_len;
uint8_t key_id[2];
uint8_t device_status_ptr[4];
uint8_t aut_info_ptr[4];
} cmd_get_device_status_t;
/**
* @brief CRYPTO cmd of get trng.
*/
typedef struct {
uint8_t cmd_id;
uint8_t rev1[3];
uint8_t random_ptr[4];
uint8_t random_len[4];
} cmd_rng_t;
/**
* @brief CRYPTO cmd of get Symmetric key.
*/
typedef struct {
uint8_t cmd_id;
uint8_t key_bytes;
uint8_t key_id[2];
uint8_t key_ptr[4];
uint8_t aut_info_ptr[4];
} cmd_generate_key_t;
/**
* @brief CRYPTO cmd of failure analysis.
*/
typedef struct {
uint8_t cmd_id;
uint8_t rev1[3];
uint8_t aut_info_ptr[4];
} cmd_failure_analysis_t;
/**
* @brief CRYPTO cmd of self destroy.
*/
typedef struct {
uint8_t cmd_id;
uint8_t rev1[3];
uint8_t aut_info_ptr[4];
} cmd_self_destroy_t;
/**
* @brief CRYPTO cmd of get trng.
*/
typedef struct {
uint8_t cmd_id;
uint8_t rev1[1];
uint8_t key_id[2];
uint8_t addr_ptr[4];
uint8_t aut_info_ptr[4];
} cmd_seip_jump_t;
/**
* @brief CRYPTO cmd of seip disable.
*/
typedef struct {
uint8_t cmd_id;
uint8_t rev1[15];
uint8_t pin_code[16];
} cmd_seip_disable_t;
/**
* @brief CRYPTO cmd of sensor clock configurations.
*/
typedef struct {
uint8_t cmd_id;
uint8_t rev1[3];
uint8_t reg_addr[4];
uint8_t reg_value[4];
uint8_t reg_max_value[4];
uint8_t reg_min_value[4];
} cmd_sensor_clk_cfg_t;
/**
* @brief get device info.
*
* This function get ehsm device info.
*
* @param[in] key_id internel key id, use for encrypt device info.
* @param[in] mac_buf for auth.
* @param[out] device_info_buff out buff.
* @return CMD_RETURN_SUCCESS or error code.
*/
sdrv_crypto_error_status_e cmd_get_device_info(uint16_t key_id,
uint32_t *device_info_buf,
uint8_t *mac_buf);
/**
* @brief get device status.
*
* This function get ehsm device status.
*
* @param[in] key_id internel key id, use for encrypt device status.
* @param[in] mac_buf for auth.
* @param[out] device_status_buff out buff.
* @return CMD_RETURN_SUCCESS or error code.
*/
sdrv_crypto_error_status_e cmd_get_device_status(uint16_t key_id,
uint32_t *device_status_buf,
uint8_t *mac_buf);
/**
* @brief get 256bit random key.
*
* This function get 256bit random key use for ske or hmac, key_id must != 0.
*
* @param[in] key_id internel key id, use for encrypt random key.
* @param[in] mac_buf for auth.
* @param[out] key out buff.
* @return CMD_RETURN_SUCCESS or error code.
*/
sdrv_crypto_error_status_e cmd_get_ske_hmac_256bit_key(uint16_t key_id,
uint32_t *key,
uint8_t *mac_buf);
/**
* @brief self destroy.
*
* This function can destroy SSRK, this cmd only work when seip on high secure
* status.
*
* @param[in] mac_buf for auth.
* @return CMD_RETURN_SUCCESS or error code.
*/
sdrv_crypto_error_status_e cmd_key_self_destroy(uint8_t *mac_buf);
/**
* @brief jump to addr run
*
* This function can set seip run addr, after set seip will jump to run
*
* @param[in] addr addr for seip run start
* @param[in] mac_buf for auth
* @return CMD_RETURN_SUCCESS or error code.
*/
sdrv_crypto_error_status_e cmd_jump(uint32_t addr, uint8_t *mac_buf);
/**
* @brief disable seip
*
* This function disable seip, pincode used for auth
*
* @return CMD_RETURN_SUCCESS or error code.
*/
sdrv_crypto_error_status_e cmd_disable_seip(void);
/**
* @brief set sensor clk
*
* This function config sensor clk, for protect seip
*
* @param[in] reg_addr sensor clk reg addr
* @param[in] reg_value value
* @param[in] reg_max_value max value
* @param[in] reg_min_value min value
* @return CMD_RETURN_SUCCESS or error code.
*/
sdrv_crypto_error_status_e cmd_sensor_clk_cfg(uint32_t reg_addr,
uint32_t reg_value,
uint32_t reg_max_value,
uint32_t reg_min_value);
#endif