WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
km.h
浏览该文件的文档.
1
9#ifndef KM_H
10#define KM_H
11
12#include <stdint.h>
13#include <stdbool.h>
14#include "errcode.h"
15
16#ifdef __cplusplus
17#if __cplusplus
18extern "C" {
19#endif
20#endif
21
40
53
65
99
112
130
146
154typedef enum {
155 UAPI_DRV_KLAD_FLASH_KEY_TYPE_REE_DEC = 0x00, /* REE flash online decryption key */
156 UAPI_DRV_KLAD_FLASH_KEY_TYPE_TEE_DEC, /* TEE flash online decryption key */
157 UAPI_DRV_KLAD_FLASH_KEY_TYPE_TEE_AUT, /* TEE flash online authentication key */
160
174
194
219
231
247
273
292
317
330
343
359errcode_t uapi_drv_keyslot_create(uint32_t *keyslot_handle, uapi_drv_keyslot_type_t keyslot_type);
360
374errcode_t uapi_drv_keyslot_destroy(uint32_t keyslot_handle);
375
389errcode_t uapi_drv_klad_create(uint32_t *klad_handle);
390
404errcode_t uapi_drv_klad_destroy(uint32_t klad_handle);
405
423errcode_t uapi_drv_klad_attach(uint32_t klad_handle, uapi_drv_klad_dest_t klad_type, uint32_t keyslot_handle);
424
442errcode_t uapi_drv_klad_detach(uint32_t klad_handle, uapi_drv_klad_dest_t klad_type, uint32_t keyslot_handle);
443
459errcode_t uapi_drv_klad_set_attr(uint32_t klad_handle, const uapi_drv_klad_attr_t *attr);
460
476errcode_t uapi_drv_klad_get_attr(uint32_t klad_handle, uapi_drv_klad_attr_t *attr);
477
494
510errcode_t uapi_drv_klad_set_clear_key(uint32_t klad_handle, const uapi_drv_klad_clear_key_t *key);
511
528
533#ifdef __cplusplus
534#if __cplusplus
535}
536#endif
537#endif
538
539#endif
uint32_t errcode_t
Definition of error code.
Definition errcode.h:30
errcode_t uapi_drv_kdf_update(uapi_drv_kdf_otp_key_t otp_key, uapi_drv_kdf_update_alg_t alg)
更新根密钥。
Definition km.c:171
errcode_t uapi_drv_klad_destroy(uint32_t klad_handle)
销毁keyladder通道句柄。
Definition km.c:54
uapi_drv_klad_engine_t
klad 目标模块算法引擎,决定送出的 key 支持哪个算法。
Definition km.h:120
uapi_drv_keyslot_type_t
keyslot 类型选择。
Definition km.h:35
errcode_t uapi_drv_km_init(void)
KM初始化。
Definition km.c:20
errcode_t uapi_drv_keyslot_destroy(uint32_t keyslot_handle)
销毁keyslot句柄。
Definition km.c:40
errcode_t uapi_drv_klad_get_attr(uint32_t klad_handle, uapi_drv_klad_attr_t *attr)
获取keyladder的属性。
Definition km.c:96
uapi_drv_kdf_hard_key_type_t
KDF 密钥派生时派生key类型选择。
Definition km.h:73
errcode_t uapi_drv_klad_create(uint32_t *klad_handle)
创建keyladder通道句柄。
Definition km.c:48
uapi_drv_kdf_hard_alg_t
KDF 密钥派生,硬件PBKDF2算法时HASH算法选择。
Definition km.h:107
errcode_t uapi_drv_klad_detach(uint32_t klad_handle, uapi_drv_klad_dest_t klad_type, uint32_t keyslot_handle)
将keyslot句柄与klad句柄解关联。
Definition km.c:66
errcode_t uapi_drv_klad_set_clear_key(uint32_t klad_handle, const uapi_drv_klad_clear_key_t *key)
设置clear key。
Definition km.c:147
uapi_drv_kdf_otp_key_t
KDF 密钥派生时根密钥选择。
Definition km.h:48
uapi_drv_kdf_update_alg_t
KDF 密钥派生时对称算法选择。
Definition km.h:61
errcode_t uapi_drv_keyslot_create(uint32_t *keyslot_handle, uapi_drv_keyslot_type_t keyslot_type)
创建keyslot句柄。
Definition km.c:30
errcode_t uapi_drv_klad_attach(uint32_t klad_handle, uapi_drv_klad_dest_t klad_type, uint32_t keyslot_handle)
将keyslot句柄与klad句柄关联上。
Definition km.c:60
uapi_drv_klad_hmac_type_t
当目标引擎为HMAC时,决定具体使用的HAMC算法。
Definition km.h:184
uapi_drv_klad_flash_key_type_t
Flash 在线解密模式,决定送 key 后使用哪种模式
Definition km.h:154
uapi_drv_klad_key_size_t
对称密钥长度。决定了最终的工作密钥的长度
Definition km.h:168
uapi_drv_klad_dest_t
klad 目标模块,决定 key 送给哪个模块使用。
Definition km.h:138
errcode_t uapi_drv_klad_set_effective_key(uint32_t klad_handle, const uapi_drv_klad_effective_key_t *key)
设置effective key。
Definition km.c:121
errcode_t uapi_drv_km_deinit(void)
KM去初始化。
Definition km.c:24
errcode_t uapi_drv_klad_set_attr(uint32_t klad_handle, const uapi_drv_klad_attr_t *attr)
设置keyladder的属性。
Definition km.c:72
@ UAPI_DRV_KLAD_ENGINE_LAE
Definition km.h:122
@ UAPI_DRV_KLAD_ENGINE_SM3_HMAC
Definition km.h:127
@ UAPI_DRV_KLAD_ENGINE_SHA2_HMAC
Definition km.h:126
@ UAPI_DRV_KLAD_ENGINE_AES
Definition km.h:121
@ UAPI_DRV_KLAD_ENGINE_MAX
Definition km.h:128
@ UAPI_DRV_KLAD_ENGINE_SM4
Definition km.h:123
@ UAPI_DRV_KLAD_ENGINE_TDES
Definition km.h:124
@ UAPI_DRV_KLAD_ENGINE_SHA1_HMAC
Definition km.h:125
@ UAPI_DRV_KEYSLOT_TYPE_MCIPHER
Definition km.h:36
@ UAPI_DRV_KEYSLOT_TYPE_FLASH
Definition km.h:38
@ UAPI_DRV_KEYSLOT_TYPE_HMAC
Definition km.h:37
@ UAPI_DRV_KDF_HARD_KEY_TYPE_DRK1
Definition km.h:81
@ UAPI_DRV_KDF_HARD_KEY_TYPE_OARK0
Definition km.h:88
@ UAPI_DRV_KDF_HARD_KEY_TYPE_ABRK_TEE
Definition km.h:95
@ UAPI_DRV_KDF_HARD_KEY_TYPE_RDRK1
Definition km.h:83
@ UAPI_DRV_KDF_HARD_KEY_TYPE_MDRK3
Definition km.h:92
@ UAPI_DRV_KDF_HARD_KEY_TYPE_MDRK0
Definition km.h:89
@ UAPI_DRV_KDF_HARD_KEY_TYPE_FDRK0
Definition km.h:85
@ UAPI_DRV_KDF_HARD_KEY_TYPE_SBRK1
Definition km.h:75
@ UAPI_DRV_KDF_HARD_KEY_TYPE_RDRK_TEE
Definition km.h:97
@ UAPI_DRV_KDF_HARD_KEY_TYPE_SBRK2
Definition km.h:76
@ UAPI_DRV_KDF_HARD_KEY_TYPE_ABRK_REE
Definition km.h:94
@ UAPI_DRV_KDF_HARD_KEY_TYPE_ODRK1
Definition km.h:87
@ UAPI_DRV_KDF_HARD_KEY_TYPE_SBRK0
Definition km.h:74
@ UAPI_DRV_KDF_HARD_KEY_TYPE_MDRK2
Definition km.h:91
@ UAPI_DRV_KDF_HARD_KEY_TYPE_ABRK0
Definition km.h:77
@ UAPI_DRV_KDF_HARD_KEY_TYPE_DRK0
Definition km.h:80
@ UAPI_DRV_KDF_HARD_KEY_TYPE_PSK
Definition km.h:84
@ UAPI_DRV_KDF_HARD_KEY_TYPE_RDRK0
Definition km.h:82
@ UAPI_DRV_KDF_HARD_KEY_TYPE_ABRK1
Definition km.h:78
@ UAPI_DRV_KDF_HARD_KEY_TYPE_MDRK1
Definition km.h:90
@ UAPI_DRV_KDF_HARD_KEY_TYPE_ODRK0
Definition km.h:86
@ UAPI_DRV_KDF_HARD_KEY_TYPE_ABRK2
Definition km.h:79
@ UAPI_DRV_KDF_HARD_KEY_TYPE_RDRK_REE
Definition km.h:96
@ UAPI_DRV_KDF_HARD_ALG_MAX
Definition km.h:110
@ UAPI_DRV_KDF_HARD_ALG_SHA256
Definition km.h:108
@ UAPI_DRV_KDF_HARD_ALG_SM3
Definition km.h:109
@ UAPI_DRV_KDF_OTP_KEY_RUSK
Definition km.h:51
@ UAPI_DRV_KDF_OTP_KEY_USK
Definition km.h:50
@ UAPI_DRV_KDF_OTP_KEY_MRK1
Definition km.h:49
@ UAPI_DRV_KDF_UPDATE_ALG_AES
Definition km.h:62
@ UAPI_DRV_KDF_UPDATE_ALG_SM4
Definition km.h:63
@ UAPI_DRV_KLAD_HMAC_TYPE_SHA1
Definition km.h:185
@ UAPI_DRV_KLAD_HMAC_TYPE_SHA384
Definition km.h:188
@ UAPI_DRV_KLAD_HMAC_TYPE_SHA224
Definition km.h:186
@ UAPI_DRV_KLAD_HMAC_TYPE_SHA256
Definition km.h:187
@ UAPI_DRV_KLAD_HMAC_TYPE_MAX
Definition km.h:191
@ UAPI_DRV_KLAD_HMAC_TYPE_SHA512
Definition km.h:189
@ UAPI_DRV_KLAD_HMAC_TYPE_SM3
Definition km.h:190
@ UAPI_DRV_KLAD_HMAC_TYPE_INVALID
Definition km.h:192
@ UAPI_DRV_KLAD_FLASH_KEY_TYPE_REE_DEC
Definition km.h:155
@ UAPI_DRV_KLAD_FLASH_KEY_TYPE_INVALID
Definition km.h:158
@ UAPI_DRV_KLAD_FLASH_KEY_TYPE_TEE_DEC
Definition km.h:156
@ UAPI_DRV_KLAD_FLASH_KEY_TYPE_TEE_AUT
Definition km.h:157
@ UAPI_DRV_KLAD_KEY_SIZE_256BIT
Definition km.h:171
@ UAPI_DRV_KLAD_KEY_SIZE_192BIT
Definition km.h:170
@ UAPI_DRV_KLAD_KEY_SIZE_INVALID
Definition km.h:172
@ UAPI_DRV_KLAD_KEY_SIZE_128BIT
Definition km.h:169
@ UAPI_DRV_KLAD_DEST_MCIPHER
Definition km.h:139
@ UAPI_DRV_KLAD_DEST_MAX
Definition km.h:144
@ UAPI_DRV_KLAD_DEST_NPU
Definition km.h:142
@ UAPI_DRV_KLAD_DEST_FLASH
Definition km.h:141
@ UAPI_DRV_KLAD_DEST_AIDSP
Definition km.h:143
@ UAPI_DRV_KLAD_DEST_HMAC
Definition km.h:140
Keyladder 配置属性。
Definition km.h:281
uint32_t rkp_sw_cfg
Definition km.h:288
uapi_drv_klad_config_t klad_cfg
Definition km.h:282
uapi_drv_klad_key_config_t key_cfg
Definition km.h:284
uapi_drv_klad_key_secure_config_t key_sec_cfg
Definition km.h:286
klad送明文key时,明文key的结构。
Definition km.h:202
bool key_parity
Definition km.h:212
uapi_drv_klad_hmac_type_t hmac_type
Definition km.h:215
uint32_t key_length
Definition km.h:205
uint8_t * key
Definition km.h:203
Keyladder 根密钥类型选择。
Definition km.h:227
uapi_drv_kdf_hard_key_type_t rootkey_type
Definition km.h:228
Keyladder硬件key参数配置。
Definition km.h:300
bool oneway
Definition km.h:313
uint8_t * salt
Definition km.h:308
uint32_t salt_length
Definition km.h:311
uapi_drv_klad_key_size_t key_size
Definition km.h:306
uapi_drv_kdf_hard_alg_t kdf_hard_alg
Definition km.h:301
bool key_parity
Definition km.h:303
Keyladder 工作密钥属性配置。
Definition km.h:239
uapi_drv_klad_engine_t engine
Definition km.h:240
bool encrypt_support
Definition km.h:244
bool decrypt_support
Definition km.h:242
key 的安全属性。 当加密工作模式为CBC_MAC时,dest_buf_sec_support和dest_buf_non_sec_support不能同时为false。
Definition km.h:257
bool src_buf_sec_support
Definition km.h:268
bool key_sec
Definition km.h:258
bool master_only_enable
Definition km.h:260
bool dest_buf_non_sec_support
Definition km.h:266
bool src_buf_non_sec_support
Definition km.h:270
bool dest_buf_sec_support
Definition km.h:264