1# AssetApi 2 3 4## 概述 5 6提供用户短敏感数据的安全存储及管理能力,包括新增、删除、更新、查询等。 7其中,短敏感数据可以是密码类(账号/密码)、Token类(应用凭据)、其他关键明文(如银行卡号)等长度较短的用户敏感数据。 8 9**系统能力:** SystemCapability.Security.Asset 10 11**起始版本:** 11 12 13 14## 汇总 15 16 17### 文件 18 19| 名称 | 描述 | 20| -------- | -------- | 21| [asset_api.h](asset__api_8h.md) | 声明用于访问关键资产的接口。 | 22 23 24### 函数 25 26| 名称 | 描述 | 27| -------- | -------- | 28| int32_t [OH_Asset_Add](#oh_asset_add) (const [Asset_Attr](_asset___attr.md) \*attributes, uint32_t attrCnt) | 新增一条关键资产。 | 29| int32_t [OH_Asset_Remove](#oh_asset_remove) (const [Asset_Attr](_asset___attr.md) \*query, uint32_t queryCnt) | 删除符合条件的一条或多条关键资产。 | 30| int32_t [OH_Asset_Update](#oh_asset_update) (const [Asset_Attr](_asset___attr.md) \*query, uint32_t queryCnt, const [Asset_Attr](_asset___attr.md) \*attributesToUpdate, uint32_t updateCnt) | 更新符合条件的一条关键资产。 | 31| int32_t [OH_Asset_PreQuery](#oh_asset_prequery) (const [Asset_Attr](_asset___attr.md) \*query, uint32_t queryCnt, [Asset_Blob](_asset___blob.md) \*challenge) | 查询的预处理,用于需要用户认证的关键资产。 | 32| int32_t [OH_Asset_Query](#oh_asset_query) (const [Asset_Attr](_asset___attr.md) \*query, uint32_t queryCnt, [Asset_ResultSet](_asset___result_set.md) \*resultSet) | 查询一条或多条符合条件的关键资产。 | 33| int32_t [OH_Asset_PostQuery](#oh_asset_postquery) (const [Asset_Attr](_asset___attr.md) \*handle, uint32_t handleCnt) | 查询的后置处理,用于需要用户认证的关键资产。 | 34| [Asset_Attr](_asset___attr.md) \* [OH_Asset_ParseAttr](#oh_asset_parseattr) (const [Asset_Result](_asset___result.md) \*result, [Asset_Tag](_asset_type.md#asset_tag) tag) | 解析查询结果,并获取指定的属性值。 | 35| void [OH_Asset_FreeBlob](#oh_asset_freeblob) ([Asset_Blob](_asset___blob.md) \*blob) | 释放挑战值所占用的内存。 | 36| void [OH_Asset_FreeResultSet](#oh_asset_freeresultset) ([Asset_ResultSet](_asset___result_set.md) \*resultSet) | 释放查询结果所占用的内存。 | 37 38 39## 函数说明 40 41 42### OH_Asset_Add() 43 44``` 45int32_t OH_Asset_Add (const Asset_Attr * attributes, uint32_t attrCnt ) 46``` 47**描述** 48新增一条关键资产。 49 50如果要设置[ASSET_TAG_IS_PERSISTENT](_asset_type.md#asset_tag)属性,需要申请ohos.permission.STORE_PERSISTENT_DATA权限。 51 52**起始版本:** 11 53 54**参数:** 55 56| 名称 | 描述 | 57| -------- | -------- | 58| attributes | 待新增关键资产的属性集合。 | 59| attrCnt | 待新增关键资产的属性数量。 | 60 61**返回:** 62 63如果操作成功,则返回[ASSET_SUCCESS](_asset_type.md#asset_resultcode);否则返回错误码。 64 650 - 表示操作成功。 66 67201 - 表示调用者没有权限。 68 69401 - 表示参数错误。 70 7124000001 - 表示关键资产服务不可用。 72 7324000003 - 表示关键资产已存在。 74 7524000005 - 表示锁屏状态不匹配。 76 7724000006 - 表示系统内存不足。 78 7924000007 - 表示关键资产损坏。 80 8124000008 - 表示数据库操作失败。 82 8324000009 - 表示算法库操作失败。 84 8524000010 - 表示进程通信错误。 86 8724000011 - 表示包管理服务异常。 88 8924000012 - 表示账号系统异常。 90 9124000013 - 表示访问控制服务异常。 92 9324000014 - 表示文件操作失败。 94 9524000015 - 表示获取系统时间失败。 96 97 98### OH_Asset_FreeBlob() 99 100``` 101void OH_Asset_FreeBlob (Asset_Blob * blob) 102``` 103**描述** 104释放挑战值所占用的内存。 105 106**起始版本:** 11 107 108**参数:** 109 110| 名称 | 描述 | 111| -------- | -------- | 112| blob | 从OH_Asset_PreQuery获取的挑战值。 | 113 114 115### OH_Asset_FreeResultSet() 116 117``` 118void OH_Asset_FreeResultSet (Asset_ResultSet * resultSet) 119``` 120**描述** 121释放查询结果所占用的内存。 122 123**起始版本:** 11 124 125**参数:** 126 127| 名称 | 描述 | 128| -------- | -------- | 129| resultSet | 从OH_Asset_Query得到的查询结果列表。 | 130 131 132### OH_Asset_ParseAttr() 133 134``` 135Asset_Attr* OH_Asset_ParseAttr (const Asset_Result * result, Asset_Tag tag ) 136``` 137**描述** 138解析查询结果,并获取指定的属性值。 139 140**起始版本:** 11 141 142**参数:** 143 144| 名称 | 描述 | 145| -------- | -------- | 146| result | 从OH_Asset_Query中获取的查询结果。 | 147| tag | 待获取的属性标签。 | 148 149**返回:** 150 151如果操作成功,则以Asset_Attr的形式返回属性,该属性不需要业务进行释放;否则返回NULL。 152 153 154### OH_Asset_PostQuery() 155 156``` 157int32_t OH_Asset_PostQuery (const Asset_Attr * handle, uint32_t handleCnt ) 158``` 159**描述** 160查询的后置处理,用于需要用户认证的关键资产。 161 162**起始版本:** 11 163 164**参数:** 165 166| 名称 | 描述 | 167| -------- | -------- | 168| handle | 待处理的查询句柄,当前包含OH_Asset_PreQuery执行成功返回的挑战值。 | 169| handleCnt | 句柄属性集合中元素的个数。 | 170 171**返回:** 172 173如果操作成功,则返回[ASSET_SUCCESS](_asset_type.md#asset_resultcode);否则返回错误码。 174 1750 - 表示操作成功。 176 177401 - 表示参数错误。 178 17924000001 - 表示关键资产服务不可用。 180 18124000006 - 表示系统内存不足。 182 18324000010 - 表示进程通信错误。 184 18524000011 - 表示包管理服务异常。 186 18724000012 - 表示账号系统异常。 188 18924000013 - 表示访问控制服务异常。 190 191### OH_Asset_PreQuery() 192 193``` 194int32_t OH_Asset_PreQuery (const Asset_Attr * query, uint32_t queryCnt, Asset_Blob * challenge ) 195``` 196**描述** 197查询的预处理,用于需要用户认证的关键资产。 198 199**起始版本:** 11 200 201**参数:** 202 203| 名称 | 描述 | 204| -------- | -------- | 205| query | 关键资产的查询条件。 | 206| queryCnt | 关键资产查询条件的个数。 | 207| challenge | 挑战值,在后续调用OH_Asset_Query时使用。 | 208 209**返回:** 210 211如果操作成功,则返回[ASSET_SUCCESS](_asset_type.md#asset_resultcode);否则返回错误码。 212 2130 - 表示操作成功。 214 215401 - 表示参数错误。 216 21724000001 - 表示关键资产服务不可用。 218 21924000002 - 表示未找到关键资产。 220 22124000005 - 表示锁屏状态不匹配。 222 22324000006 - 表示系统内存不足。 224 22524000007 - 表示关键资产损坏。 226 22724000008 - 表示数据库操作失败。 228 22924000009 - 表示算法库操作失败。 230 23124000010 - 表示进程通信错误。 232 23324000011 - 表示包管理服务异常。 234 23524000012 - 表示账号系统异常。 236 23724000013 - 表示访问控制服务异常。 238 23924000016 - 表示缓存数量超限。 240 24124000017 - 表示该子功能不支持。 242 243### OH_Asset_Query() 244 245``` 246int32_t OH_Asset_Query (const Asset_Attr * query, uint32_t queryCnt, Asset_ResultSet * resultSet ) 247``` 248**描述** 249查询一条或多条符合条件的关键资产。 250 251**起始版本:** 11 252 253**参数:** 254 255| 名称 | 描述 | 256| -------- | -------- | 257| query | 关键资产的查询条件。 | 258| queryCnt | 关键资产查询条件的个数。 | 259| resultSet | 查询结果列表。 | 260 261**返回:** 262 263如果操作成功,则返回[ASSET_SUCCESS](_asset_type.md#asset_resultcode);否则返回错误码。 264 2650 - 表示操作成功。 266 267401 - 表示参数错误。 268 26924000001 - 表示关键资产服务不可用。 270 27124000002 - 表示未找到关键资产。 272 27324000004 - 表示拒绝访问关键资产。 274 27524000005 - 表示锁屏状态不匹配。 276 27724000006 - 表示系统内存不足。 278 27924000007 - 表示关键资产损坏。 280 28124000008 - 表示数据库操作失败。 282 28324000009 - 表示算法库操作失败。 284 28524000010 - 表示进程通信错误。 286 28724000011 - 表示包管理服务异常。 288 28924000012 - 表示账号系统异常。 290 29124000013 - 表示访问控制服务异常。 292 29324000017 - 表示该子功能不支持。 294 295### OH_Asset_Remove() 296 297``` 298int32_t OH_Asset_Remove (const Asset_Attr * query, uint32_t queryCnt ) 299``` 300**描述** 301删除符合条件的一条或多条关键资产。 302 303**起始版本:** 11 304 305**参数:** 306 307| 名称 | 描述 | 308| -------- | -------- | 309| query | 待删除关键资产的搜索条件。 | 310| queryCnt | 待删除关键资产搜索条件的个数。 | 311 312**返回:** 313 314如果操作成功,则返回[ASSET_SUCCESS](_asset_type.md#asset_resultcode);否则返回错误码。 315 3160 - 表示操作成功。 317 318401 - 表示参数错误。 319 32024000001 - 表示关键资产服务不可用。 321 32224000002 - 表示未找到关键资产。 323 32424000006 - 表示系统内存不足。 325 32624000007 - 表示关键资产损坏。 327 32824000008 - 表示数据库操作失败。 329 33024000010 - 表示进程通信错误。 331 33224000011 - 表示包管理服务异常。 333 33424000012 - 表示账号系统异常。 335 33624000013 - 表示访问控制服务异常。 337 33824000015 - 表示获取系统时间失败。 339 340### OH_Asset_Update() 341 342``` 343int32_t OH_Asset_Update (const Asset_Attr * query, uint32_t queryCnt, const Asset_Attr * attributesToUpdate, uint32_t updateCnt ) 344``` 345**描述** 346更新符合条件的一条关键资产。 347 348**起始版本:** 11 349 350**参数:** 351 352| 名称 | 描述 | 353| -------- | -------- | 354| query | 待更新关键资产的搜索条件。 | 355| queryCnt | 待更新关键资产搜索条件的个数。 | 356| attributesToUpdate | 待更新关键资产的属性集合。 | 357| updateCnt | 待更新关键资产的属性数量。 | 358 359**返回:** 360 361如果操作成功,则返回[ASSET_SUCCESS](_asset_type.md#asset_resultcode);否则返回错误码。 362 3630 - 表示操作成功。 364 365401 - 表示参数错误。 366 36724000001 - 表示关键资产服务不可用。 368 36924000002 - 表示未找到关键资产。 370 37124000005 - 表示锁屏状态不匹配。 372 37324000006 - 表示系统内存不足。 374 37524000007 - 表示关键资产损坏。 376 37724000008 - 表示数据库操作失败。 378 37924000009 - 表示算法库操作失败。 380 38124000010 - 表示进程通信错误。 382 38324000011 - 表示包管理服务异常。 384 38524000012 - 表示账号系统异常。 386 38724000013 - 表示访问控制服务异常。 388 38924000015 - 表示获取系统时间失败。 390