• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# asset_api.h
2
3<!--Kit: Asset Store Kit-->
4<!--Subsystem: Security-->
5<!--Owner: @JeremyXu-->
6<!--Designer: @skye_you-->
7<!--Tester: @nacyli-->
8<!--Adviser: @zengyawen-->
9
10## 概述
11
12声明用于访问关键资产的接口。
13
14**引用文件:** <asset/asset_api.h>
15
16**库:** libasset_ndk.z.so
17
18**系统能力:** SystemCapability.Security.Asset
19
20**起始版本:** 11
21
22**相关模块:** [AssetApi](capi-assetapi.md)
23
24## 汇总
25
26### 函数
27
28| 名称 | 描述 |
29| -- | -- |
30| [int32_t OH_Asset_Add(const Asset_Attr *attributes, uint32_t attrCnt)](#oh_asset_add) | 新增一条关键资产。<br>如果要设置[Asset_Tag](capi-asset-type-h.md#asset_tag).ASSET_TAG_IS_PERSISTENT属性,需要申请ohos.permission.STORE_PERSISTENT_DATA权限。 |
31| [int32_t OH_Asset_Remove(const Asset_Attr *query, uint32_t queryCnt)](#oh_asset_remove) | 删除符合条件的一条或多条关键资产。 |
32| [int32_t OH_Asset_Update(const Asset_Attr *query, uint32_t queryCnt, const Asset_Attr *attributesToUpdate, uint32_t updateCnt)](#oh_asset_update) | 更新符合条件的一条关键资产。 |
33| [int32_t OH_Asset_PreQuery(const Asset_Attr *query, uint32_t queryCnt, Asset_Blob *challenge)](#oh_asset_prequery) | 查询的预处理,用于需要用户认证的关键资产。 |
34| [int32_t OH_Asset_Query(const Asset_Attr *query, uint32_t queryCnt, Asset_ResultSet *resultSet)](#oh_asset_query) | 查询一条或多条符合条件的关键资产。 |
35| [int32_t OH_Asset_PostQuery(const Asset_Attr *handle, uint32_t handleCnt)](#oh_asset_postquery) | 查询的后置处理,用于需要用户认证的关键资产。 |
36| [int32_t OH_Asset_QuerySyncResult(const Asset_Attr *query, uint32_t queryCnt, Asset_SyncResult *syncResult)](#oh_asset_querysyncresult) | 查询关键资产的同步结果。 |
37| [Asset_Attr *OH_Asset_ParseAttr(const Asset_Result *result, Asset_Tag tag)](#oh_asset_parseattr) | 解析查询结果,并获取指定的属性值。 |
38| [void OH_Asset_FreeBlob(Asset_Blob *blob)](#oh_asset_freeblob) | 释放挑战值所占用的内存。 |
39| [void OH_Asset_FreeResultSet(Asset_ResultSet *resultSet)](#oh_asset_freeresultset) | 释放查询结果所占用的内存。 |
40
41## 函数说明
42
43### OH_Asset_Add()
44
45```
46int32_t OH_Asset_Add(const Asset_Attr *attributes, uint32_t attrCnt)
47```
48
49**描述**
50
51新增一条关键资产。
52
53如果要设置[Asset_Tag](capi-asset-type-h.md#asset_tag).ASSET_TAG_IS_PERSISTENT属性,需要申请ohos.permission.STORE_PERSISTENT_DATA权限。
54
55**起始版本:** 11
56
57
58**参数:**
59
60| 参数项 | 描述 |
61| -- | -- |
62| const [Asset_Attr](capi-assettype-asset-attr.md) *attributes | 待新增关键资产的属性集合。 |
63| uint32_t attrCnt | 待新增关键资产的属性数量。 |
64
65**返回:**
66
67| 类型 | 说明 |
68| -- | -- |
69| int32_t | [Asset_ResultCode](capi-asset-type-h.md#asset_resultcode):<br>     ASSET_SUCCESS = 0:操作成功。<br>     ASSET_PERMISSION_DENIED = 201:调用方不是一个系统应用。<br>     ASSET_INVALID_ARGUMENT = 401:参数错误。 可能原因:<br>         1. 必选参数未指定。<br>         2. 参数类型错误。<br>         3. 参数校验失败。<br>     ASSET_SERVICE_UNAVAILABLE = 24000001:关键资产服务不可用。<br>     ASSET_DUPLICATED = 24000003:关键资产已存在。<br>     ASSET_STATUS_MISMATCH = 24000005:锁屏状态不匹配。<br>     ASSET_OUT_OF_MEMORY = 24000006:系统内存不足。<br>     ASSET_DATA_CORRUPTED = 24000007:关键资产损坏。<br>     ASSET_DATABASE_ERROR = 24000008:数据库操作失败。<br>     ASSET_CRYPTO_ERROR = 24000009:算法库操作失败。<br>     ASSET_IPC_ERROR = 24000010:进程通信错误。<br>     ASSET_BMS_ERROR = 24000011:包管理服务异常。<br>     ASSET_ACCOUNT_ERROR = 24000012:账号系统异常。<br>     ASSET_ACCESS_TOKEN_ERROR = 24000013:访问控制服务异常。<br>     ASSET_FILE_OPERATION_ERROR = 24000014:文件操作失败。<br>     ASSET_GET_SYSTEM_TIME_ERROR = 24000015:获取系统时间失败。 |
70
71### OH_Asset_Remove()
72
73```
74int32_t OH_Asset_Remove(const Asset_Attr *query, uint32_t queryCnt)
75```
76
77**描述**
78
79删除符合条件的一条或多条关键资产。
80
81**起始版本:** 11
82
83
84**参数:**
85
86| 参数项 | 描述 |
87| -- | -- |
88| const [Asset_Attr](capi-assettype-asset-attr.md) *query | 待删除关键资产的搜索条件。 |
89| uint32_t queryCnt | 待删除关键资产搜索条件的个数。 |
90
91**返回:**
92
93| 类型 | 说明 |
94| -- | -- |
95| int32_t | [Asset_ResultCode](capi-asset-type-h.md#asset_resultcode):<br>     ASSET_SUCCESS = 0:操作成功。<br>     ASSET_INVALID_ARGUMENT = 401:参数错误。 可能原因:<br>         1. 参数类型错误。<br>         2. 参数校验失败。<br>     ASSET_SERVICE_UNAVAILABLE = 24000001:关键资产服务不可用。<br>     ASSET_NOT_FOUND = 24000002:未找到关键资产。<br>     ASSET_OUT_OF_MEMORY = 24000006:系统内存不足。<br>     ASSET_DATA_CORRUPTED = 24000007:关键资产损坏。<br>     ASSET_DATABASE_ERROR = 24000008:数据库操作失败。<br>     ASSET_IPC_ERROR = 24000010:进程通信错误。<br>     ASSET_BMS_ERROR = 24000011:包管理服务异常。<br>     ASSET_ACCOUNT_ERROR = 24000012:账号系统异常。<br>     ASSET_ACCESS_TOKEN_ERROR = 24000013:访问控制服务异常。<br>     ASSET_GET_SYSTEM_TIME_ERROR = 24000015:获取系统时间失败。 |
96
97### OH_Asset_Update()
98
99```
100int32_t OH_Asset_Update(const Asset_Attr *query, uint32_t queryCnt,const Asset_Attr *attributesToUpdate, uint32_t updateCnt)
101```
102
103**描述**
104
105更新符合条件的一条关键资产。
106
107**起始版本:** 11
108
109
110**参数:**
111
112| 参数项 | 描述 |
113| -- | -- |
114| const [Asset_Attr](capi-assettype-asset-attr.md) *query | 待更新关键资产的搜索条件。 |
115| uint32_t queryCnt | 待更新关键资产搜索条件的个数。 |
116| const [Asset_Attr](capi-assettype-asset-attr.md) *attributesToUpdate | 待更新关键资产的属性集合。 |
117| uint32_t updateCnt | 待更新关键资产的属性数量。 |
118
119**返回:**
120
121| 类型 | 说明 |
122| -- | -- |
123| int32_t | [Asset_ResultCode](capi-asset-type-h.md#asset_resultcode):<br>     ASSET_SUCCESS = 0:操作成功。<br>     ASSET_INVALID_ARGUMENT = 401:参数错误。 可能原因:<br>         1. 必选参数未指定。<br>         2. 参数类型错误。<br>         3. 参数校验失败。<br>     ASSET_SERVICE_UNAVAILABLE = 24000001:关键资产服务不可用。<br>     ASSET_NOT_FOUND = 24000002:未找到关键资产。<br>     ASSET_STATUS_MISMATCH = 24000005:锁屏状态不匹配。<br>     ASSET_OUT_OF_MEMORY = 24000006:系统内存不足。<br>     ASSET_DATA_CORRUPTED = 24000007:关键资产损坏。<br>     ASSET_DATABASE_ERROR = 24000008:数据库操作失败。<br>     ASSET_CRYPTO_ERROR = 24000009:算法库操作失败。<br>     ASSET_IPC_ERROR = 24000010:进程通信错误。<br>     ASSET_BMS_ERROR = 24000011:包管理服务异常。<br>     ASSET_ACCOUNT_ERROR = 24000012:账号系统异常。<br>     ASSET_ACCESS_TOKEN_ERROR = 24000013:访问控制服务异常。<br>     ASSET_GET_SYSTEM_TIME_ERROR = 24000015:获取系统时间失败。 |
124
125### OH_Asset_PreQuery()
126
127```
128int32_t OH_Asset_PreQuery(const Asset_Attr *query, uint32_t queryCnt, Asset_Blob *challenge)
129```
130
131**描述**
132
133查询的预处理,用于需要用户认证的关键资产。
134
135**起始版本:** 11
136
137
138**参数:**
139
140| 参数项 | 描述 |
141| -- | -- |
142| const [Asset_Attr](capi-assettype-asset-attr.md) *query | 关键资产的查询条件。 |
143| uint32_t queryCnt | 关键资产查询条件的个数。 |
144| [Asset_Blob](capi-assettype-asset-blob.md) *challenge | 挑战值,在后续调用[OH_Asset_Query](#oh_asset_query)时使用。 |
145
146**返回:**
147
148| 类型 | 说明 |
149| -- | -- |
150| int32_t | [Asset_ResultCode](capi-asset-type-h.md#asset_resultcode):<br>     ASSET_SUCCESS = 0:操作成功。<br>     ASSET_INVALID_ARGUMENT = 401:参数错误。 可能原因:<br>         1. 参数类型错误。<br>         2. 参数校验失败。<br>     ASSET_SERVICE_UNAVAILABLE = 24000001:关键资产服务不可用。<br>     ASSET_NOT_FOUND = 24000002:未找到关键资产。<br>     ASSET_STATUS_MISMATCH = 24000005:锁屏状态不匹配。<br>     ASSET_OUT_OF_MEMORY = 24000006:系统内存不足。<br>     ASSET_DATA_CORRUPTED = 24000007:关键资产损坏。<br>     ASSET_DATABASE_ERROR = 24000008:数据库操作失败。<br>     ASSET_CRYPTO_ERROR = 24000009:算法库操作失败。<br>     ASSET_IPC_ERROR = 24000010:进程通信错误。<br>     ASSET_BMS_ERROR = 24000011:包管理服务异常。<br>     ASSET_ACCOUNT_ERROR = 24000012:账号系统异常。<br>     ASSET_ACCESS_TOKEN_ERROR = 24000013:访问控制服务异常。<br>     ASSET_LIMIT_EXCEEDED = 24000016:缓存数量超限。<br>     ASSET_UNSUPPORTED = 24000017:该子功能不支持。 |
151
152### OH_Asset_Query()
153
154```
155int32_t OH_Asset_Query(const Asset_Attr *query, uint32_t queryCnt, Asset_ResultSet *resultSet)
156```
157
158**描述**
159
160查询一条或多条符合条件的关键资产。
161
162**起始版本:** 11
163
164
165**参数:**
166
167| 参数项 | 描述 |
168| -- | -- |
169| const [Asset_Attr](capi-assettype-asset-attr.md) *query | 关键资产的查询条件。 |
170| uint32_t queryCnt | 关键资产查询条件的个数。 |
171| [Asset_ResultSet](capi-assettype-asset-resultset.md) *resultSet | 查询结果列表。 |
172
173**返回:**
174
175| 类型 | 说明 |
176| -- | -- |
177| int32_t | [Asset_ResultCode](capi-asset-type-h.md#asset_resultcode):<br>     ASSET_SUCCESS = 0:操作成功。<br>     ASSET_INVALID_ARGUMENT = 401:参数错误。 可能原因:<br>         1. 参数类型错误。<br>         2. 参数校验失败。<br>     ASSET_SERVICE_UNAVAILABLE = 24000001:关键资产服务不可用。<br>     ASSET_NOT_FOUND = 24000002:未找到关键资产。<br>     ASSET_ACCESS_DENIED = 24000004:拒绝访问关键资产。<br>     ASSET_STATUS_MISMATCH = 24000005:锁屏状态不匹配。<br>     ASSET_OUT_OF_MEMORY = 24000006:系统内存不足。<br>     ASSET_DATA_CORRUPTED = 24000007:关键资产损坏。<br>     ASSET_DATABASE_ERROR = 24000008:数据库操作失败。<br>     ASSET_CRYPTO_ERROR = 24000009:算法库操作失败。<br>     ASSET_IPC_ERROR = 24000010:进程通信错误。<br>     ASSET_BMS_ERROR = 24000011:包管理服务异常。<br>     ASSET_ACCOUNT_ERROR = 24000012:账号系统异常。<br>     ASSET_ACCESS_TOKEN_ERROR = 24000013:访问控制服务异常。<br>     ASSET_UNSUPPORTED = 24000017:该子功能不支持。 |
178
179### OH_Asset_PostQuery()
180
181```
182int32_t OH_Asset_PostQuery(const Asset_Attr *handle, uint32_t handleCnt)
183```
184
185**描述**
186
187查询的后置处理,用于需要用户认证的关键资产。
188
189**起始版本:** 11
190
191
192**参数:**
193
194| 参数项 | 描述 |
195| -- | -- |
196| const [Asset_Attr](capi-assettype-asset-attr.md) *handle | 待处理的查询句柄,当前包含[OH_Asset_PreQuery](#oh_asset_prequery)执行成功返回的挑战值。 |
197| uint32_t handleCnt | 句柄属性集合中元素的个数。 |
198
199**返回:**
200
201| 类型 | 说明 |
202| -- | -- |
203| int32_t | [Asset_ResultCode](capi-asset-type-h.md#asset_resultcode):<br>     ASSET_SUCCESS = 0:操作成功。<br>     ASSET_INVALID_ARGUMENT = 401:参数错误。 可能原因:<br>         1. 必选参数未指定。<br>         2. 参数类型错误。<br>         3. 参数校验失败。<br>     ASSET_SERVICE_UNAVAILABLE = 24000001:关键资产服务不可用。<br>     ASSET_OUT_OF_MEMORY = 24000006:系统内存不足。<br>     ASSET_IPC_ERROR = 24000010:进程通信错误。<br>     ASSET_BMS_ERROR = 24000011:包管理服务异常。<br>     ASSET_ACCOUNT_ERROR = 24000012:账号系统异常。<br>     ASSET_ACCESS_TOKEN_ERROR = 24000013:访问控制服务异常。 |
204
205### OH_Asset_QuerySyncResult()
206
207```
208int32_t OH_Asset_QuerySyncResult(const Asset_Attr *query, uint32_t queryCnt, Asset_SyncResult *syncResult)
209```
210
211**描述**
212
213查询关键资产的同步结果。
214
215**起始版本:** 20
216
217
218**参数:**
219
220| 参数项 | 描述 |
221| -- | -- |
222| const [Asset_Attr](capi-assettype-asset-attr.md) *query | 关键资产同步结果的查询条件。 |
223| uint32_t queryCnt | 关键资产同步结果的查询条件个数。 |
224| [Asset_SyncResult](capi-assettype-asset-syncresult.md) *syncResult | 查询到的关键资产同步结果。 |
225
226**返回:**
227
228| 类型 | 说明 |
229| -- | -- |
230| int32_t | [Asset_ResultCode](capi-asset-type-h.md#asset_resultcode):<br>     ASSET_SUCCESS = 0:操作成功。<br>     ASSET_SERVICE_UNAVAILABLE = 24000001:关键资产服务不可用。<br>     ASSET_OUT_OF_MEMORY = 24000006:系统内存不足。<br>     ASSET_IPC_ERROR = 24000010:进程通信错误。<br>     ASSET_BMS_ERROR = 24000011:包管理服务异常。<br>     ASSET_ACCOUNT_ERROR = 24000012:账号系统异常。<br>     ASSET_ACCESS_TOKEN_ERROR = 24000013:访问控制服务异常。<br>     ASSET_FILE_OPERATION_ERROR = 24000014:文件操作失败。<br>     ASSET_PARAM_VERIFICATION_FAILED = 24000018:参数校验失败。 |
231
232### OH_Asset_ParseAttr()
233
234```
235Asset_Attr *OH_Asset_ParseAttr(const Asset_Result *result, Asset_Tag tag)
236```
237
238**描述**
239
240解析查询结果,并获取指定的属性值。
241
242**起始版本:** 11
243
244
245**参数:**
246
247| 参数项 | 描述 |
248| -- | -- |
249| const [Asset_Result](capi-assettype-asset-result.md) *result | 从[OH_Asset_Query](#oh_asset_query)中获取的查询结果。 |
250| [Asset_Tag](capi-asset-type-h.md#asset_tag) tag | 待获取的属性标签。 |
251
252**返回:**
253
254| 类型 | 说明 |
255| -- | -- |
256| [Asset_Attr](capi-assettype-asset-attr.md) | 如果操作成功,则以Asset_Attr的形式返回属性,该属性不需要业务进行释放;否则返回NULL。 |
257
258### OH_Asset_FreeBlob()
259
260```
261void OH_Asset_FreeBlob(Asset_Blob *blob)
262```
263
264**描述**
265
266释放挑战值所占用的内存。
267
268**起始版本:** 11
269
270
271**参数:**
272
273| 参数项 | 描述 |
274| -- | -- |
275| [Asset_Blob](capi-assettype-asset-blob.md) *blob | 从[OH_Asset_PreQuery](#oh_asset_prequery)获取的挑战值。 |
276
277### OH_Asset_FreeResultSet()
278
279```
280void OH_Asset_FreeResultSet(Asset_ResultSet *resultSet)
281```
282
283**描述**
284
285释放查询结果所占用的内存。
286
287**起始版本:** 11
288
289
290**参数:**
291
292| 参数项 | 描述 |
293| -- | -- |
294| [Asset_ResultSet](capi-assettype-asset-resultset.md) *resultSet | 从[OH_Asset_Query](#oh_asset_query)得到的查询结果列表。 |
295
296
297