1# HuksKeyApi 2 3 4## 概述 5 6描述HUKS向应用提供密钥库能力,包括密钥管理及密钥的密码学操作等功能。 管理的密钥可以由应用导入或者由应用调用HUKS接口生成。 7 8\@syscap SystemCapability.Security.Huks 9 10 **起始版本:** 119 12 13## 汇总 14 15 16### 文件 17 18 | 名称 | 描述 | 19| -------- | -------- | 20| [native_huks_api.h](native__huks__api_8h.md) | 声明用于访问HUKS的API。<br>引用文件:<huks/native_huks/api.h> | 21 22 23### 函数 24 25 | 名称 | 描述 | 26| -------- | -------- | 27| [OH_Huks_GetSdkVersion](#oh_huks_getsdkversion) (struct [OH_Huks_Blob](_o_h___huks___blob.md) \*sdkVersion) | 获取当前Huks sdk版本号。 | 28| [OH_Huks_GenerateKeyItem](#oh_huks_generatekeyitem) (const struct [OH_Huks_Blob](_o_h___huks___blob.md) \*keyAlias, const struct [OH_Huks_ParamSet](_o_h___huks___param_set.md) \*paramSetIn, struct [OH_Huks_ParamSet](_o_h___huks___param_set.md) \*paramSetOut) | 生成密钥。 | 29| [OH_Huks_ImportKeyItem](#oh_huks_importkeyitem) (const struct [OH_Huks_Blob](_o_h___huks___blob.md) \*keyAlias, const struct [OH_Huks_ParamSet](_o_h___huks___param_set.md) \*paramSet, const struct [OH_Huks_Blob](_o_h___huks___blob.md) \*key) | 导入明文密钥。 | 30| [OH_Huks_ImportWrappedKeyItem](#oh_huks_importwrappedkeyitem) (const struct [OH_Huks_Blob](_o_h___huks___blob.md) \*keyAlias, const struct [OH_Huks_Blob](_o_h___huks___blob.md) \*wrappingKeyAlias, const struct [OH_Huks_ParamSet](_o_h___huks___param_set.md) \*paramSet, const struct [OH_Huks_Blob](_o_h___huks___blob.md) \*wrappedKeyData) | 导入密文密钥。 | 31| [OH_Huks_ExportPublicKeyItem](#oh_huks_exportpublickeyitem) (const struct [OH_Huks_Blob](_o_h___huks___blob.md) \*keyAlias, const struct [OH_Huks_ParamSet](_o_h___huks___param_set.md) \*paramSet, struct [OH_Huks_Blob](_o_h___huks___blob.md) \*key) | 导出公钥。 | 32| [OH_Huks_DeleteKeyItem](#oh_huks_deletekeyitem) (const struct [OH_Huks_Blob](_o_h___huks___blob.md) \*keyAlias, const struct [OH_Huks_ParamSet](_o_h___huks___param_set.md) \*paramSet) | 删除密钥。 | 33| [OH_Huks_GetKeyItemParamSet](#oh_huks_getkeyitemparamset) (const struct [OH_Huks_Blob](_o_h___huks___blob.md) \*keyAlias, const struct [OH_Huks_ParamSet](_o_h___huks___param_set.md) \*paramSetIn, struct [OH_Huks_ParamSet](_o_h___huks___param_set.md) \*paramSetOut) | 获取密钥的属性集。 | 34| [OH_Huks_IsKeyItemExist](#oh_huks_iskeyitemexist) (const struct [OH_Huks_Blob](_o_h___huks___blob.md) \*keyAlias, const struct [OH_Huks_ParamSet](_o_h___huks___param_set.md) \*paramSet) | 判断密钥是否存在。 | 35| [OH_Huks_AttestKeyItem](#oh_huks_attestkeyitem) (const struct [OH_Huks_Blob](_o_h___huks___blob.md) \*keyAlias, const struct [OH_Huks_ParamSet](_o_h___huks___param_set.md) \*paramSet, struct [OH_Huks_CertChain](_o_h___huks___cert_chain.md) \*certChain) | 获取密钥证书链。 | 36| [OH_Huks_InitSession](#oh_huks_initsession) (const struct [OH_Huks_Blob](_o_h___huks___blob.md) \*keyAlias, const struct [OH_Huks_ParamSet](_o_h___huks___param_set.md) \*paramSet, struct [OH_Huks_Blob](_o_h___huks___blob.md) \*handle, struct [OH_Huks_Blob](_o_h___huks___blob.md) \*token) | 初始化密钥会话接口,并获取一个句柄(必选)和挑战值(可选)。 | 37| [OH_Huks_UpdateSession](#oh_huks_updatesession) (const struct [OH_Huks_Blob](_o_h___huks___blob.md) \*handle, const struct [OH_Huks_ParamSet](_o_h___huks___param_set.md) \*paramSet, const struct [OH_Huks_Blob](_o_h___huks___blob.md) \*inData, struct [OH_Huks_Blob](_o_h___huks___blob.md) \*outData) | 分段添加密钥操作的数据并进行相应的密钥操作,输出处理数据。 | 38| [OH_Huks_FinishSession](#oh_huks_finishsession) (const struct [OH_Huks_Blob](_o_h___huks___blob.md) \*handle, const struct [OH_Huks_ParamSet](_o_h___huks___param_set.md) \*paramSet, const struct [OH_Huks_Blob](_o_h___huks___blob.md) \*inData, struct [OH_Huks_Blob](_o_h___huks___blob.md) \*outData) | 结束密钥会话并进行相应的密钥操作,输出处理数据。 | 39| [OH_Huks_AbortSession](#oh_huks_abortsession) (const struct [OH_Huks_Blob](_o_h___huks___blob.md) \*handle, const struct [OH_Huks_ParamSet](_o_h___huks___param_set.md) \*paramSet) | 取消密钥会话。 | 40 41 42## 函数说明 43 44 45### OH_Huks_AbortSession() 46 47 48``` 49struct OH_Huks_Result OH_Huks_AbortSession (const struct OH_Huks_Blob * handle, const struct OH_Huks_ParamSet * paramSet ) 50``` 51**描述:** 52取消密钥会话。 53 54**参数:** 55 56 | 名称 | 描述 | 57| -------- | -------- | 58| handle | 密钥会话句柄,通过[OH_Huks_InitSession](#oh_huks_initsession)接口生成的。 | 59| paramSet | 取消密钥会话需要的输入参数集(默认传空)。 | 60 61**返回:** 62 63返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md)时接口使用成功,其他时为错误。 64 65**参见:** 66 67[OH_Huks_InitSession](#oh_huks_initsession) 68 69[OH_Huks_UpdateSession](#oh_huks_updatesession) 70 71[OH_Huks_FinishSession](#oh_huks_finishsession) 72 73 74### OH_Huks_AttestKeyItem() 75 76 77``` 78struct OH_Huks_Result OH_Huks_AttestKeyItem (const struct OH_Huks_Blob * keyAlias, const struct OH_Huks_ParamSet * paramSet, struct OH_Huks_CertChain * certChain ) 79``` 80**描述:** 81获取密钥证书链。 82 83**参数:** 84 85 | 名称 | 描述 | 86| -------- | -------- | 87| keyAlias | 要获取证书的密钥的别名。 | 88| paramSet | 获取密钥证书需要的参数。 | 89| certChain | 存放输出的密钥证书链。 | 90 91**返回:** 92 93返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md)时获取成功,其他时为错误。 94 95 96### OH_Huks_DeleteKeyItem() 97 98 99``` 100struct OH_Huks_Result OH_Huks_DeleteKeyItem (const struct OH_Huks_Blob * keyAlias, const struct OH_Huks_ParamSet * paramSet ) 101``` 102**描述:** 103删除密钥。 104 105**参数:** 106 107 | 名称 | 描述 | 108| -------- | -------- | 109| keyAlias | 待删除密钥的别名,应与密钥生成时使用的别名相同。 | 110| paramSet | 删除密钥需要属性参数(默认传空)。 | 111 112**返回:** 113 114返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md)时接口使用成功,其他时为错误。 115 116 117### OH_Huks_ExportPublicKeyItem() 118 119 120``` 121struct OH_Huks_Result OH_Huks_ExportPublicKeyItem (const struct OH_Huks_Blob * keyAlias, const struct OH_Huks_ParamSet * paramSet, struct OH_Huks_Blob * key ) 122``` 123**描述:** 124导出公钥。 125 126**参数:** 127 128 | 名称 | 描述 | 129| -------- | -------- | 130| keyAlias | 待导出公钥的密钥别名,应与所用密钥生成时使用的别名相同。 | 131| paramSet | 导出公钥需要的属性参数。 | 132| key | 存放导出的公钥。 | 133 134**返回:** 135 136返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md)时接口使用成功,其他时为错误。 137 138 139### OH_Huks_FinishSession() 140 141 142``` 143struct OH_Huks_Result OH_Huks_FinishSession (const struct OH_Huks_Blob * handle, const struct OH_Huks_ParamSet * paramSet, const struct OH_Huks_Blob * inData, struct OH_Huks_Blob * outData ) 144``` 145**描述:** 146结束密钥会话并进行相应的密钥操作,输出处理数据。 147 148**参数:** 149 150 | 名称 | 描述 | 151| -------- | -------- | 152| handle | 密钥会话句柄,通过[OH_Huks_InitSession](#oh_huks_initsession)接口生成的。 | 153| paramSet | 密钥操作对应的输入参数集。 | 154| inData | 要处理的输入数据。 | 155| outData | 经过对应的密钥操作后输出的数据。 | 156 157**返回:** 158 159返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md)时接口使用成功,其他时为错误。 160 161**参见:** 162 163[OH_Huks_InitSession](#oh_huks_initsession) 164 165[OH_Huks_UpdateSession](#oh_huks_updatesession) 166 167[OH_Huks_AbortSession](#oh_huks_abortsession) 168 169 170### OH_Huks_GenerateKeyItem() 171 172 173``` 174struct OH_Huks_Result OH_Huks_GenerateKeyItem (const struct OH_Huks_Blob * keyAlias, const struct OH_Huks_ParamSet * paramSetIn, struct OH_Huks_ParamSet * paramSetOut ) 175``` 176**描述:** 177生成密钥。 178 179**参数:** 180 181 | 名称 | 描述 | 182| -------- | -------- | 183| keyAlias | 给要生成的密钥的别名,需要保证业务所在进程内唯一,否则会发生覆盖。 | 184| paramSetIn | 生成密钥的属性信息的参数集。 | 185| paramSetOut | 生成密钥为临时类型时,存放着密钥数据;非临时类型可为空。 | 186 187**返回:** 188 189返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md)时接口使用成功,其他时为错误。 190 191 192### OH_Huks_GetKeyItemParamSet() 193 194 195``` 196struct OH_Huks_Result OH_Huks_GetKeyItemParamSet (const struct OH_Huks_Blob * keyAlias, const struct OH_Huks_ParamSet * paramSetIn, struct OH_Huks_ParamSet * paramSetOut ) 197``` 198**描述:** 199获取密钥的属性集。 200 201**参数:** 202 203 | 名称 | 描述 | 204| -------- | -------- | 205| keyAlias | 要获取参数集的密钥别名。 | 206| paramSetIn | 要获取参数集需要的属性TAG(默认传空)。 | 207| paramSetOut | 获取到的输出参数集。 | 208 209**返回:** 210 211返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md)时获取成功,其他时为失败。 212 213 214### OH_Huks_GetSdkVersion() 215 216 217``` 218struct OH_Huks_Result OH_Huks_GetSdkVersion (struct OH_Huks_Blob * sdkVersion) 219``` 220**描述:** 221获取当前Huks sdk版本号。 222 223**参数:** 224 225 | 名称 | 描述 | 226| -------- | -------- | 227| sdkVersion | 用于存放获取到的版本信息(字符串格式)。 | 228 229**返回:** 230 231返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md)时接口使用成功,其他时为错误。 232 233 234### OH_Huks_ImportKeyItem() 235 236 237``` 238struct OH_Huks_Result OH_Huks_ImportKeyItem (const struct OH_Huks_Blob * keyAlias, const struct OH_Huks_ParamSet * paramSet, const struct OH_Huks_Blob * key ) 239``` 240**描述:** 241导入明文密钥。 242 243**参数:** 244 245 | 名称 | 描述 | 246| -------- | -------- | 247| keyAlias | 待导入密钥的别名,需要保证业务所在进程内唯一,否则会发生覆盖。 | 248| paramSet | 待导入密钥的属性参数。 | 249| key | 待导入密钥数据,需符合Huks的格式要求,具体见[HuksTypeApi](_huks_type_api.md)。 | 250 251**返回:** 252 253返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md)时接口使用成功,其他时为错误。 254 255 256### OH_Huks_ImportWrappedKeyItem() 257 258 259``` 260struct OH_Huks_Result OH_Huks_ImportWrappedKeyItem (const struct OH_Huks_Blob * keyAlias, const struct OH_Huks_Blob * wrappingKeyAlias, const struct OH_Huks_ParamSet * paramSet, const struct OH_Huks_Blob * wrappedKeyData ) 261``` 262**描述:** 263导入密文密钥。 264 265**参数:** 266 267 | 名称 | 描述 | 268| -------- | -------- | 269| keyAlias | 待导入密钥的别名,需要保证业务所在进程内唯一,否则会发生覆盖。 | 270| wrappingKeyAlias | 密钥别名,该对应密钥用于密钥协商出密钥解密待导入密钥。 | 271| paramSet | 待导入加密密钥的属性参数。 | 272| wrappedKeyData | 需要导入的加密的密钥数据,需要符合Huks定义的格式,具体见[OH_Huks_AlgSuite](_huks_type_api.md#oh_huks_algsuite) | 273 274**返回:** 275 276返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md)时接口使用成功,其他时为错误。 277 278 279### OH_Huks_InitSession() 280 281 282``` 283struct OH_Huks_Result OH_Huks_InitSession (const struct OH_Huks_Blob * keyAlias, const struct OH_Huks_ParamSet * paramSet, struct OH_Huks_Blob * handle, struct OH_Huks_Blob * token ) 284``` 285**描述:** 286初始化密钥会话接口,并获取一个句柄(必选)和挑战值(可选)。 287 288**参数:** 289 290 | 名称 | 描述 | 291| -------- | -------- | 292| keyAlias | 操作的密钥的别名。 | 293| paramSet | 初始化操作的密钥参数集合。 | 294| handle | 密钥会话的句柄,后续其他操作时传入该句柄,包括[OH_Huks_UpdateSession](#oh_huks_updatesession), [OH_Huks_FinishSession](#oh_huks_finishsession), [OH_Huks_AbortSession](#oh_huks_abortsession)。 | 295| token | 存放安全访问控制时传回的token | 296 297**返回:** 298 299返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md)时接口使用成功,其他时为错误。 300 301**参见:** 302 303[OH_Huks_UpdateSession](#oh_huks_updatesession) 304 305[OH_Huks_FinishSession](#oh_huks_finishsession) 306 307[OH_Huks_AbortSession](#oh_huks_abortsession) 308 309 310### OH_Huks_IsKeyItemExist() 311 312 313``` 314struct OH_Huks_Result OH_Huks_IsKeyItemExist (const struct OH_Huks_Blob * keyAlias, const struct OH_Huks_ParamSet * paramSet ) 315``` 316**描述:** 317判断密钥是否存在。 318 319**参数:** 320 321 | 名称 | 描述 | 322| -------- | -------- | 323| keyAlias | 要查找的密钥的别名。 | 324| paramSet | 查询密钥需要的属性TAG(默认传空)。 | 325 326**返回:** 327 328返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md)时密钥存在, 返回[OH_Huks_ErrCode#OH_HUKS_ERR_CODE_ITEM_NOT_EXIST](_huks_type_api.md)不存在,其他时为错误。 329 330 331### OH_Huks_UpdateSession() 332 333 334``` 335struct OH_Huks_Result OH_Huks_UpdateSession (const struct OH_Huks_Blob * handle, const struct OH_Huks_ParamSet * paramSet, const struct OH_Huks_Blob * inData, struct OH_Huks_Blob * outData ) 336``` 337**描述:** 338分段添加密钥操作的数据并进行相应的密钥操作,输出处理数据。 339 340**参数:** 341 342 | 名称 | 描述 | 343| -------- | -------- | 344| handle | 密钥会话句柄,通过[OH_Huks_InitSession](#oh_huks_initsession)接口生成的。 | 345| paramSet | 密钥操作对应的输入参数集。 | 346| inData | 要处理的输入数据,如果数据过大,可分片多次调用。 | 347| outData | 经过对应的密钥操作后输出的数据。 | 348 349**返回:** 350 351返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md)时接口使用成功,其他时为错误。 352 353**参见:** 354 355[OH_Huks_InitSession](#oh_huks_initsession) 356 357[OH_Huks_FinishSession](#oh_huks_finishsession) 358 359[OH_Huks_AbortSession](#oh_huks_abortsession) 360