harmony 鸿蒙@ohos.security.asset (关键资产存储服务)

  • 2025-06-12
  • 浏览 (4)

@ohos.security.asset (关键资产存储服务)

关键资产存储服务提供了用户短敏感数据的安全存储及管理能力。其中,短敏感数据可以是密码类(账号/密码)、Token类(应用凭据)、其他关键明文(如银行卡号)等长度较短的用户敏感数据。

说明:

本模块首批接口从API version 11 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

import { asset } from '@kit.AssetStoreKit';

asset.add

add(attributes: AssetMap): Promise<void>

新增一条关键资产,使用Promise方式异步返回结果。

设置IS_PERSISTENT属性时,需要申请ohos.permission.STORE_PERSISTENT_DATA权限。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Security.Asset

参数:

参数名 类型 必填 说明
attributes AssetMap 待新增关键资产的属性集合,包括关键资产明文、访问控制属性、自定义数据等。

返回值:

类型 说明
Promise<void> Promise对象,无返回值。

错误码:

以下错误码的详细介绍请参见关键资产存储服务错误码

错误码ID 错误信息
201 The caller doesn’t have the permission.
401 Parameter error. Possible causes:
1. Mandatory parameters are left unspecified.
2. Incorrect parameter types.
3. Parameter verification failed.
24000001 The ASSET service is unavailable.
24000003 The asset already exists.
24000005 The screen lock status does not match.
24000006 Insufficient memory.
24000007 The asset is corrupted.
24000008 The database operation failed.
24000009 The cryptography operation failed.
24000010 IPC failed.
24000011 Calling the Bundle Manager service failed.
24000012 Calling the OS Account service failed.
24000013 Calling the Access Token service failed.
24000014 The file operation failed.
24000015 Getting the system time failed.

示例:

import { asset } from '@kit.AssetStoreKit';
import { util } from '@kit.ArkTS';
import { BusinessError } from '@kit.BasicServicesKit';

function stringToArray(str: string): Uint8Array {
  let textEncoder = new util.TextEncoder();
  return textEncoder.encodeInto(str);
}

let attr: asset.AssetMap = new Map();
attr.set(asset.Tag.SECRET, stringToArray('demo_pwd'));
attr.set(asset.Tag.ALIAS, stringToArray('demo_alias'));
attr.set(asset.Tag.ACCESSIBILITY, asset.Accessibility.DEVICE_FIRST_UNLOCKED);
attr.set(asset.Tag.DATA_LABEL_NORMAL_1, stringToArray('demo_label'));
try {
  asset.add(attr).then(() => {
    console.info(`Asset added successfully.`);
  }).catch((err: BusinessError) => {
    console.error(`Failed to add Asset. Code is ${err.code}, message is ${err.message}`);
  })
} catch (error) {
  let err = error as BusinessError;
  console.error(`Failed to add Asset. Code is ${err.code}, message is ${err.message}`);
}

asset.addSync12+

addSync(attributes: AssetMap): void

新增一条关键资产,使用同步方式返回结果。

如果要设置IS_PERSISTENT属性,需要申请ohos.permission.STORE_PERSISTENT_DATA权限。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Security.Asset

参数:

参数名 类型 必填 说明
attributes AssetMap 待新增关键资产的属性集合,包括关键资产明文、访问控制属性、自定义数据等。

错误码:

以下错误码的详细介绍请参见关键资产存储服务错误码

错误码ID 错误信息
201 The caller doesn’t have the permission.
401 Parameter error. Possible causes:
1. Mandatory parameters are left unspecified.
2. Incorrect parameter types.
3. Parameter verification failed.
24000001 The ASSET service is unavailable.
24000003 The asset already exists.
24000005 The screen lock status does not match.
24000006 Insufficient memory.
24000007 The asset is corrupted.
24000008 The database operation failed.
24000009 The cryptography operation failed.
24000010 IPC failed.
24000011 Calling the Bundle Manager service failed.
24000012 Calling the OS Account service failed.
24000013 Calling the Access Token service failed.
24000014 The file operation failed.
24000015 Getting the system time failed.

示例:

import { asset } from '@kit.AssetStoreKit';
import { util } from '@kit.ArkTS';
import { BusinessError } from '@kit.BasicServicesKit';

function stringToArray(str: string): Uint8Array {
  let textEncoder = new util.TextEncoder();
  return textEncoder.encodeInto(str);
}

