WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
crypto_km_struct.h 文件参考
#include "td_type.h"
crypto_km_struct.h 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

结构体

struct  crypto_kdf_hard_calc_param
 
struct  crypto_klad_clear_key
 klad送明文key时,明文key的结构。 更多...
 
struct  crypto_klad_config
 Keyladder 根密钥类型选择。 更多...
 
struct  crypto_klad_key_config
 Keyladder 工作密钥属性配置。 更多...
 
struct  crypto_klad_key_secure_config
 key 的安全属性。 当加密工作模式为CBC_MAC时,dest_buf_sec_support和dest_buf_non_sec_support不能同时为false。 更多...
 
struct  crypto_klad_attr
 Keyladder 配置属性。 更多...
 
struct  crypto_klad_effective_key
 Keyladder硬件key参数配置。 更多...
 
struct  crypto_klad_session_key
 Session key参数配置。 更多...
 

宏定义

#define SESSION_KEY_LEN   16
 

类型定义

typedef td_bool(* drv_kdf_wait_condition_func) (const td_void *param)
 
typedef td_bool(* drv_klad_wait_condition_func) (const td_void *param)
 
typedef td_s32(* osal_kdf_wait_timeout_uninterruptible) (const td_void *wait, drv_kdf_wait_condition_func func, const td_void *param, const td_u32 timeout_ms)
 
typedef td_s32(* osal_klad_wait_timeout_uninterruptible) (const td_void *wait, drv_klad_wait_condition_func func, const td_void *param, const td_u32 timeout_ms)
 

枚举

enum  crypto_kdf_otp_key { CRYPTO_KDF_OTP_KEY_MRK1 = 0 , CRYPTO_KDF_OTP_KEY_USK , CRYPTO_KDF_OTP_KEY_RUSK , CRYPTO_KDF_OTP_KEY_MAX }
 KDF 密钥派生时根密钥选择。 更多...
 
enum  crypto_kdf_update_alg { CRYPTO_KDF_UPDATE_ALG_AES = 0 , CRYPTO_KDF_UPDATE_ALG_SM4 , CRYPTO_KDF_UPDATE_ALG_MAX }
 KDF 密钥派生时对称算法选择。 更多...
 
enum  crypto_kdf_sw_alg {
  CRYPTO_KDF_SW_ALG_SHA1 = 0 , CRYPTO_KDF_SW_ALG_SHA256 , CRYPTO_KDF_SW_ALG_SHA384 , CRYPTO_KDF_SW_ALG_SHA512 ,
  CRYPTO_KDF_SW_ALG_SM3
}
 软件PBKDF2算法时HASH算法选择。 更多...
 
enum  crypto_kdf_hard_key_type {
  CRYPTO_KDF_HARD_KEY_TYPE_SBRK0 = 0x03000000 , CRYPTO_KDF_HARD_KEY_TYPE_SBRK1 , CRYPTO_KDF_HARD_KEY_TYPE_SBRK2 , CRYPTO_KDF_HARD_KEY_TYPE_ABRK0 ,
  CRYPTO_KDF_HARD_KEY_TYPE_ABRK1 , CRYPTO_KDF_HARD_KEY_TYPE_ABRK2 , CRYPTO_KDF_HARD_KEY_TYPE_DRK0 , CRYPTO_KDF_HARD_KEY_TYPE_DRK1 ,
  CRYPTO_KDF_HARD_KEY_TYPE_RDRK0 , CRYPTO_KDF_HARD_KEY_TYPE_RDRK1 , CRYPTO_KDF_HARD_KEY_TYPE_PSK , CRYPTO_KDF_HARD_KEY_TYPE_FDRK0 ,
  CRYPTO_KDF_HARD_KEY_TYPE_ODRK0 , CRYPTO_KDF_HARD_KEY_TYPE_ODRK1 , CRYPTO_KDF_HARD_KEY_TYPE_OARK0 , CRYPTO_KDF_HARD_KEY_TYPE_MDRK0 ,
  CRYPTO_KDF_HARD_KEY_TYPE_MDRK1 , CRYPTO_KDF_HARD_KEY_TYPE_MDRK2 , CRYPTO_KDF_HARD_KEY_TYPE_MDRK3 , CRYPTO_KDF_HARD_KEY_TYPE_ABRK_REE ,
  CRYPTO_KDF_HARD_KEY_TYPE_ABRK_TEE , CRYPTO_KDF_HARD_KEY_TYPE_RDRK_REE , CRYPTO_KDF_HARD_KEY_TYPE_RDRK_TEE
}
 KDF 密钥派生时派生key类型选择。 更多...
 
