1# HuksKeyApi 2 3 4## 概述 5 6描述HUKS向应用提供密钥库能力,包括密钥管理及密钥的密码学操作等功能。 管理的密钥可以由应用导入或者由应用调用HUKS接口生成。 7 8**系统能力:** SystemCapability.Security.Huks 9 10**起始版本:** 9 11 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> <br>**库**:libhuks_ndk.z.so | 21 22 23### 函数 24 25| 名称 | 描述 | 26| -------- | -------- | 27| struct [OH_Huks_Result](_o_h___huks___result.md) [OH_Huks_GetSdkVersion](#oh_huks_getsdkversion) (struct [OH_Huks_Blob](_o_h___huks___blob.md) \*sdkVersion) | 获取当前Huks sdk版本号。 | 28| struct [OH_Huks_Result](_o_h___huks___result.md) [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| struct [OH_Huks_Result](_o_h___huks___result.md) [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| struct [OH_Huks_Result](_o_h___huks___result.md) [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| struct [OH_Huks_Result](_o_h___huks___result.md) [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| struct [OH_Huks_Result](_o_h___huks___result.md) [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| struct [OH_Huks_Result](_o_h___huks___result.md) [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| struct [OH_Huks_Result](_o_h___huks___result.md) [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| struct [OH_Huks_Result](_o_h___huks___result.md) [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| struct [OH_Huks_Result](_o_h___huks___result.md) [OH_Huks_AnonAttestKeyItem](#oh_huks_anonattestkeyitem) (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) | 获取密钥证书链。 | 37| struct [OH_Huks_Result](_o_h___huks___result.md) [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) | 初始化密钥会话接口,并获取一个句柄(必选)和挑战值(可选)。 | 38| struct [OH_Huks_Result](_o_h___huks___result.md) [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) | 分段添加密钥操作的数据并进行相应的密钥操作,输出处理数据。 | 39| struct [OH_Huks_Result](_o_h___huks___result.md) [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) | 结束密钥会话并进行相应的密钥操作,输出处理数据。 | 40| struct [OH_Huks_Result](_o_h___huks___result.md) [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) | 取消密钥会话。 | 41| struct [OH_Huks_Result](_o_h___huks___result.md) [OH_Huks_ListAliases](#oh_huks_listaliases) (const struct [OH_Huks_ParamSet](_o_h___huks___param_set.md) \*paramSet, struct [OH_Huks_KeyAliasSet](_o_h___huks___key_alias_set.md) \*\*outData) | 批量查询密钥别名集。 | 42 43 44## 函数说明 45 46 47### OH_Huks_AbortSession() 48 49``` 50struct OH_Huks_Result OH_Huks_AbortSession (const struct OH_Huks_Blob * handle, const struct OH_Huks_ParamSet * paramSet ) 51``` 52**描述** 53取消密钥会话。 54 55**起始版本:** 9 56 57**参数:** 58 59| 名称 | 描述 | 60| -------- | -------- | 61| handle | 密钥会话句柄,通过[OH_Huks_InitSession](#oh_huks_initsession)接口生成的。 | 62| paramSet | 取消密钥会话需要的输入参数集(默认传空)。 | 63 64**返回:** 65 66返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md#oh_huks_errcode)时接口使用成功,其他时为错误。 67 68**参见:** 69 70[OH_Huks_InitSession](#oh_huks_initsession) 71 72[OH_Huks_UpdateSession](#oh_huks_updatesession) 73 74[OH_Huks_FinishSession](#oh_huks_finishsession) 75 76 77### OH_Huks_AnonAttestKeyItem() 78 79``` 80struct OH_Huks_Result OH_Huks_AnonAttestKeyItem (const struct OH_Huks_Blob * keyAlias, const struct OH_Huks_ParamSet * paramSet, struct OH_Huks_CertChain * certChain ) 81``` 82**描述** 83获取密钥证书链。 84 85**起始版本:** 11 86 87**参数:** 88 89| 名称 | 描述 | 90| -------- | -------- | 91| keyAlias | 要获取证书的密钥的别名。 | 92| paramSet | 获取密钥证书需要的参数。 | 93| certChain | 存放输出的密钥证书链。 | 94 95**返回:** 96 97返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md#oh_huks_errcode)时获取成功,其他时为错误。 98 99**注解:** 100 101这是一个涉及网络的耗时接口,调用方可以通过异步线程获取证书链。 102 103 104### OH_Huks_AttestKeyItem() 105 106``` 107struct OH_Huks_Result OH_Huks_AttestKeyItem (const struct OH_Huks_Blob * keyAlias, const struct OH_Huks_ParamSet * paramSet, struct OH_Huks_CertChain * certChain ) 108``` 109 110**描述** 111获取密钥证书链。 112 113**需要权限:** 114ohos.permission.ATTEST_KEY,该权限仅系统应用可申请。 115 116**起始版本:** 9 117 118**参数:** 119 120| 名称 | 描述 | 121| -------- | -------- | 122| keyAlias | 要获取证书的密钥的别名。 | 123| paramSet | 获取密钥证书需要的参数。 | 124| certChain | 存放输出的密钥证书链。 | 125 126**返回:** 127 128返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md#oh_huks_errcode)时获取成功,其他时为错误。 129 130 131### OH_Huks_DeleteKeyItem() 132 133``` 134struct OH_Huks_Result OH_Huks_DeleteKeyItem (const struct OH_Huks_Blob * keyAlias, const struct OH_Huks_ParamSet * paramSet ) 135``` 136**描述** 137删除密钥。 138 139**起始版本:** 9 140 141**参数:** 142 143| 名称 | 描述 | 144| -------- | -------- | 145| keyAlias | 待删除密钥的别名,应与密钥生成时使用的别名相同。 | 146| paramSet | 删除密钥需要属性参数(默认传空)。 | 147 148**返回:** 149 150返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md#oh_huks_errcode)时接口使用成功,其他时为错误。 151 152 153### OH_Huks_ExportPublicKeyItem() 154 155``` 156struct OH_Huks_Result OH_Huks_ExportPublicKeyItem (const struct OH_Huks_Blob * keyAlias, const struct OH_Huks_ParamSet * paramSet, struct OH_Huks_Blob * key ) 157``` 158**描述** 159导出公钥。 160 161**起始版本:** 9 162 163**参数:** 164 165| 名称 | 描述 | 166| -------- | -------- | 167| keyAlias | 待导出公钥的密钥别名,应与所用密钥生成时使用的别名相同。 | 168| paramSet | 导出公钥需要的属性参数。 | 169| key | 存放导出的公钥。 | 170 171**返回:** 172 173返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md#oh_huks_errcode)时接口使用成功,其他时为错误。 174 175 176### OH_Huks_FinishSession() 177 178``` 179struct 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 ) 180``` 181**描述** 182结束密钥会话并进行相应的密钥操作,输出处理数据。 183 184**起始版本:** 9 185 186**参数:** 187 188| 名称 | 描述 | 189| -------- | -------- | 190| handle | 密钥会话句柄,通过[OH_Huks_InitSession](#oh_huks_initsession)接口生成的。 | 191| paramSet | 密钥操作对应的输入参数集。 | 192| inData | 要处理的输入数据。 | 193| outData | 经过对应的密钥操作后输出的数据。 | 194 195**返回:** 196 197返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md#oh_huks_errcode)时接口使用成功,其他时为错误。 198 199**参见:** 200 201[OH_Huks_InitSession](#oh_huks_initsession) 202 203[OH_Huks_UpdateSession](#oh_huks_updatesession) 204 205[OH_Huks_AbortSession](#oh_huks_abortsession) 206 207 208### OH_Huks_GenerateKeyItem() 209 210``` 211struct OH_Huks_Result OH_Huks_GenerateKeyItem (const struct OH_Huks_Blob * keyAlias, const struct OH_Huks_ParamSet * paramSetIn, struct OH_Huks_ParamSet * paramSetOut ) 212``` 213**描述** 214生成密钥。 215 216**起始版本:** 9 217 218**参数:** 219 220| 名称 | 描述 | 221| -------- | -------- | 222| keyAlias | 给要生成的密钥的别名,需要保证业务所在进程内唯一,否则会发生覆盖。 | 223| paramSetIn | 生成密钥的属性信息的参数集。 | 224| paramSetOut | 生成密钥为临时类型时,存放着密钥数据;非临时类型可为空。 | 225 226**返回:** 227 228返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md#oh_huks_errcode)时接口使用成功,其他时为错误。 229 230 231### OH_Huks_GetKeyItemParamSet() 232 233``` 234struct OH_Huks_Result OH_Huks_GetKeyItemParamSet (const struct OH_Huks_Blob * keyAlias, const struct OH_Huks_ParamSet * paramSetIn, struct OH_Huks_ParamSet * paramSetOut ) 235``` 236**描述** 237获取密钥的属性集。 238 239**起始版本:** 9 240 241**参数:** 242 243| 名称 | 描述 | 244| -------- | -------- | 245| keyAlias | 要获取参数集的密钥别名。 | 246| paramSetIn | 要获取参数集需要的属性TAG(默认传空)。 | 247| paramSetOut | 获取到的输出参数集。 | 248 249**返回:** 250 251返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md#oh_huks_errcode)时获取成功,其他时为失败。 252 253 254### OH_Huks_GetSdkVersion() 255 256``` 257struct OH_Huks_Result OH_Huks_GetSdkVersion (struct OH_Huks_Blob * sdkVersion) 258``` 259**描述** 260获取当前Huks sdk版本号。 261 262**起始版本:** 9 263 264**参数:** 265 266| 名称 | 描述 | 267| -------- | -------- | 268| sdkVersion | 用于存放获取到的版本信息(字符串格式)。 | 269 270**返回:** 271 272返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md#oh_huks_errcode)时接口使用成功,其他时为错误。 273 274 275### OH_Huks_ImportKeyItem() 276 277``` 278struct OH_Huks_Result OH_Huks_ImportKeyItem (const struct OH_Huks_Blob * keyAlias, const struct OH_Huks_ParamSet * paramSet, const struct OH_Huks_Blob * key ) 279``` 280**描述** 281导入明文密钥。 282 283**起始版本:** 9 284 285**参数:** 286 287| 名称 | 描述 | 288| -------- | -------- | 289| keyAlias | 待导入密钥的别名,需要保证业务所在进程内唯一,否则会发生覆盖。 | 290| paramSet | 待导入密钥的属性参数。 | 291| key | 待导入密钥数据,需符合Huks的格式要求,具体见[HuksTypeApi](_huks_type_api.md)。 | 292 293**返回:** 294 295返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md#oh_huks_errcode)时接口使用成功,其他时为错误。 296 297 298### OH_Huks_ImportWrappedKeyItem() 299 300``` 301struct 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 ) 302``` 303**描述** 304导入密文密钥。 305 306**起始版本:** 9 307 308**参数:** 309 310| 名称 | 描述 | 311| -------- | -------- | 312| keyAlias | 待导入密钥的别名,需要保证业务所在进程内唯一,否则会发生覆盖。 | 313| wrappingKeyAlias | 密钥别名,该对应密钥用于密钥协商出密钥解密待导入密钥。 | 314| paramSet | 待导入加密密钥的属性参数。 | 315| wrappedKeyData | 需要导入的加密的密钥数据,需要符合Huks定义的格式,具体见[OH_Huks_AlgSuite](_huks_type_api.md#oh_huks_algsuite) | 316 317**返回:** 318 319返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md#oh_huks_errcode)时接口使用成功,其他时为错误。 320 321 322### OH_Huks_InitSession() 323 324``` 325struct 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 ) 326``` 327**描述** 328初始化密钥会话接口,并获取一个句柄(必选)和挑战值(可选)。 329 330**起始版本:** 9 331 332**参数:** 333 334| 名称 | 描述 | 335| -------- | -------- | 336| keyAlias | 操作的密钥的别名。 | 337| paramSet | 初始化操作的密钥参数集合。 | 338| handle | 密钥会话的句柄,后续其他操作时传入该句柄,包括[OH_Huks_UpdateSession](#oh_huks_updatesession), [OH_Huks_FinishSession](#oh_huks_finishsession), [OH_Huks_AbortSession](#oh_huks_abortsession)。 | 339| token | 存放安全访问控制时传回的token | 340 341**返回:** 342 343返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md#oh_huks_errcode)时接口使用成功,其他时为错误。 344 345**参见:** 346 347[OH_Huks_UpdateSession](#oh_huks_updatesession) 348 349[OH_Huks_FinishSession](#oh_huks_finishsession) 350 351[OH_Huks_AbortSession](#oh_huks_abortsession) 352 353 354### OH_Huks_IsKeyItemExist() 355 356``` 357struct OH_Huks_Result OH_Huks_IsKeyItemExist (const struct OH_Huks_Blob * keyAlias, const struct OH_Huks_ParamSet * paramSet ) 358``` 359**描述** 360判断密钥是否存在。 361 362**起始版本:** 9 363 364**参数:** 365 366| 名称 | 描述 | 367| -------- | -------- | 368| keyAlias | 要查找的密钥的别名。 | 369| paramSet | 查询密钥需要的属性TAG(默认传空)。 | 370 371**返回:** 372 373返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md#oh_huks_errcode)时密钥存在, 374 375返回[OH_Huks_ErrCode#OH_HUKS_ERR_CODE_ITEM_NOT_EXIST](_huks_type_api.md#oh_huks_errcode)不存在,返回其他错误在其他情况。 376 377 378### OH_Huks_ListAliases() 379 380``` 381struct OH_Huks_Result OH_Huks_ListAliases (const struct OH_Huks_ParamSet * paramSet, struct OH_Huks_KeyAliasSet ** outData ) 382``` 383**描述** 384批量查询密钥别名集。 385 386**起始版本:** 12 387 388**参数:** 389 390| 名称 | 描述 | 391| -------- | -------- | 392| paramSet | 查询密钥别名需要的属性TAG(默认传空)。 | 393| outData | 经过对应的查询操作后输出的密钥别名集数据。 | 394 395**返回:** 396 397返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md#oh_huks_errcode)时接口使用成功,其他时为错误。 398 399 400### OH_Huks_UpdateSession() 401 402``` 403struct 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 ) 404``` 405**描述** 406分段添加密钥操作的数据并进行相应的密钥操作,输出处理数据。 407 408**起始版本:** 9 409 410**参数:** 411 412| 名称 | 描述 | 413| -------- | -------- | 414| handle | 密钥会话句柄,通过[OH_Huks_InitSession](#oh_huks_initsession)接口生成的。 | 415| paramSet | 密钥操作对应的输入参数集。 | 416| inData | 要处理的输入数据,如果数据过大,可分片多次调用。 | 417| outData | 经过对应的密钥操作后输出的数据。 | 418 419**返回:** 420 421返回[OH_Huks_ErrCode#OH_HUKS_SUCCESS](_huks_type_api.md#oh_huks_errcode)时接口使用成功,其他时为错误。 422 423**参见:** 424 425[OH_Huks_InitSession](#oh_huks_initsession) 426 427[OH_Huks_FinishSession](#oh_huks_finishsession) 428 429[OH_Huks_AbortSession](#oh_huks_abortsession) 430