let attr: asset.AssetMap = new Map();
attr.set(asset.Tag.SECRET, stringToArray('demo_pwd'));
attr.set(asset.Tag.ALIAS, stringToArray('demo_alias'));
attr.set(asset.Tag.ACCESSIBILITY, asset.Accessibility.DEVICE_FIRST_UNLOCKED);
attr.set(asset.Tag.DATA_LABEL_NORMAL_1, stringToArray('demo_label'));
try {
  asset.addSync(attr);
} catch (error) {
  let err = error as BusinessError;
  console.error(`Failed to add Asset. Code is ${err.code}, message is ${err.message}`);
}

asset.remove

remove(query: AssetMap): Promise<void>

删除符合条件的一条或多条关键资产,使用Promise方式异步返回结果。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Security.Asset

参数:

参数名 类型 必填 说明
query AssetMap 待删除关键资产的搜索条件,如别名、访问控制属性、自定义数据等。

返回值:

类型 说明
Promise<void> Promise对象,无返回值。

错误码:

以下错误码的详细介绍请参见关键资产存储服务错误码

错误码ID 错误信息
401 Parameter error. Possible causes:
1. Incorrect parameter types.
2. Parameter verification failed.
24000001 The ASSET service is unavailable.
24000002 The asset is not found.
24000006 Insufficient memory.
24000007 The asset is corrupted.
24000008 The database operation failed.
24000010 IPC failed.
24000011 Calling the Bundle Manager service failed.
24000012 Calling the OS Account service failed.
24000013 Calling the Access Token service failed.
24000015 Getting the system time failed.

示例:

import { asset } from '@kit.AssetStoreKit';
import { util } from '@kit.ArkTS';
import { BusinessError } from '@kit.BasicServicesKit';

function stringToArray(str: string): Uint8Array {
  let textEncoder = new util.TextEncoder();
  return textEncoder.encodeInto(str);
}

let query: asset.AssetMap = new Map();
query.set(asset.Tag.ALIAS, stringToArray('demo_alias'));
try {
  asset.remove(query).then(() => {
    console.info(`Asset removed successfully.`);
  }).catch((err: BusinessError) => {
    console.error(`Failed to remove Asset. Code is ${err.code}, message is ${err.message}`);
  });
} catch (error) {
  let err = error as BusinessError;
  console.error(`Failed to remove Asset. Code is ${err.code}, message is ${err.message}`);
}

asset.removeSync12+

removeSync(query: AssetMap): void

删除符合条件的一条或多条关键资产,使用同步方式。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Security.Asset

参数:

参数名 类型 必填 说明
query AssetMap 待删除关键资产的搜索条件,如别名、访问控制属性、自定义数据等。

错误码:

以下错误码的详细介绍请参见关键资产存储服务错误码

错误码ID 错误信息
401 Parameter error. Possible causes:
1. Incorrect parameter types.
2. Parameter verification failed.
24000001 The ASSET service is unavailable.
24000002 The asset is not found.
24000006 Insufficient memory.
24000007 The asset is corrupted.
24000008 The database operation failed.
24000010 IPC failed.
24000011 Calling the Bundle Manager service failed.
24000012 Calling the OS Account service failed.
24000013 Calling the Access Token service failed.
24000015 Getting the system time failed.

示例:

import { asset } from '@kit.AssetStoreKit';
import { util } from '@kit.ArkTS';
import { BusinessError } from '@kit.BasicServicesKit';

function stringToArray(str: string): Uint8Array {
  let textEncoder = new util.TextEncoder();
  return textEncoder.encodeInto(str);
}

let query: asset.AssetMap = new Map();
query.set(asset.Tag.ALIAS, stringToArray('demo_alias'));
try {
  asset.removeSync(query);
} catch (error) {
  let err = error as BusinessError;
  console.error(`Failed to remove Asset. Code is ${err.code}, message is ${err.message}`);
}

asset.update

update(query: AssetMap, attributesToUpdate: AssetMap): Promise<void>

更新符合条件的一条关键资产,使用Promise方式异步返回结果。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Security.Asset

参数:

参数名 类型 必填 说明
query AssetMap 待更新关键资产的搜索条件,如关键资产别名、访问控制属性、自定义数据等。
attributesToUpdate AssetMap 待更新关键资产的属性集合,如关键资产明文、自定义数据等。

返回值:

类型 说明
Promise<void> Promise对象,无返回值。

错误码:

以下错误码的详细介绍请参见关键资产存储服务错误码