enum  crypto_kdf_hard_alg { CRYPTO_KDF_HARD_ALG_SHA256 = 0 , CRYPTO_KDF_HARD_ALG_SM3 , CRYPTO_KDF_HARD_ALG_MAX }
 KDF 密钥派生,硬件PBKDF2算法时HASH算法选择。 更多...
 
enum  crypto_kdf_hard_key_size { CRYPTO_KDF_HARD_KEY_SIZE_128BIT = 0 , CRYPTO_KDF_HARD_KEY_SIZE_192BIT , CRYPTO_KDF_HARD_KEY_SIZE_256BIT }
 
enum  crypto_klad_engine {
  CRYPTO_KLAD_ENGINE_AES = 0x20 , CRYPTO_KLAD_ENGINE_SM4 = 0x50 , CRYPTO_KLAD_ENGINE_TDES = 0x70 , CRYPTO_KLAD_ENGINE_SHA1_HMAC = 0xA0 ,
  CRYPTO_KLAD_ENGINE_SHA2_HMAC = 0xA1 , CRYPTO_KLAD_ENGINE_SM3_HMAC = 0xA2 , CRYPTO_KLAD_ENGINE_MAX
}
 klad 目标模块算法引擎,决定送出的 key 支持哪个算法。 更多...
 
enum  crypto_klad_sec { CRYPTO_KLAD_SEC_DISABLE = 0 , CRYPTO_KLAD_SEC_ENABLE , CRYPTO_KLAD_SEC_MAX , CRYPTO_KLAD_SEC_INVALID = 0xffffffff }
 
enum  crypto_klad_key_parity { CRYPTO_KLAD_KEY_EVEN = 0x0 , CRYPTO_KLAD_KEY_ODD = 0x1 , CRYPTO_KLAD_KEY_PARITY_MAX , CRYPTO_KLAD_KEY_PARITY_INVALID = 0xffffffff }
 
enum  crypto_klad_dest {
  CRYPTO_KLAD_DEST_MCIPHER = 0 , CRYPTO_KLAD_DEST_HMAC , CRYPTO_KLAD_DEST_FLASH , CRYPTO_KLAD_DEST_NPU ,
  CRYPTO_KLAD_DEST_AIDSP , CRYPTO_KLAD_DEST_MAX
}
 klad 目标模块,决定 key 送给哪个模块使用。 更多...
 
enum  crypto_klad_flash_key_type { CRYPTO_KLAD_FLASH_KEY_TYPE_REE_DEC = 0x00 , CRYPTO_KLAD_FLASH_KEY_TYPE_TEE_DEC , CRYPTO_KLAD_FLASH_KEY_TYPE_TEE_AUT , CRYPTO_KLAD_FLASH_KEY_TYPE_INVALID }
 Flash 在线解密模式,决定送 key 后使用哪种模式 更多...
 
enum  crypto_klad_key_size { CRYPTO_KLAD_KEY_SIZE_128BIT , CRYPTO_KLAD_KEY_SIZE_192BIT , CRYPTO_KLAD_KEY_SIZE_256BIT }
 对称密钥长度。决定了最终的工作密钥的长度 更多...
 
enum  crypto_klad_hmac_type {
  CRYPTO_KLAD_HMAC_TYPE_SHA1 = 0x20 , CRYPTO_KLAD_HMAC_TYPE_SHA224 , CRYPTO_KLAD_HMAC_TYPE_SHA256 , CRYPTO_KLAD_HMAC_TYPE_SHA384 ,
  CRYPTO_KLAD_HMAC_TYPE_SHA512 , CRYPTO_KLAD_HMAC_TYPE_SM3 = 0x30 , CRYPTO_KLAD_HMAC_TYPE_MAX , CRYPTO_KLAD_HMAC_TYPE_INVALID = 0xffffffff
}
 当目标引擎为HMAC时,决定具体使用的HAMC算法。 更多...
 
