WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
KM

结构体

struct  uapi_drv_klad_clear_key_t
 klad送明文key时,明文key的结构。 更多...
 
struct  uapi_drv_klad_config_t
 Keyladder 根密钥类型选择。 更多...
 
struct  uapi_drv_klad_key_config_t
 Keyladder 工作密钥属性配置。 更多...
 
struct  uapi_drv_klad_key_secure_config_t
 key 的安全属性。 当加密工作模式为CBC_MAC时,dest_buf_sec_support和dest_buf_non_sec_support不能同时为false。 更多...
 
struct  uapi_drv_klad_attr_t
 Keyladder 配置属性。 更多...
 
struct  uapi_drv_klad_effective_key_t
 Keyladder硬件key参数配置。 更多...
 

枚举

enum  uapi_drv_keyslot_type_t { UAPI_DRV_KEYSLOT_TYPE_MCIPHER = 0 , UAPI_DRV_KEYSLOT_TYPE_HMAC , UAPI_DRV_KEYSLOT_TYPE_FLASH }
 keyslot 类型选择。 更多...
 
enum  uapi_drv_kdf_otp_key_t { UAPI_DRV_KDF_OTP_KEY_MRK1 = 0 , UAPI_DRV_KDF_OTP_KEY_USK , UAPI_DRV_KDF_OTP_KEY_RUSK }
 KDF 密钥派生时根密钥选择。 更多...
 
enum  uapi_drv_kdf_update_alg_t { UAPI_DRV_KDF_UPDATE_ALG_AES = 0 , UAPI_DRV_KDF_UPDATE_ALG_SM4 }
 KDF 密钥派生时对称算法选择。 更多...
 
enum  uapi_drv_kdf_hard_key_type_t {
  UAPI_DRV_KDF_HARD_KEY_TYPE_SBRK0 = 0x03000000 , UAPI_DRV_KDF_HARD_KEY_TYPE_SBRK1 , UAPI_DRV_KDF_HARD_KEY_TYPE_SBRK2 , UAPI_DRV_KDF_HARD_KEY_TYPE_ABRK0 ,
  UAPI_DRV_KDF_HARD_KEY_TYPE_ABRK1 , UAPI_DRV_KDF_HARD_KEY_TYPE_ABRK2 , UAPI_DRV_KDF_HARD_KEY_TYPE_DRK0 , UAPI_DRV_KDF_HARD_KEY_TYPE_DRK1 ,
  UAPI_DRV_KDF_HARD_KEY_TYPE_RDRK0 , UAPI_DRV_KDF_HARD_KEY_TYPE_RDRK1 , UAPI_DRV_KDF_HARD_KEY_TYPE_PSK , UAPI_DRV_KDF_HARD_KEY_TYPE_FDRK0 ,
  UAPI_DRV_KDF_HARD_KEY_TYPE_ODRK0 , UAPI_DRV_KDF_HARD_KEY_TYPE_ODRK1 , UAPI_DRV_KDF_HARD_KEY_TYPE_OARK0 , UAPI_DRV_KDF_HARD_KEY_TYPE_MDRK0 ,
  UAPI_DRV_KDF_HARD_KEY_TYPE_MDRK1 , UAPI_DRV_KDF_HARD_KEY_TYPE_MDRK2 , UAPI_DRV_KDF_HARD_KEY_TYPE_MDRK3 , UAPI_DRV_KDF_HARD_KEY_TYPE_ABRK_REE ,
  UAPI_DRV_KDF_HARD_KEY_TYPE_ABRK_TEE , UAPI_DRV_KDF_HARD_KEY_TYPE_RDRK_REE , UAPI_DRV_KDF_HARD_KEY_TYPE_RDRK_TEE
}
 KDF 密钥派生时派生key类型选择。 更多...
 
enum  uapi_drv_kdf_hard_alg_t { UAPI_DRV_KDF_HARD_ALG_SHA256 = 0 , UAPI_DRV_KDF_HARD_ALG_SM3 , UAPI_DRV_KDF_HARD_ALG_MAX }
 KDF 密钥派生,硬件PBKDF2算法时HASH算法选择。 更多...
 