错误码ID 错误信息
401 Parameter error. Possible causes:
1. Mandatory parameters are left unspecified.
2. Incorrect parameter types.
3. Parameter verification failed.
24000001 The ASSET service is unavailable.
24000002 The asset is not found.
24000005 The screen lock status does not match.
24000006 Insufficient memory.
24000007 The asset is corrupted.
24000008 The database operation failed.
24000009 The cryptography operation failed.
24000010 IPC failed.
24000011 Calling the Bundle Manager service failed.
24000012 Calling the OS Account service failed.
24000013 Calling the Access Token service failed.
24000015 Getting the system time failed.

示例:

import { asset } from '@kit.AssetStoreKit';
import { util } from '@kit.ArkTS';
import { BusinessError } from '@kit.BasicServicesKit';

function stringToArray(str: string): Uint8Array {
  let textEncoder = new util.TextEncoder();
  return textEncoder.encodeInto(str);
}

let query: asset.AssetMap = new Map();
query.set(asset.Tag.ALIAS, stringToArray('demo_alias'));
let attrsToUpdate: asset.AssetMap = new Map();
attrsToUpdate.set(asset.Tag.SECRET, stringToArray('demo_pwd_new'));
try {
  asset.update(query, attrsToUpdate).then(() => {
    console.info(`Asset updated successfully.`);
  }).catch((err: BusinessError) => {
    console.error(`Failed to update Asset. Code is ${err.code}, message is ${err.message}`);
  });
} catch (error) {
  let err = error as BusinessError;
  console.error(`Failed to update Asset. Code is ${err.code}, message is ${err.message}`);
}

asset.updateSync12+

updateSync(query: AssetMap, attributesToUpdate: AssetMap): void

更新符合条件的一条关键资产,使用同步方式返回结果。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Security.Asset

参数:

参数名 类型 必填 说明
query AssetMap 待更新关键资产的搜索条件,如关键资产别名、访问控制属性、自定义数据等。
attributesToUpdate AssetMap 待更新关键资产的属性集合,如关键资产明文、自定义数据等。

错误码:

以下错误码的详细介绍请参见关键资产存储服务错误码

错误码ID 错误信息
401 Parameter error. Possible causes:
1. Mandatory parameters are left unspecified.
2. Incorrect parameter types.
3. Parameter verification failed.
24000001 The ASSET service is unavailable.
24000002 The asset is not found.
24000005 The screen lock status does not match.
24000006 Insufficient memory.
24000007 The asset is corrupted.
24000008 The database operation failed.
24000009 The cryptography operation failed.
24000010 IPC failed.
24000011 Calling the Bundle Manager service failed.
24000012 Calling the OS Account service failed.
24000013 Calling the Access Token service failed.
24000015 Getting the system time failed.

示例:

import { asset } from '@kit.AssetStoreKit';
import { util } from '@kit.ArkTS';
import { BusinessError } from '@kit.BasicServicesKit';

function stringToArray(str: string): Uint8Array {
  let textEncoder = new util.TextEncoder();
  return textEncoder.encodeInto(str);
}

let query: asset.AssetMap = new Map();
query.set(asset.Tag.ALIAS, stringToArray('demo_alias'));
let attrsToUpdate: asset.AssetMap = new Map();
attrsToUpdate.set(asset.Tag.SECRET, stringToArray('demo_pwd_new'));
try {
  asset.updateSync(query, attrsToUpdate);
} catch (error) {
  let err = error as BusinessError;
  console.error(`Failed to update Asset. Code is ${err.code}, message is ${err.message}`);
}

asset.preQuery

preQuery(query: AssetMap): Promise<Uint8Array>

查询的预处理,用于需要用户认证的关键资产。在用户认证成功后,应当随后调用asset.queryasset.postQuery。使用Promise方式异步返回结果。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Security.Asset

参数:

参数名 类型 必填 说明
query AssetMap 关键资产的查询条件,如别名、访问控制属性、自定义数据等。

返回值:

类型 说明
Promise<Uint8Array> Promise对象,返回挑战值。
说明: 挑战值用于后续的用户认证。

错误码:

以下错误码的详细介绍请参见关键资产存储服务错误码

错误码ID 错误信息
401 Parameter error. Possible causes:
1. Incorrect parameter types.
2. Parameter verification failed.
24000001 The ASSET service is unavailable.
24000002 The asset is not found.
24000005 The screen lock status does not match.
24000006 Insufficient memory.
24000007 The asset is corrupted.
24000008 The database operation failed.
24000009 The cryptography operation failed.
24000010 IPC failed.
24000011 Calling the Bundle Manager service failed.
24000012 Calling the OS Account service failed.
24000013 Calling the Access Token service failed.
24000016 The cache exceeds the limit.
24000017 The capability is not supported.