enum  crypto_klad_level_sel { CRYPTO_KLAD_LEVEL_SEL_FIRST = 0 , CRYPTO_KLAD_LEVEL_SEL_SECOND }
 klad密钥派生时,决定当前派生的密钥层级。 更多...
 
enum  crypto_klad_alg_sel { CRYPTO_KLAD_ALG_SEL_TDES = 0 , CRYPTO_KLAD_ALG_SEL_AES , CRYPTO_KLAD_ALG_SEL_SM4 }
 klad密钥派生时,决定当前派生使用的对称算法。 更多...
 
enum  crypto_keyslot_type { CRYPTO_KEYSLOT_TYPE_MCIPHER = 0 , CRYPTO_KEYSLOT_TYPE_HMAC , CRYPTO_KEYSLOT_TYPE_FLASH }
 keyslot 类型选择。 更多...
 

宏定义说明

◆ SESSION_KEY_LEN

#define SESSION_KEY_LEN   16

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

Create: 2023-01-18

类型定义说明

◆ drv_kdf_wait_condition_func

typedef td_bool(* drv_kdf_wait_condition_func) (const td_void *param)

◆ drv_klad_wait_condition_func

typedef td_bool(* drv_klad_wait_condition_func) (const td_void *param)

◆ osal_kdf_wait_timeout_uninterruptible

typedef td_s32(* osal_kdf_wait_timeout_uninterruptible) (const td_void *wait, drv_kdf_wait_condition_func func, const td_void *param, const td_u32 timeout_ms)

◆ osal_klad_wait_timeout_uninterruptible

typedef td_s32(* osal_klad_wait_timeout_uninterruptible) (const td_void *wait, drv_klad_wait_condition_func func, const td_void *param, const td_u32 timeout_ms)

枚举类型说明

◆ crypto_kdf_hard_alg

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

枚举值
CRYPTO_KDF_HARD_ALG_SHA256 
CRYPTO_KDF_HARD_ALG_SM3 
CRYPTO_KDF_HARD_ALG_MAX 

◆ crypto_kdf_hard_key_size

枚举值
CRYPTO_KDF_HARD_KEY_SIZE_128BIT 
CRYPTO_KDF_HARD_KEY_SIZE_192BIT 
CRYPTO_KDF_HARD_KEY_SIZE_256BIT 

◆ crypto_kdf_hard_key_type

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

枚举值
CRYPTO_KDF_HARD_KEY_TYPE_SBRK0 
CRYPTO_KDF_HARD_KEY_TYPE_SBRK1 
CRYPTO_KDF_HARD_KEY_TYPE_SBRK2 
CRYPTO_KDF_HARD_KEY_TYPE_ABRK0 
CRYPTO_KDF_HARD_KEY_TYPE_ABRK1 
CRYPTO_KDF_HARD_KEY_TYPE_ABRK2 
CRYPTO_KDF_HARD_KEY_TYPE_DRK0 
CRYPTO_KDF_HARD_KEY_TYPE_DRK1 
CRYPTO_KDF_HARD_KEY_TYPE_RDRK0 
CRYPTO_KDF_HARD_KEY_TYPE_RDRK1 
CRYPTO_KDF_HARD_KEY_TYPE_PSK 
CRYPTO_KDF_HARD_KEY_TYPE_FDRK0 
CRYPTO_KDF_HARD_KEY_TYPE_ODRK0 
CRYPTO_KDF_HARD_KEY_TYPE_ODRK1 
CRYPTO_KDF_HARD_KEY_TYPE_OARK0 
CRYPTO_KDF_HARD_KEY_TYPE_MDRK0 
CRYPTO_KDF_HARD_KEY_TYPE_MDRK1 
CRYPTO_KDF_HARD_KEY_TYPE_MDRK2 
CRYPTO_KDF_HARD_KEY_TYPE_MDRK3 
CRYPTO_KDF_HARD_KEY_TYPE_ABRK_REE 
CRYPTO_KDF_HARD_KEY_TYPE_ABRK_TEE 
CRYPTO_KDF_HARD_KEY_TYPE_RDRK_REE 
CRYPTO_KDF_HARD_KEY_TYPE_RDRK_TEE 

◆ crypto_kdf_otp_key

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

枚举值
CRYPTO_KDF_OTP_KEY_MRK1 
CRYPTO_KDF_OTP_KEY_USK 
CRYPTO_KDF_OTP_KEY_RUSK 
CRYPTO_KDF_OTP_KEY_MAX 