enum  uapi_drv_klad_engine_t {
  UAPI_DRV_KLAD_ENGINE_AES = 0x20 , UAPI_DRV_KLAD_ENGINE_LAE = 0x40 , UAPI_DRV_KLAD_ENGINE_SM4 = 0x50 , UAPI_DRV_KLAD_ENGINE_TDES = 0x70 ,
  UAPI_DRV_KLAD_ENGINE_SHA1_HMAC = 0xA0 , UAPI_DRV_KLAD_ENGINE_SHA2_HMAC = 0xA1 , UAPI_DRV_KLAD_ENGINE_SM3_HMAC = 0xA2 , UAPI_DRV_KLAD_ENGINE_MAX
}
 klad 目标模块算法引擎,决定送出的 key 支持哪个算法。 更多...
 
enum  uapi_drv_klad_dest_t {
  UAPI_DRV_KLAD_DEST_MCIPHER = 0 , UAPI_DRV_KLAD_DEST_HMAC , UAPI_DRV_KLAD_DEST_FLASH , UAPI_DRV_KLAD_DEST_NPU ,
  UAPI_DRV_KLAD_DEST_AIDSP , UAPI_DRV_KLAD_DEST_MAX
}
 klad 目标模块,决定 key 送给哪个模块使用。 更多...
 
enum  uapi_drv_klad_flash_key_type_t { UAPI_DRV_KLAD_FLASH_KEY_TYPE_REE_DEC = 0x00 , UAPI_DRV_KLAD_FLASH_KEY_TYPE_TEE_DEC , UAPI_DRV_KLAD_FLASH_KEY_TYPE_TEE_AUT , UAPI_DRV_KLAD_FLASH_KEY_TYPE_INVALID }
 Flash 在线解密模式,决定送 key 后使用哪种模式 更多...
 
enum  uapi_drv_klad_key_size_t { UAPI_DRV_KLAD_KEY_SIZE_128BIT , UAPI_DRV_KLAD_KEY_SIZE_192BIT , UAPI_DRV_KLAD_KEY_SIZE_256BIT , UAPI_DRV_KLAD_KEY_SIZE_INVALID = 0xffffffff }
 对称密钥长度。决定了最终的工作密钥的长度 更多...
 
enum  uapi_drv_klad_hmac_type_t {
  UAPI_DRV_KLAD_HMAC_TYPE_SHA1 = 0x20 , UAPI_DRV_KLAD_HMAC_TYPE_SHA224 , UAPI_DRV_KLAD_HMAC_TYPE_SHA256 , UAPI_DRV_KLAD_HMAC_TYPE_SHA384 ,
  UAPI_DRV_KLAD_HMAC_TYPE_SHA512 , UAPI_DRV_KLAD_HMAC_TYPE_SM3 = 0x30 , UAPI_DRV_KLAD_HMAC_TYPE_MAX , UAPI_DRV_KLAD_HMAC_TYPE_INVALID = 0xffffffff
}
 当目标引擎为HMAC时,决定具体使用的HAMC算法。 更多...
 

函数

errcode_t uapi_drv_km_init (void)
 KM初始化。
 
errcode_t uapi_drv_km_deinit (void)
 KM去初始化。
 
errcode_t uapi_drv_keyslot_create (uint32_t *keyslot_handle, uapi_drv_keyslot_type_t keyslot_type)
 创建keyslot句柄。
 
errcode_t uapi_drv_keyslot_destroy (uint32_t keyslot_handle)
 销毁keyslot句柄。
 
errcode_t uapi_drv_klad_create (uint32_t *klad_handle)
 创建keyladder通道句柄。
 
errcode_t uapi_drv_klad_destroy (uint32_t klad_handle)
 销毁keyladder通道句柄。
 
errcode_t uapi_drv_klad_attach (uint32_t klad_handle, uapi_drv_klad_dest_t klad_type, uint32_t keyslot_handle)
 将keyslot句柄与klad句柄关联上。
 
errcode_t uapi_drv_klad_detach (uint32_t klad_handle, uapi_drv_klad_dest_t klad_type, uint32_t keyslot_handle)
 将keyslot句柄与klad句柄解关联。
 
errcode_t uapi_drv_klad_set_attr (uint32_t klad_handle, const uapi_drv_klad_attr_t *attr)
 设置keyladder的属性。
 
errcode_t uapi_drv_klad_get_attr (uint32_t klad_handle, uapi_drv_klad_attr_t *attr)
 获取keyladder的属性。
 
errcode_t uapi_drv_klad_set_effective_key (uint32_t klad_handle, const uapi_drv_klad_effective_key_t *key)
 设置effective key。
 
errcode_t uapi_drv_klad_set_clear_key (uint32_t klad_handle, const uapi_drv_klad_clear_key_t *key)
 设置clear key。
 