示例:

import { asset } from '@kit.AssetStoreKit';
import { util } from '@kit.ArkTS';
import { BusinessError } from '@kit.BasicServicesKit';

function stringToArray(str: string): Uint8Array {
  let textEncoder = new util.TextEncoder();
  return textEncoder.encodeInto(str);
}

let query: asset.AssetMap = new Map();
query.set(asset.Tag.ALIAS, stringToArray('demo_alias'));
try {
  asset.preQuery(query).then((challenge: Uint8Array) => {
    console.info(`Succeeded in pre-querying Asset.`);
  }).catch ((err: BusinessError) => {
    console.error(`Failed to pre-query Asset. Code is ${err.code}, message is ${err.message}`);
  });
} catch (error) {
  let err = error as BusinessError;
  console.error(`Failed to pre-query Asset. Code is ${err.code}, message is ${err.message}`);
}

asset.preQuerySync12+

preQuerySync(query: AssetMap): Uint8Array

查询的预处理,用于需要用户认证的关键资产。在用户认证成功后,应当随后调用asset.querySyncasset.postQuerySync。使用同步方式返回结果。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Security.Asset

参数:

参数名 类型 必填 说明
query AssetMap 关键资产的查询条件,如别名、访问控制属性、自定义数据等。

返回值:

类型 说明
Uint8Array 挑战值。
说明: 挑战值用于后续用户认证。

错误码:

以下错误码的详细介绍请参见关键资产存储服务错误码

错误码ID 错误信息
401 Parameter error. Possible causes:
1. Incorrect parameter types.
2. Parameter verification failed.
24000001 The ASSET service is unavailable.
24000002 The asset is not found.
24000005 The screen lock status does not match.
24000006 Insufficient memory.
24000007 The asset is corrupted.
24000008 The database operation failed.
24000009 The cryptography operation failed.
24000010 IPC failed.
24000011 Calling the Bundle Manager service failed.
24000012 Calling the OS Account service failed.
24000013 Calling the Access Token service failed.
24000016 The cache exceeds the limit.
24000017 The capability is not supported.

示例:

import { asset } from '@kit.AssetStoreKit';
import { util } from '@kit.ArkTS';
import { BusinessError } from '@kit.BasicServicesKit';

function stringToArray(str: string): Uint8Array {
  let textEncoder = new util.TextEncoder();
  return textEncoder.encodeInto(str);
}

let query: asset.AssetMap = new Map();
query.set(asset.Tag.ALIAS, stringToArray('demo_alias'));
try {
  let challenge: Uint8Array = asset.preQuerySync(query);
} catch (error) {
  let err = error as BusinessError;
  console.error(`Failed to pre-query Asset. Code is ${err.code}, message is ${err.message}`);
}

asset.query

query(query: AssetMap): Promise<Array<AssetMap>>

查询一条或多条符合条件的关键资产。若查询需要用户认证的关键资产,则需要在本函数前调用asset.preQuery,在本函数后调用asset.postQuery,开发步骤请参考开发指导。使用Promise回调异步返回结果。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Security.Asset

参数:

参数名 类型 必填 说明
query AssetMap 关键资产的查询条件,如别名、访问控制属性、自定义数据等。

返回值:

类型 说明
Promise<Array<AssetMap>> Promise对象,返回查询结果列表。

错误码:

以下错误码的详细介绍请参见关键资产存储服务错误码

错误码ID 错误信息
401 Parameter error. Possible causes:
1. Incorrect parameter types.
2. Parameter verification failed.
24000001 The ASSET service is unavailable.
24000002 The asset is not found.
24000004 Access denied.
24000005 The screen lock status does not match.
24000006 Insufficient memory.
24000007 The asset is corrupted.
24000008 The database operation failed.
24000009 The cryptography operation failed.
24000010 IPC failed.
24000011 Calling the Bundle Manager service failed.
24000012 Calling the OS Account service failed.
24000013 Calling the Access Token service failed.
24000017 The capability is not supported.

示例:

import { asset } from '@kit.AssetStoreKit';
import { util } from '@kit.ArkTS';
import { BusinessError } from '@kit.BasicServicesKit';

function stringToArray(str: string): Uint8Array {
  let textEncoder = new util.TextEncoder();
  return textEncoder.encodeInto(str);
}