◆ crypto_kdf_sw_alg

软件PBKDF2算法时HASH算法选择。

枚举值
CRYPTO_KDF_SW_ALG_SHA1 
CRYPTO_KDF_SW_ALG_SHA256 
CRYPTO_KDF_SW_ALG_SHA384 
CRYPTO_KDF_SW_ALG_SHA512 
CRYPTO_KDF_SW_ALG_SM3 

◆ crypto_kdf_update_alg

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

枚举值
CRYPTO_KDF_UPDATE_ALG_AES 
CRYPTO_KDF_UPDATE_ALG_SM4 
CRYPTO_KDF_UPDATE_ALG_MAX 

◆ crypto_keyslot_type

keyslot 类型选择。

枚举值
CRYPTO_KEYSLOT_TYPE_MCIPHER 
CRYPTO_KEYSLOT_TYPE_HMAC 
CRYPTO_KEYSLOT_TYPE_FLASH 

◆ crypto_klad_alg_sel

klad密钥派生时,决定当前派生使用的对称算法。

枚举值
CRYPTO_KLAD_ALG_SEL_TDES 
CRYPTO_KLAD_ALG_SEL_AES 
CRYPTO_KLAD_ALG_SEL_SM4 

◆ crypto_klad_dest

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

枚举值
CRYPTO_KLAD_DEST_MCIPHER 
CRYPTO_KLAD_DEST_HMAC 
CRYPTO_KLAD_DEST_FLASH 
CRYPTO_KLAD_DEST_NPU 
CRYPTO_KLAD_DEST_AIDSP 
CRYPTO_KLAD_DEST_MAX 

◆ crypto_klad_engine

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

枚举值
CRYPTO_KLAD_ENGINE_AES 
CRYPTO_KLAD_ENGINE_SM4 
CRYPTO_KLAD_ENGINE_TDES 
CRYPTO_KLAD_ENGINE_SHA1_HMAC 
CRYPTO_KLAD_ENGINE_SHA2_HMAC 
CRYPTO_KLAD_ENGINE_SM3_HMAC 
CRYPTO_KLAD_ENGINE_MAX 

◆ crypto_klad_flash_key_type

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

枚举值
CRYPTO_KLAD_FLASH_KEY_TYPE_REE_DEC 
CRYPTO_KLAD_FLASH_KEY_TYPE_TEE_DEC 
CRYPTO_KLAD_FLASH_KEY_TYPE_TEE_AUT 
CRYPTO_KLAD_FLASH_KEY_TYPE_INVALID 

◆ crypto_klad_hmac_type

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

枚举值
CRYPTO_KLAD_HMAC_TYPE_SHA1 

不安全算法,不推荐使用。

CRYPTO_KLAD_HMAC_TYPE_SHA224 
CRYPTO_KLAD_HMAC_TYPE_SHA256 
CRYPTO_KLAD_HMAC_TYPE_SHA384 
CRYPTO_KLAD_HMAC_TYPE_SHA512 
CRYPTO_KLAD_HMAC_TYPE_SM3 
CRYPTO_KLAD_HMAC_TYPE_MAX 
CRYPTO_KLAD_HMAC_TYPE_INVALID 

◆ crypto_klad_key_parity

枚举值
CRYPTO_KLAD_KEY_EVEN 
CRYPTO_KLAD_KEY_ODD 
CRYPTO_KLAD_KEY_PARITY_MAX 
CRYPTO_KLAD_KEY_PARITY_INVALID 

◆ crypto_klad_key_size

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

枚举值
CRYPTO_KLAD_KEY_SIZE_128BIT 
CRYPTO_KLAD_KEY_SIZE_192BIT 
CRYPTO_KLAD_KEY_SIZE_256BIT 

◆ crypto_klad_level_sel

klad密钥派生时,决定当前派生的密钥层级。

枚举值
CRYPTO_KLAD_LEVEL_SEL_FIRST 
CRYPTO_KLAD_LEVEL_SEL_SECOND 

◆ crypto_klad_sec

枚举值
CRYPTO_KLAD_SEC_DISABLE 
CRYPTO_KLAD_SEC_ENABLE 
CRYPTO_KLAD_SEC_MAX 
CRYPTO_KLAD_SEC_INVALID