errcode_t uapi_drv_kdf_update (uapi_drv_kdf_otp_key_t otp_key, uapi_drv_kdf_update_alg_t alg)
 更新根密钥。
 

详细描述

Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2023-2023. All rights reserved.

Description: Provides KM driver header
History:
2023-03-14, Create file.

枚举类型说明

◆ uapi_drv_kdf_hard_alg_t

KDF 密钥派生,硬件PBKDF2算法时HASH算法选择。

枚举值
UAPI_DRV_KDF_HARD_ALG_SHA256 
UAPI_DRV_KDF_HARD_ALG_SM3 
UAPI_DRV_KDF_HARD_ALG_MAX 

◆ uapi_drv_kdf_hard_key_type_t

KDF 密钥派生时派生key类型选择。

枚举值
UAPI_DRV_KDF_HARD_KEY_TYPE_SBRK0 
UAPI_DRV_KDF_HARD_KEY_TYPE_SBRK1 
UAPI_DRV_KDF_HARD_KEY_TYPE_SBRK2 
UAPI_DRV_KDF_HARD_KEY_TYPE_ABRK0 
UAPI_DRV_KDF_HARD_KEY_TYPE_ABRK1 
UAPI_DRV_KDF_HARD_KEY_TYPE_ABRK2 
UAPI_DRV_KDF_HARD_KEY_TYPE_DRK0 
UAPI_DRV_KDF_HARD_KEY_TYPE_DRK1 
UAPI_DRV_KDF_HARD_KEY_TYPE_RDRK0 
UAPI_DRV_KDF_HARD_KEY_TYPE_RDRK1 
UAPI_DRV_KDF_HARD_KEY_TYPE_PSK 
UAPI_DRV_KDF_HARD_KEY_TYPE_FDRK0 
UAPI_DRV_KDF_HARD_KEY_TYPE_ODRK0 
UAPI_DRV_KDF_HARD_KEY_TYPE_ODRK1 
UAPI_DRV_KDF_HARD_KEY_TYPE_OARK0 
UAPI_DRV_KDF_HARD_KEY_TYPE_MDRK0 
UAPI_DRV_KDF_HARD_KEY_TYPE_MDRK1 
UAPI_DRV_KDF_HARD_KEY_TYPE_MDRK2 
UAPI_DRV_KDF_HARD_KEY_TYPE_MDRK3 
UAPI_DRV_KDF_HARD_KEY_TYPE_ABRK_REE 
UAPI_DRV_KDF_HARD_KEY_TYPE_ABRK_TEE 
UAPI_DRV_KDF_HARD_KEY_TYPE_RDRK_REE 
UAPI_DRV_KDF_HARD_KEY_TYPE_RDRK_TEE 

◆ uapi_drv_kdf_otp_key_t

KDF 密钥派生时根密钥选择。

枚举值
UAPI_DRV_KDF_OTP_KEY_MRK1 
UAPI_DRV_KDF_OTP_KEY_USK 
UAPI_DRV_KDF_OTP_KEY_RUSK 

◆ uapi_drv_kdf_update_alg_t

KDF 密钥派生时对称算法选择。

枚举值
UAPI_DRV_KDF_UPDATE_ALG_AES 
UAPI_DRV_KDF_UPDATE_ALG_SM4 

◆ uapi_drv_keyslot_type_t

keyslot 类型选择。

枚举值
UAPI_DRV_KEYSLOT_TYPE_MCIPHER 
UAPI_DRV_KEYSLOT_TYPE_HMAC 
UAPI_DRV_KEYSLOT_TYPE_FLASH 

◆ uapi_drv_klad_dest_t

klad 目标模块,决定 key 送给哪个模块使用。

枚举值
UAPI_DRV_KLAD_DEST_MCIPHER 
UAPI_DRV_KLAD_DEST_HMAC 
UAPI_DRV_KLAD_DEST_FLASH 
UAPI_DRV_KLAD_DEST_NPU 
UAPI_DRV_KLAD_DEST_AIDSP 
UAPI_DRV_KLAD_DEST_MAX 

◆ uapi_drv_klad_engine_t

klad 目标模块算法引擎,决定送出的 key 支持哪个算法。

枚举值
UAPI_DRV_KLAD_ENGINE_AES 
UAPI_DRV_KLAD_ENGINE_LAE 
UAPI_DRV_KLAD_ENGINE_SM4 
UAPI_DRV_KLAD_ENGINE_TDES 
UAPI_DRV_KLAD_ENGINE_SHA1_HMAC 
UAPI_DRV_KLAD_ENGINE_SHA2_HMAC 
UAPI_DRV_KLAD_ENGINE_SM3_HMAC 
UAPI_DRV_KLAD_ENGINE_MAX 