let query: asset.AssetMap = new Map();
query.set(asset.Tag.ALIAS, stringToArray('demo_alias'));
try {
  asset.query(query).then((res: Array<asset.AssetMap>) => {
    for (let i = 0; i < res.length; i++) {
      // parse the attribute.
      let accessibility: number = res[i].get(asset.Tag.ACCESSIBILITY) as number;
    }
    console.info(`Asset query succeeded.`);
  }).catch ((err: BusinessError) => {
    console.error(`Failed to query Asset. Code is ${err.code}, message is ${err.message}`);
  });
} catch (error) {
  let err = error as BusinessError;
  console.error(`Failed to query Asset. Code is ${err.code}, message is ${err.message}`);
}

asset.querySync12+

querySync(query: AssetMap): Array<AssetMap>

查询一条或多条符合条件的关键资产。若查询需要用户认证的关键资产,则需要在本函数前调用asset.preQuerySync,在本函数后调用asset.postQuerySync,开发步骤请参考开发指导。使用同步方式返回结果。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Security.Asset

参数:

参数名 类型 必填 说明
query AssetMap 关键资产的查询条件,如别名、访问控制属性、自定义数据等。

返回值:

类型 说明
Array<AssetMap> 查询结果列表。

错误码:

以下错误码的详细介绍请参见关键资产存储服务错误码

错误码ID 错误信息
401 Parameter error. Possible causes:
1. Incorrect parameter types.
2. Parameter verification failed.
24000001 The ASSET service is unavailable.
24000002 The asset is not found.
24000004 Access denied.
24000005 The screen lock status does not match.
24000006 Insufficient memory.
24000007 The asset is corrupted.
24000008 The database operation failed.
24000009 The cryptography operation failed.
24000010 IPC failed.
24000011 Calling the Bundle Manager service failed.
24000012 Calling the OS Account service failed.
24000013 Calling the Access Token service failed.
24000017 The capability is not supported.

示例:

import { asset } from '@kit.AssetStoreKit';
import { util } from '@kit.ArkTS';
import { BusinessError } from '@kit.BasicServicesKit';

function stringToArray(str: string): Uint8Array {
  let textEncoder = new util.TextEncoder();
  return textEncoder.encodeInto(str);
}

let query: asset.AssetMap = new Map();
query.set(asset.Tag.ALIAS, stringToArray('demo_alias'));
try {
  let res: Array<asset.AssetMap> = asset.querySync(query);
  let accessibility: number;
  for (let i = 0; i < res.length; i++) {
    // parse the attribute.
    if (res[i] != null) {
      accessibility = res[i].get(asset.Tag.ACCESSIBILITY) as number;
    }
  }
} catch (error) {
  let err = error as BusinessError;
  console.error(`Failed to query Asset. Code is ${err.code}, message is ${err.message}`);
}

asset.postQuery

postQuery(handle: AssetMap): Promise<void>

查询的后置处理,用于需要用户认证的关键资产。需与asset.preQuery函数成对出现。使用Promise方式异步返回结果。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Security.Asset

参数:

参数名 类型 必填 说明
handle AssetMap 待处理的查询句柄,包含asset.preQuery执行成功返回的挑战值。

返回值:

类型 说明
Promise<void> Promise对象,无返回值。

错误码:

以下错误码的详细介绍请参见关键资产存储服务错误码

错误码ID 错误信息
401 Parameter error. Possible causes:
1. Mandatory parameters are left unspecified.
2. Incorrect parameter types.
3. Parameter verification failed.
24000001 The ASSET service is unavailable.
24000006 Insufficient memory.
24000010 IPC failed.
24000011 Calling the Bundle Manager service failed.
24000012 Calling the OS Account service failed.
24000013 Calling the Access Token service failed.

示例:

import { asset } from '@kit.AssetStoreKit';
import { BusinessError } from '@kit.BasicServicesKit';

let handle: asset.AssetMap = new Map();
// 此处传入的new Uint8Array(32)仅作为示例,实际应传入asset.preQuery执行成功返回的挑战值。
handle.set(asset.Tag.AUTH_CHALLENGE, new Uint8Array(32));
try {
  asset.postQuery(handle).then(() => {
    console.info(`Succeeded in post-querying Asset.`);
  }).catch ((err: BusinessError) => {
    console.error(`Failed to post-query Asset. Code is ${err.code}, message is ${err.message}`);
  });
} catch (error) {
  let err = error as BusinessError;
  console.error(`Failed to post-query Asset. Code is ${err.code}, message is ${err.message}`);
}

asset.postQuerySync12+

postQuerySync(handle: AssetMap): void

查询的后置处理,用于需要用户认证的关键资产。需与asset.preQuerySync函数成对出现。使用同步方式返回结果。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Security.Asset

参数:

参数名 类型 必填 说明
handle AssetMap 待处理的查询句柄,包含asset.preQuerySync执行成功返回的挑战值。

错误码:

以下错误码的详细介绍请参见关键资产存储服务错误码

错误码ID 错误信息
401 Parameter error. Possible causes:
1. Mandatory parameters are left unspecified.
2. Incorrect parameter types.
3. Parameter verification failed.
24000001 The ASSET service is unavailable.
24000006 Insufficient memory.
24000010 IPC failed.
24000011 Calling the Bundle Manager service failed.
24000012 Calling the OS Account service failed.
24000013 Calling the Access Token service failed.

示例:

import { asset } from '@kit.AssetStoreKit';
import { BusinessError } from '@kit.BasicServicesKit';

let handle: asset.AssetMap = new Map();
// 此处传入的new Uint8Array(32)仅作为示例,实际应传入asset.preQuerySync执行成功返回的挑战值。
handle.set(asset.Tag.AUTH_CHALLENGE, new Uint8Array(32));
try {
  asset.postQuerySync(handle)
} catch (error) {
  let err = error as BusinessError;
  console.error(`Failed to post-query Asset. Code is ${err.code}, message is ${err.message}`);
}

asset.querySyncResult20+

querySyncResult(query: AssetMap): Promise<SyncResult>

执行同步操作后,查询同步执行结果。使用Promise异步回调。

系统能力: SystemCapability.Security.Asset

参数:

参数名 类型 必填 说明
query AssetMap 同步结果查询条件,如关键资产所属群组、业务自定义属性信息是否加密。

返回值:

类型 说明
Promise<SyncResult> Promise对象,返回同步执行结果。

错误码:

以下错误码的详细介绍请参见关键资产存储服务错误码

错误码ID 错误信息
24000001 The ASSET service is unavailable.
24000006 Insufficient memory.
24000010 IPC failed.
24000011 Calling the Bundle Manager service failed.
24000012 Calling the OS Account service failed.
24000013 Calling the Access Token service failed.
24000014 The file operation failed.
24000018 Parameter verification failed.

示例:

import { asset } from '@kit.AssetStoreKit';
import { BusinessError } from '@kit.BasicServicesKit';

let query: asset.AssetMap = new Map();
asset.querySyncResult(query).then((res: asset.SyncResult) => {
  console.info(`sync result: ${JSON.stringify(res)}`);
}).catch ((err: BusinessError) => {
  console.error(`Failed to query sync result of Asset. Code is ${err.code}, message is ${err.message}`);
});

TagType

枚举,关键资产属性支持的数据类型。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Security.Asset

名称 说明
BOOL 0x01 << 28 标识关键资产属性对应的数据类型是布尔。
NUMBER 0x02 << 28 标识关键资产属性对应的数据类型是整型。
BYTES 0x03 << 28 标识关键资产属性对应的数据类型是字节数组。

Tag

枚举,关键资产支持的属性名称类型,用作AssetMap的键。

系统能力: SystemCapability.Security.Asset

说明:

以下为Tag类型的全量枚举值,每个接口可传的Tag枚举及对应的Value取值范围不同,详见各个场景的开发指导