◆ uapi_drv_klad_flash_key_type_t

Flash 在线解密模式,决定送 key 后使用哪种模式

枚举值
UAPI_DRV_KLAD_FLASH_KEY_TYPE_REE_DEC 
UAPI_DRV_KLAD_FLASH_KEY_TYPE_TEE_DEC 
UAPI_DRV_KLAD_FLASH_KEY_TYPE_TEE_AUT 
UAPI_DRV_KLAD_FLASH_KEY_TYPE_INVALID 

◆ uapi_drv_klad_hmac_type_t

当目标引擎为HMAC时,决定具体使用的HAMC算法。

枚举值
UAPI_DRV_KLAD_HMAC_TYPE_SHA1 
UAPI_DRV_KLAD_HMAC_TYPE_SHA224 
UAPI_DRV_KLAD_HMAC_TYPE_SHA256 
UAPI_DRV_KLAD_HMAC_TYPE_SHA384 
UAPI_DRV_KLAD_HMAC_TYPE_SHA512 
UAPI_DRV_KLAD_HMAC_TYPE_SM3 
UAPI_DRV_KLAD_HMAC_TYPE_MAX 
UAPI_DRV_KLAD_HMAC_TYPE_INVALID 

◆ uapi_drv_klad_key_size_t

对称密钥长度。决定了最终的工作密钥的长度

枚举值
UAPI_DRV_KLAD_KEY_SIZE_128BIT 
UAPI_DRV_KLAD_KEY_SIZE_192BIT 
UAPI_DRV_KLAD_KEY_SIZE_256BIT 
UAPI_DRV_KLAD_KEY_SIZE_INVALID 

函数说明

◆ uapi_drv_kdf_update()

errcode_t uapi_drv_kdf_update ( uapi_drv_kdf_otp_key_t  otp_key,
uapi_drv_kdf_update_alg_t  alg 
)

更新根密钥。

◆ uapi_drv_keyslot_create()

errcode_t uapi_drv_keyslot_create ( uint32_t *  keyslot_handle,
uapi_drv_keyslot_type_t  keyslot_type 
)

创建keyslot句柄。

◆ uapi_drv_keyslot_destroy()

errcode_t uapi_drv_keyslot_destroy ( uint32_t  keyslot_handle)

销毁keyslot句柄。

◆ uapi_drv_klad_attach()

errcode_t uapi_drv_klad_attach ( uint32_t  klad_handle,
uapi_drv_klad_dest_t  klad_type,
uint32_t  keyslot_handle 
)

将keyslot句柄与klad句柄关联上。

◆ uapi_drv_klad_create()

errcode_t uapi_drv_klad_create ( uint32_t *  klad_handle)

创建keyladder通道句柄。

◆ uapi_drv_klad_destroy()

errcode_t uapi_drv_klad_destroy ( uint32_t  klad_handle)

销毁keyladder通道句柄。

◆ uapi_drv_klad_detach()

errcode_t uapi_drv_klad_detach ( uint32_t  klad_handle,
uapi_drv_klad_dest_t  klad_type,
uint32_t  keyslot_handle 
)

将keyslot句柄与klad句柄解关联。

◆ uapi_drv_klad_get_attr()

errcode_t uapi_drv_klad_get_attr ( uint32_t  klad_handle,
uapi_drv_klad_attr_t attr 
)

获取keyladder的属性。

◆ uapi_drv_klad_set_attr()

errcode_t uapi_drv_klad_set_attr ( uint32_t  klad_handle,
const uapi_drv_klad_attr_t attr 
)

设置keyladder的属性。

◆ uapi_drv_klad_set_clear_key()

errcode_t uapi_drv_klad_set_clear_key ( uint32_t  klad_handle,
const uapi_drv_klad_clear_key_t key 
)

设置clear key。

◆ uapi_drv_klad_set_effective_key()

errcode_t uapi_drv_klad_set_effective_key ( uint32_t  klad_handle,
const uapi_drv_klad_effective_key_t key 
)

设置effective key。

◆ uapi_drv_km_deinit()

errcode_t uapi_drv_km_deinit ( void  )

KM去初始化。

◆ uapi_drv_km_init()

errcode_t uapi_drv_km_init ( void  )

KM初始化。