名称 说明
SECRET TagType.BYTES &#124; 0x01 关键资产明文。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
ALIAS TagType.BYTES &#124; 0x02 关键资产别名,每条关键资产的唯一索引。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
ACCESSIBILITY TagType.NUMBER &#124; 0x03 基于锁屏状态的访问控制。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
REQUIRE_PASSWORD_SET TagType.BOOL &#124; 0x04 是否仅在设置了锁屏密码的情况下,可访问关键资产。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
AUTH_TYPE TagType.NUMBER &#124; 0x05 访问关键资产所需的用户认证类型。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
AUTH_VALIDITY_PERIOD TagType.NUMBER &#124; 0x06 用户认证的有效期。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
AUTH_CHALLENGE TagType.BYTES &#124; 0x07 用户认证的挑战值。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
AUTH_TOKEN TagType.BYTES &#124; 0x08 用户认证通过的授权令牌。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
SYNC_TYPE TagType.NUMBER &#124; 0x10 关键资产支持的同步类型。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
IS_PERSISTENT TagType.BOOL &#124; 0x11 在应用卸载时是否保留关键资产。
DATA_LABEL_CRITICAL_1 TagType.BYTES &#124; 0x20 关键资产附属信息,内容由业务自定义且有完整性保护
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
DATA_LABEL_CRITICAL_2 TagType.BYTES &#124; 0x21 关键资产附属信息,内容由业务自定义且有完整性保护
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
DATA_LABEL_CRITICAL_3 TagType.BYTES &#124; 0x22 关键资产附属信息,内容由业务自定义且有完整性保护
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
DATA_LABEL_CRITICAL_4 TagType.BYTES &#124; 0x23 关键资产附属信息,内容由业务自定义且有完整性保护
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
DATA_LABEL_NORMAL_1 TagType.BYTES &#124; 0x30 关键资产附属信息,内容由业务自定义且无完整性保护
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
DATA_LABEL_NORMAL_2 TagType.BYTES &#124; 0x31 关键资产附属信息,内容由业务自定义且无完整性保护
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
DATA_LABEL_NORMAL_3 TagType.BYTES &#124; 0x32 关键资产附属信息,内容由业务自定义且无完整性保护
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
DATA_LABEL_NORMAL_4 TagType.BYTES &#124; 0x33 关键资产附属信息,内容由业务自定义且无完整性保护
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
DATA_LABEL_NORMAL_LOCAL_112+ TagType.BYTES &#124; 0x34 关键资产附属的本地信息,内容由业务自定义且无完整性保护,该项信息不会进行同步。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
DATA_LABEL_NORMAL_LOCAL_212+ TagType.BYTES &#124; 0x35 关键资产附属的本地信息,内容由业务自定义且无完整性保护,该项信息不会进行同步。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
DATA_LABEL_NORMAL_LOCAL_312+ TagType.BYTES &#124; 0x36 关键资产附属的本地信息,内容由业务自定义且无完整性保护,该项信息不会进行同步。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
DATA_LABEL_NORMAL_LOCAL_412+ TagType.BYTES &#124; 0x37 关键资产附属的本地信息,内容由业务自定义且无完整性保护,该项信息不会进行同步。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
RETURN_TYPE TagType.NUMBER &#124; 0x40 关键资产查询返回的结果类型。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
RETURN_LIMIT TagType.NUMBER &#124; 0x41 关键资产查询返回的结果数量。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
RETURN_OFFSET TagType.NUMBER &#124; 0x42 关键资产查询返回的结果偏移量。
说明: 用于分批查询场景,指定从第几个开始返回。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
RETURN_ORDERED_BY TagType.NUMBER &#124; 0x43 关键资产查询返回的结果排序依据,仅支持按照附属信息排序。
说明: 默认按照关键资产新增的顺序返回。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
CONFLICT_RESOLUTION TagType.NUMBER &#124; 0x44 新增关键资产时的冲突(如:别名相同)处理策略。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
UPDATE_TIME12+ TagType.BYTES &#124; 0x45 数据的更新时间(时间戳形式)。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
OPERATION_TYPE12+ TagType.NUMBER &#124; 0x46 附加的操作类型。
REQUIRE_ATTR_ENCRYPTED14+ TagType.BOOL &#124; 0x47 是否加密业务自定义附属信息。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
GROUP_ID18+ TagType.BYTES &#124; 0x48 关键资产所属群组。
WRAP_TYPE18+ TagType.NUMBER &#124; 0x49 关键资产支持的加密导入导出类型。

Value

type Value = boolean|number|Uint8Array

关键资产属性的内容,用作AssetMap的值。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Security.Asset

类型 说明
boolean 表示值类型为布尔类型,取值范围为true或false。
number 表示值类型为数字,取值范围为Tag对应的枚举值或数值。
Uint8Array 表示值类型为字节数组,内容由业务自定义。

AssetMap

type AssetMap = Map<Tag, Value>

关键资产属性的键-值对集合。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Security.Asset

类型 说明
Map<Tag, Value> 表示值类型是Map,键值对取值范围分别参考TagValue

Accessibility

枚举,关键资产基于锁屏状态的访问控制类型。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Security.Asset

名称 说明
DEVICE_POWERED_ON 0 开机后可访问。
DEVICE_FIRST_UNLOCKED 1 首次解锁后可访问
说明: 未设置锁屏密码时,等同于开机后可访问。
DEVICE_UNLOCKED 2 解锁状态时可访问
说明: 未设置锁屏密码时,等同于开机后可访问。

AuthType

枚举,关键资产支持的用户认证类型。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Security.Asset

名称 说明
NONE 0x00 访问关键资产前无需用户认证。
ANY 0xFF 任意一种用户认证方式(PIN码、人脸、指纹等)通过后,均可访问关键资产。

SyncType

枚举,关键资产支持的同步类型。

说明:

本字段是能力预埋,当前不支持同步。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Security.Asset

名称 说明
NEVER 0 不允许同步关键资产。
THIS_DEVICE 1 << 0 只在本设备进行同步,如仅在本设备还原的备份场景。
TRUSTED_DEVICE 1 << 1 只在可信设备间进行同步,如克隆场景。
TRUSTED_ACCOUNT12+ 1 << 2 只在登录可信账号的设备间进行同步,如云同步场景。

ReturnType

枚举,关键资产查询返回的结果类型。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Security.Asset

名称 说明
ALL 0 返回关键资产明文及属性。
说明: 查询单条关键资产明文时,需设置此类型。
ATTRIBUTES 1 返回关键资产属性,不含关键资产明文。
说明: 批量查询关键资产属性时,需设置此类型。

ConflictResolution

枚举,新增关键资产时的冲突(如:别名相同)处理策略。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Security.Asset

名称 说明
OVERWRITE 0 覆盖原有的关键资产。
THROW_ERROR 1 抛出异常,由业务进行后续处理。

OperationType12+

枚举,附属的操作类型。

系统能力: SystemCapability.Security.Asset

名称 说明
NEED_SYNC 0 需要进行同步操作。
NEED_LOGOUT 1 需要进行登出操作。

WrapType18+

枚举,关键资产支持的加密导入导出类型。

系统能力: SystemCapability.Security.Asset

名称 说明
NEVER 0 不允许加密导入导出关键资产。
TRUSTED_ACCOUNT 1 只在登录可信账号的设备进行加密导入导出关键资产。

SyncResult20+

关键资产同步的结果。

系统能力: SystemCapability.Security.Asset

名称 类型 只读 可选 说明
resultCode number 关键资产同步的结果码。同步成功时结果码为0,同步失败时结果码参考ErrorCode
totalCount number 触发同步的关键资产总数。
failedCount number 关键资产同步失败的数量。

ErrorCode

表示错误码的枚举。

系统能力: SystemCapability.Security.Asset

名称 说明
PERMISSION_DENIED 201 调用方无权限。
NOT_SYSTEM_APPLICATION12+ 202 调用方不是一个系统应用。
INVALID_ARGUMENT 401 参数错误。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
SERVICE_UNAVAILABLE 24000001 关键资产服务不可用。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
NOT_FOUND 24000002 未找到关键资产。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
DUPLICATED 24000003 关键资产已存在。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
ACCESS_DENIED 24000004 拒绝访问关键资产。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
STATUS_MISMATCH 24000005 锁屏状态不匹配。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
OUT_OF_MEMORY 24000006 系统内存不足。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
DATA_CORRUPTED 24000007 关键资产损坏。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
DATABASE_ERROR 24000008 数据库操作失败。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
CRYPTO_ERROR 24000009 算法库操作失败。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
IPC_ERROR 24000010 进程通信错误。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
BMS_ERROR 24000011 包管理服务异常。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
ACCOUNT_ERROR 24000012 账号系统异常。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
ACCESS_TOKEN_ERROR 24000013 访问控制服务异常。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
FILE_OPERATION_ERROR 24000014 文件操作失败。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
GET_SYSTEM_TIME_ERROR 24000015 获取系统时间失败。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
LIMIT_EXCEEDED 24000016 缓存数量超限。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
UNSUPPORTED 24000017 该子功能不支持。
原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。
PARAM_VERIFICATION_FAILED20+ 24000018 参数校验失败。
原子化服务API: 从API version 20开始,该接口支持在原子化服务中使用。

你可能感兴趣的鸿蒙文章

harmony 鸿蒙Asset Store Kit(关键资产存储服务)

harmony 鸿蒙asset_api.h

harmony 鸿蒙Asset_Attr

harmony 鸿蒙Asset_Blob

harmony 鸿蒙Asset_Result

harmony 鸿蒙Asset_ResultSet

harmony 鸿蒙Asset_SyncResult

harmony 鸿蒙asset_type.h

harmony 鸿蒙Asset_Value

harmony 鸿蒙AssetApi

0  赞