harmony 鸿蒙@ohos.security.certManager (证书管理模块)

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

@ohos.security.certManager (证书管理模块)

证书管理主要提供系统级的证书管理能力,实现证书全生命周期(安装,存储,使用,销毁)的管理和安全使用。

说明:

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

导入模块

import { certificateManager } from '@kit.DeviceCertificateKit';

CmKeyPurpose

表示密钥使用目的的枚举,用于签名、验签。

系统能力: SystemCapability.Security.CertificateManager

名称 说明
CM_KEY_PURPOSE_SIGN 4 签名。
CM_KEY_PURPOSE_VERIFY 8 验签。

CmKeyDigest

表示签名、验签使用的摘要算法的枚举。

系统能力: SystemCapability.Security.CertificateManager

名称 说明
CM_DIGEST_NONE 0 不需要摘要算法,选用此项时,需要业务传入已经计算过摘要的数据进行签名、验签。
CM_DIGEST_MD5 1 MD5摘要算法。
CM_DIGEST_SHA1 2 SHA1摘要算法。
CM_DIGEST_SHA224 3 SHA224摘要算法。
CM_DIGEST_SHA256 4 SHA256摘要算法。
CM_DIGEST_SHA384 5 SHA384摘要算法。
CM_DIGEST_SHA512 6 SHA512摘要算法。
CM_DIGEST_SM318+ 7 SM3摘要算法。

CmKeyPadding

表示签名、验签使用的填充方式的枚举。

系统能力: SystemCapability.Security.CertificateManager

名称 说明
CM_PADDING_NONE 0 无填充。
CM_PADDING_PSS 1 PSS方式填充。
CM_PADDING_PKCS1_V1_5 2 PKCS1_V1_5方式填充。

CMSignatureSpec

表示签名、验签操作使用的参数集合,包括密钥使用目的、填充方式和摘要算法。

系统能力: SystemCapability.Security.CertificateManager

名称 类型 只读 可选 说明
purpose CmKeyPurpose 表示密钥使用目的的枚举。
padding CmKeyPadding 表示填充方式的枚举。
digest CmKeyDigest 表示摘要算法的枚举。

CertInfo

表示证书详细信息。

系统能力: SystemCapability.Security.CertificateManager

名称 类型 只读 可选 说明
uri string 表示证书的唯一标识符,最大长度为256字节。
certAlias string 表示证书的别名,最大长度为128字节。
state boolean 表示证书的状态,true为启用状态、false为禁用状态。
issuerName string 表示证书的颁发者名称,最大长度为256字节。
subjectName string 表示证书的使用者名称,最大长度为1024字节。
serial string 表示证书的序列号,最大长度为64字节。
notBefore string 表示证书有效期起始日期,最大长度为32字节。
notAfter string 表示证书有效期截止日期,最大长度为32字节。
fingerprintSha256 string 表示证书的指纹值,最大长度为128字节。
cert Uint8Array 表示证书二进制数据,最大长度为8196字节。

CertAbstract

表示证书简要信息。

系统能力: SystemCapability.Security.CertificateManager

名称 类型 只读 可选 说明
uri string 表示证书的唯一标识符,最大长度为256字节。
certAlias string 表示证书的别名,最大长度为128字节。
state boolean 表示证书的状态,true为启用状态、false为禁用状态。
subjectName string 表示证书的使用者名称,最大长度为1024字节。

Credential

表示凭据详细信息。

系统能力: SystemCapability.Security.CertificateManager

名称 类型 只读 可选 说明
type string 表示凭据的类型,最大长度为8字节。
alias string 表示凭据的别名,最大长度为128字节。
keyUri string 表示凭据的唯一标识符,最大长度为256字节。
certNum number 表示凭据中包含的证书个数。
keyNum number 表示凭据中包含的密钥个数。
credentialData Uint8Array 表示凭据二进制数据,最大长度为24588字节。

CredentialAbstract

表示凭据的简要信息。

系统能力: SystemCapability.Security.CertificateManager

名称 类型 只读 可选 说明
type string 表示凭据的类型,最大长度为8字节。
alias string 表示凭据的别名,最大长度为128字节。
keyUri string 表示凭据的唯一标识符,最大长度为256字节。

CMResult

表示接口的返回结果。

系统能力: SystemCapability.Security.CertificateManager

名称 类型 只读 可选 说明
certList Array<CertAbstract> 表示证书简要信息的列表。
certInfo CertInfo 表示证书详情。
credentialList Array<CredentialAbstract> 表示凭据简要信息的列表。
credential Credential 表示凭据详情。
appUidList Array<string> 表示授权应用列表。
uri string 表示证书或凭据的唯一标识符,最大长度为256字节。
outData Uint8Array 表示签名结果。

CMHandle

表示签名、验签的初始化操作句柄。

系统能力: SystemCapability.Security.CertificateManager

名称 类型 只读 可选 说明
handle Uint8Array 签名、验签的初始化操作句柄,最大长度为8字节。

CMErrorCode

表示调用证书管理相关API的错误码。

系统能力: SystemCapability.Security.CertificateManager

名称 说明
CM_ERROR_NO_PERMISSION 201 表示应用程序无权限调用接口。
CM_ERROR_INVALID_PARAMS 401 表示输入参数无效。
CM_ERROR_GENERIC 17500001 表示调用接口时发生内部错误。
CM_ERROR_NO_FOUND 17500002 表示证书或凭据不存在。
CM_ERROR_INCORRECT_FORMAT 17500003 表示输入证书或凭据的数据格式无效。
CM_ERROR_MAX_CERT_COUNT_REACHED12+ 17500004 表示证书或凭据数量达到上限。
CM_ERROR_NO_AUTHORIZATION12+ 17500005 表示应用未经用户授权。
CM_ERROR_DEVICE_ENTER_ADVSECMODE18+ 17500007 表示设备进入坚盾守护模式。
CM_ERROR_STORE_PATH_NOT_SUPPORTED20+ 17500009 表示不支持指定的证书存储路径。

CertType18+

表示证书类型。

系统能力: SystemCapability.Security.CertificateManager

名称 说明
CA_CERT_SYSTEM 0 表示系统CA证书。
CA_CERT_USER 1 表示用户CA证书。

CertScope18+

表示证书的位置。

系统能力: SystemCapability.Security.CertificateManager

名称 说明
CURRENT_USER 1 表示当前用户。
GLOBAL_USER 2 表示设备公共,即所有用户都可以访问的位置。

CertAlgorithm20+

表示证书的算法类型。

系统能力: SystemCapability.Security.CertificateManager

名称 说明
INTERNATIONAL 1 表示国际密码算法,如RSA、NIST ECC等。
SM 2 表示商用密码算法,如SM2、SM4等。

CertStoreProperty18+

表示获取证书存储位置的参数集合,包括证书的类型及证书的位置。

系统能力: SystemCapability.Security.CertificateManager

名称 类型 只读 可选 说明
certType CertType 表示证书的类型。
certScope CertScope 表示证书的存储位置。当证书类型为CA_CERT_USER时,此项为必选项。
certAlg20+ CertAlgorithm 表示证书算法类型。仅当certType为CA_CERT_SYSTEM时有效,默认值为INTERNATIONAL。

AuthStorageLevel18+

表示凭据的存储级别。

系统能力: SystemCapability.Security.CertificateManager

名称 说明
EL1 1 EL1级别,表示设备启动后可以访问。
EL2 2 EL2级别,表示设备首次解锁后可以访问。
EL4 4 EL4级别,表示设备解锁时可以访问。

certificateManager.installPrivateCertificate

installPrivateCertificate(keystore: Uint8Array, keystorePwd: string, certAlias: string, callback: AsyncCallback<CMResult>): void

表示安装私有凭据,使用Callback回调异步返回结果。

需要权限: ohos.permission.ACCESS_CERT_MANAGER

系统能力: SystemCapability.Security.CertificateManager

参数

参数名 类型 必填 说明
keystore Uint8Array 表示带有密钥对和证书的密钥库文件,最大长度为20480字节。
keystorePwd string 表示密钥库文件的密码,长度限制32字节以内。
certAlias string 表示用户输入的凭据别名,当前仅支持传入数字、字母或下划线,长度建议32字节以内。
callback AsyncCallback<CMResult> 回调函数。当安装私有凭据成功时,err为null,data为CMResult对象中的uri属性;否则为错误对象。

错误码:

以下错误码的详细介绍请参见证书管理错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
17500001 Internal error. Possible causes: 1. IPC communication failed; 2. Memory operation error; 3. File operation error.
17500003 The keystore is in an invalid format or the keystore password is incorrect.
17500004 The number of certificates or credentials reaches the maximum allowed.

示例

import { certificateManager } from '@kit.DeviceCertificateKit';

/* 安装的凭据数据需要业务赋值,本例数据非凭据数据 */
let keystore: Uint8Array = new Uint8Array([
  0x30, 0x82, 0x0b, 0xc1, 0x02, 0x01,
]);
let keystorePwd: string = "123456";
try {
  certificateManager.installPrivateCertificate(keystore, keystorePwd, "test", (err, cmResult) => {
    if (err != null) {
      console.error(`Failed to install private certificate. Code: ${err.code}, message: ${err.message}`);
    } else {
      let uri: string = (cmResult?.uri == undefined) ? '' : cmResult.uri;
      console.info('Succeeded in installing private certificate.');
    }
  });
} catch (error) {
  console.error(`Failed to install private certificate. Code: ${error.code}, message: ${error.message}`);
}

certificateManager.installPrivateCertificate

installPrivateCertificate(keystore: Uint8Array, keystorePwd: string, certAlias: string): Promise<CMResult>

表示安装私有凭据,使用Promise方式异步返回结果。

需要权限: ohos.permission.ACCESS_CERT_MANAGER

系统能力: SystemCapability.Security.CertificateManager

参数

参数名 类型 必填 说明
keystore Uint8Array 表示带有密钥对和证书的密钥库文件,最大长度为20480字节。
keystorePwd string 表示密钥库文件的密码,长度限制32字节以内。
certAlias string 表示用户输入的凭据别名,当前仅支持传入数字、字母或下划线,长度建议32字节以内。

返回值

类型 说明
Promise<CMResult> Promise对象。表示安装私有凭据的结果,返回值为CMResult对象中的uri属性。

错误码:

以下错误码的详细介绍请参见证书管理错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
17500001 Internal error. Possible causes: 1. IPC communication failed; 2. Memory operation error; 3. File operation error.
17500003 The keystore is in an invalid format or the keystore password is incorrect.
17500004 The number of certificates or credentials reaches the maximum allowed.

示例

import { certificateManager } from '@kit.DeviceCertificateKit';
import { BusinessError } from '@kit.BasicServicesKit';

/* 安装的凭据数据需要业务赋值,本例数据非凭据数据 */
let keystore: Uint8Array = new Uint8Array([
  0x30, 0x82, 0x0b, 0xc1, 0x02, 0x01,
]);
let keystorePwd: string = "123456";
try {
  certificateManager.installPrivateCertificate(keystore, keystorePwd, 'test').then((cmResult) => {
    let uri: string = (cmResult?.uri == undefined) ? '' : cmResult.uri;
    console.info('Succeeded in installing private certificate.');
  }).catch((err: BusinessError) => {
    console.error(`Failed to install private certificate. Code: ${err.code}, message: ${err.message}`);
  })
} catch (error) {
  console.error(`Failed to install private certificate. Code: ${error.code}, message: ${error.message}`);
}

certificateManager.installPrivateCertificate18+

installPrivateCertificate(keystore: Uint8Array, keystorePwd: string, certAlias: string, level: AuthStorageLevel): Promise<CMResult>

表示安装私有凭据并指定凭据的存储级别。使用Promise异步回调。

需要权限: ohos.permission.ACCESS_CERT_MANAGER

系统能力: SystemCapability.Security.CertificateManager

参数:

参数名 类型 必填 说明
keystore Uint8Array 表示带有密钥对和证书的密钥库文件,最大长度为20480字节。
keystorePwd string 表示密钥库文件的密码。
长度限制:32字节以内。
certAlias string 表示用户输入的凭据别名,当前仅支持传入数字、字母或下划线。
长度建议:32字节以内。
level AuthStorageLevel 表示凭据的存储级别。

返回值:

类型 说明
Promise<CMResult> Promise对象。表示安装私有凭据的结果,返回值为CMResult对象中的uri属性。

错误码:

以下错误码的详细介绍请参见证书管理错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
17500001 Internal error. Possible causes: 1. IPC communication failed; 2. Memory operation error; 3. File operation error.
17500003 The keystore is in an invalid format or the keystore password is incorrect.
17500004 The number of certificates or credentials reaches the maximum allowed.

示例:

import { certificateManager } from '@kit.DeviceCertificateKit';
import { BusinessError } from '@kit.BasicServicesKit';

/* 安装的凭据数据需要业务赋值,本例数据非凭据数据。 */
let keystore: Uint8Array = new Uint8Array([
  0x30, 0x82, 0x0b, 0xc1, 0x02, 0x01,
]);
let keystorePwd: string = "123456";
try {
  /* 安装凭据在首次解锁设备后可以使用。 */
  let level = certificateManager.AuthStorageLevel.EL2;
  certificateManager.installPrivateCertificate(keystore, keystorePwd, 'test', level).then((cmResult) => {
    let uri: string = (cmResult?.uri == undefined) ? '' : cmResult.uri;
    console.info('Succeeded in installing private certificate.');
  }).catch((err: BusinessError) => {
    console.error(`Failed to install private certificate. Code: ${err.code}, message: ${err.message}`);
  })
} catch (error) {
  console.error(`Failed to install private certificate. Code: ${error.code}, message: ${error.message}`);
}

certificateManager.getPrivateCertificate

getPrivateCertificate(keyUri: string, callback: AsyncCallback<CMResult>): void

表示获取私有凭据的详细信息,使用Callback回调异步返回结果。

需要权限: ohos.permission.ACCESS_CERT_MANAGER

系统能力: SystemCapability.Security.CertificateManager

参数

参数名 类型 必填 说明
keyUri string 表示待获取凭据的唯一标识符,长度限制256字节以内。
callback AsyncCallback<CMResult> 回调函数。当获取私有凭据的详细信息成功时,err为null,data为CMResult对象中的credential属性;否则为错误对象。

错误码:

以下错误码的详细介绍请参见证书管理错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
17500001 Internal error. Possible causes: 1. IPC communication failed; 2. Memory operation error; 3. File operation error.
17500002 The certificate does not exist.

示例

import { certificateManager } from '@kit.DeviceCertificateKit';

let uri: string = 'test'; /* 业务安装凭据,返回唯一标识符,此处省略 */
try {
  certificateManager.getPrivateCertificate(uri, (err, cmResult) => {
    if (err != null) {
      console.error(`Failed to get private certificate. Code: ${err.code}, message: ${err.message}`);
    } else {
      if (cmResult?.credential == undefined) {
        console.info('The result of getting private certificate is undefined.');
      } else {
        let list = cmResult.credential;
        console.info('Succeeded in getting private certificate.');
      }
    }
  });
} catch (error) {
  console.error(`Failed to get private certificate. Code: ${error.code}, message: ${error.message}`);
}

certificateManager.getPrivateCertificate

getPrivateCertificate(keyUri: string): Promise<CMResult>

表示获取私有凭据详情,使用Promise方式异步返回结果。

需要权限: ohos.permission.ACCESS_CERT_MANAGER

系统能力: SystemCapability.Security.CertificateManager

参数

参数名 类型 必填 说明
keyUri string 表示待获取凭据的唯一标识符,长度限制256字节以内。

返回值

类型 说明
Promise<CMResult> Promise对象。表示获取私有凭据详细信息的结果,返回值为CMResult对象中的credential属性。

错误码:

以下错误码的详细介绍请参见证书管理错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
17500001 Internal error. Possible causes: 1. IPC communication failed; 2. Memory operation error; 3. File operation error.
17500002 The certificate does not exist.

示例

import { certificateManager } from '@kit.DeviceCertificateKit';
import { BusinessError } from '@kit.BasicServicesKit';

let uri: string = 'test'; /* 业务安装凭据,返回唯一标识符,此处省略 */
try {
  certificateManager.getPrivateCertificate(uri).then((cmResult) => {
    if (cmResult?.credential == undefined) {
      console.info('The result of getting private certificate is undefined.');
    } else {
      let list = cmResult.credential;
      console.info('Succeeded in getting private certificate.');
    }
  }).catch((err: BusinessError) => {
    console.error(`Failed to get private certificate. Code: ${err.code}, message: ${err.message}`);
  })
} catch (error) {
  console.error(`Failed to get private certificate. Code: ${error.code}, message: ${error.message}`);
}

certificateManager.uninstallPrivateCertificate

uninstallPrivateCertificate(keyUri: string, callback: AsyncCallback<void>): void

表示卸载指定的私有凭据,使用Callback回调异步返回结果。

需要权限: ohos.permission.ACCESS_CERT_MANAGER

系统能力: SystemCapability.Security.CertificateManager

参数

参数名 类型 必填 说明
keyUri string 表示待卸载凭据的唯一标识符,长度限制256字节以内。
callback AsyncCallback<void> 回调函数。当卸载私有凭据成功时,err为null,否则为错误对象。

错误码:

以下错误码的详细介绍请参见证书管理错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
17500001 Internal error. Possible causes: 1. IPC communication failed; 2. Memory operation error; 3. File operation error.
17500002 The certificate does not exist.

示例

import { certificateManager } from '@kit.DeviceCertificateKit';

let uri: string = 'test'; /* 业务安装凭据,返回唯一标识符,此处省略 */
try {
  certificateManager.uninstallPrivateCertificate(uri, (err, result) => {
    if (err != null) {
      console.error(`Failed to uninstall private certificate. Code: ${err.code}, message: ${err.message}`);
    } else {
      console.info('Succeeded in uninstalling private certificate.');
    }
  });
} catch (error) {
  console.error(`Failed to uninstall private certificate. Code: ${error.code}, message: ${error.message}`);
}

certificateManager.uninstallPrivateCertificate

uninstallPrivateCertificate(keyUri: string): Promise<void>

表示卸载指定的私有凭据,使用Promise方式异步返回结果。

需要权限: ohos.permission.ACCESS_CERT_MANAGER

系统能力: SystemCapability.Security.CertificateManager

参数

参数名 类型 必填 说明
keyUri string 表示待卸载凭据的唯一标识符,长度限制256字节以内。

返回值

类型 说明
Promise<void> Promise对象。无返回结果的Promise对象。

错误码:

以下错误码的详细介绍请参见证书管理错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
17500001 Internal error. Possible causes: 1. IPC communication failed; 2. Memory operation error; 3. File operation error.
17500002 The certificate does not exist.

示例

import { certificateManager } from '@kit.DeviceCertificateKit';
import { BusinessError } from '@kit.BasicServicesKit';

let uri: string = 'test'; /* 业务安装凭据,返回唯一标识符,此处省略 */
try {
  certificateManager.uninstallPrivateCertificate(uri).then((cmResult) => {
    console.info('Succeeded in uninstalling private certificate.');
  }).catch((err: BusinessError) => {
    console.error(`Failed to uninstall private certificate. Code: ${err.code}, message: ${err.message}`);
  })
} catch (error) {
  console.error(`Failed to uninstall private certificate. Code: ${error.code}, message: ${error.message}`);
}

certificateManager.installUserTrustedCertificateSync18+

installUserTrustedCertificateSync(cert: Uint8Array, certScope: CertScope) : CMResult

表示安装用户CA证书。

需要权限: ohos.permission.ACCESS_ENTERPRISE_USER_TRUSTED_CERT或ohos.permission.ACCESS_USER_TRUSTED_CERT

系统能力: SystemCapability.Security.CertificateManager

参数

参数名 类型 必填 说明
cert Uint8Array 表示CA证书数据,最大长度为8196字节。
certScope CertScope 表示CA证书安装的位置。

返回值

类型 说明
CMResult 表示CA证书的安装结果,返回值CMResult对象中的uri属性。

错误码:

以下错误码的详细介绍请参见证书管理错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
17500001 Internal error. Possible causes: 1. IPC communication failed; 2. Memory operation error; 3. File operation error.
17500003 Indicates that the certificate is in an invalid format.
17500004 Indicates that the number of certificates reaches the maximum allowed.
17500007 Indicates that the device enters advanced security mode. In this mode, the user CA certificate cannot be installed.

示例

import {certificateManager} from '@kit.DeviceCertificateKit';

/* 安装的CA证书数据需要业务赋值,本例数据非CA证书数据 */
let certData: Uint8Array = new Uint8Array([
    0x30, 0x82, 0x0b, 0xc1, 0x02, 0x01,
]);
try {
    let result: certificateManager.CMResult = certificateManager.installUserTrustedCertificateSync(certData, certificateManager.CertScope.CURRENT_USER);
    let certUri = result.uri;
    if (certUri === undefined) {
        console.error("The result of install user trusted certificate is undefined.");
    } else {
        console.info("Successed to install user trusted certificate.");
    }
} catch (error) {
    console.error(`Failed to install user trusted certificate. Code: ${error.code}, message: ${error.message}`);
}

certificateManager.uninstallUserTrustedCertificateSync18+

uninstallUserTrustedCertificateSync(certUri: string) : void

表示删除用户CA证书。

需要权限: ohos.permission.ACCESS_ENTERPRISE_USER_TRUSTED_CERT或ohos.permission.ACCESS_USER_TRUSTED_CERT

系统能力: SystemCapability.Security.CertificateManager

参数

参数名 类型 必填 说明
certUri string 表示待卸删除证书的唯一标识符,长度限制256字节以内。

错误码:

以下错误码的详细介绍请参见证书管理错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
17500001 Internal error. Possible causes: 1. IPC communication failed; 2. Memory operation error; 3. File operation error.
17500002 Indicates that the certificate does not exist.

示例

import {certificateManager} from '@kit.DeviceCertificateKit';

let certUri: string = "test"; /* 业务安装证书,返回唯一标识符,此处省略 */
try {
    certificateManager.uninstallUserTrustedCertificateSync(certUri);
} catch (error) {
    console.error(`Failed to uninstall user trusted certificate. Code: ${error.code}, message: ${error.message}`);
}

certificateManager.init

init(authUri: string, spec: CMSignatureSpec, callback: AsyncCallback<CMHandle>): void

表示使用凭据进行签名、验签的初始化操作,使用Callback回调异步返回结果。

需要权限: ohos.permission.ACCESS_CERT_MANAGER

系统能力: SystemCapability.Security.CertificateManager

参数

参数名 类型 必填 说明
authUri string 表示使用凭据的唯一标识符,长度限制256字节以内。
spec CMSignatureSpec 表示签名、验签的属性。
callback AsyncCallback<CMHandle> 回调函数。当签名、验签的初始化操作成功时,err为null,data为获取到的CMHandle;否则为错误对象。

错误码:

以下错误码的详细介绍请参见证书管理错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
17500001 Internal error. Possible causes: 1. IPC communication failed; 2. Memory operation error; 3. File operation error.
17500002 The certificate does not exist.
1750000512+ The application is not authorized by the user.

示例

import { certificateManager } from '@kit.DeviceCertificateKit';

let uri: string = 'test'; /* 业务安装凭据,返回唯一标识符,此处省略 */
const req: certificateManager.CMSignatureSpec = {
  purpose: certificateManager.CmKeyPurpose.CM_KEY_PURPOSE_SIGN,
  padding: certificateManager.CmKeyPadding.CM_PADDING_PSS,
  digest: certificateManager.CmKeyDigest.CM_DIGEST_SHA256
}
try {
  certificateManager.init(uri, req, (err, cmHandle) => {
    if (err != null) {
      console.error(`Failed to init. Code: ${err.code}, message: ${err.message}`);
    } else {
      console.info('Succeeded in initiating.');
    }
  })
} catch (error) {
  console.error(`Failed to init. Code: ${error.code}, message: ${error.message}`);
}

certificateManager.init

init(authUri: string, spec: CMSignatureSpec): Promise<CMHandle>

表示使用凭据进行签名、验签的初始化操作,使用Promise方式异步返回结果。

需要权限: ohos.permission.ACCESS_CERT_MANAGER

系统能力: SystemCapability.Security.CertificateManager

参数

参数名 类型 必填 说明
authUri string 表示使用凭据的唯一标识符,长度限制256字节以内。
spec CMSignatureSpec 表示签名、验签的属性。

返回值

类型 说明
Promise<CMHandle> Promise对象。表示签名、验签的初始化操作结果,返回CMHandle对象。

错误码:

以下错误码的详细介绍请参见证书管理错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
17500001 Internal error. Possible causes: 1. IPC communication failed; 2. Memory operation error; 3. File operation error.
17500002 The certificate does not exist.
1750000512+ The application is not authorized by the user.

示例

import { certificateManager } from '@kit.DeviceCertificateKit';
import { BusinessError } from '@kit.BasicServicesKit';

let uri: string = 'test'; /* 业务安装凭据,返回唯一标识符,此处省略 */
const req: certificateManager.CMSignatureSpec = {
  purpose: certificateManager.CmKeyPurpose.CM_KEY_PURPOSE_VERIFY,
  padding: certificateManager.CmKeyPadding.CM_PADDING_PSS,
  digest: certificateManager.CmKeyDigest.CM_DIGEST_MD5
}
try {
  certificateManager.init(uri, req).then((handle) => {
    console.info('Succeeded in initiating.');
  }).catch((err: BusinessError) => {
    console.error(`Failed to init. Code: ${err.code}, message: ${err.message}`);
  })
} catch (error) {
  console.error(`Failed to init. Code: ${error.code}, message: ${error.message}`);
}

certificateManager.update

update(handle: Uint8Array, data: Uint8Array, callback: AsyncCallback<void>): void

表示签名、验签的数据更新操作,使用Callback回调异步返回结果。

需要权限: ohos.permission.ACCESS_CERT_MANAGER

系统能力: SystemCapability.Security.CertificateManager

参数

参数名 类型 必填 说明
handle Uint8Array 表示初始化操作返回的句柄,最大长度为8字节。
data Uint8Array 表示待签名、验签的数据。
callback AsyncCallback<void> 回调函数。当签名、验签的数据更新操作成功时,err为null,否则为错误对象。

错误码:

以下错误码的详细介绍请参见证书管理错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
17500001 Internal error. Possible causes: 1. IPC communication failed; 2. Memory operation error; 3. File operation error.

示例

import { certificateManager } from '@kit.DeviceCertificateKit';

/* cmHandle为业务调用init接口的返回值,此处仅为示例 */
let cmHandle: Uint8Array = new Uint8Array([
  0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
]);
let srcData: Uint8Array = new Uint8Array([
  0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
]);
try {
  certificateManager.update(cmHandle, srcData, (err, result) => {
    if (err != null) {
      console.error(`Failed to update. Code: ${err.code}, message: ${err.message}`);
    } else {
      console.info('Succeeded in updating.');
    }
  });
} catch (error) {
  console.error(`Failed to update. Code: ${error.code}, message: ${error.message}`);
}

certificateManager.update

update(handle: Uint8Array, data: Uint8Array): Promise<void>

表示签名、验签的数据更新操作,使用Promise方式异步返回结果。

需要权限: ohos.permission.ACCESS_CERT_MANAGER

系统能力: SystemCapability.Security.CertificateManager

参数

参数名 类型 必填 说明
handle Uint8Array 表示初始化操作返回的句柄,最大长度为8字节。
data Uint8Array 表示待签名、验签的数据。

返回值

类型 说明
Promise<void> Promise对象。无返回结果的Promise对象。

错误码:

以下错误码的详细介绍请参见证书管理错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
17500001 Internal error. Possible causes: 1. IPC communication failed; 2. Memory operation error; 3. File operation error.

示例

import { certificateManager } from '@kit.DeviceCertificateKit';
import { BusinessError } from '@kit.BasicServicesKit';

/* cmHandle为业务调用init接口的返回值,此处仅为示例 */
let cmHandle: Uint8Array = new Uint8Array([
  0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
]);
let srcData: Uint8Array = new Uint8Array([
  0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
]);
try {
  certificateManager.update(cmHandle, srcData).then((result) => {
    console.info('Succeeded in updating.');
  }).catch((err: BusinessError) => {
    console.error(`Failed to update. Code: ${err.code}, message: ${err.message}`);
  })
} catch (error) {
  console.error(`Failed to update. Code: ${error.code}, message: ${error.message}`);
}

certificateManager.finish

finish(handle: Uint8Array, callback: AsyncCallback<CMResult>): void

表示完成签名的操作,Callback回调异步返回结果。

需要权限: ohos.permission.ACCESS_CERT_MANAGER

系统能力: SystemCapability.Security.CertificateManager

参数

参数名 类型 必填 说明
handle Uint8Array 表示初始化操作返回的句柄,最大长度为8字节。
callback AsyncCallback<CMResult> 回调函数。当签名成功时,err为null,data为CMResult对象中的outData属性,表示签名数据;否则为错误对象。

错误码:

以下错误码的详细介绍请参见证书管理错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
17500001 Internal error. Possible causes: 1. IPC communication failed; 2. Memory operation error; 3. File operation error.

示例

import { certificateManager } from '@kit.DeviceCertificateKit';

/* cmHandle为业务调用init接口的返回值,此处仅为示例 */
let cmHandle: Uint8Array = new Uint8Array([
  0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
]);
try {
  certificateManager.finish(cmHandle, (err, cmResult) => {
    if (err != null) {
      console.error(`Failed to finish. Code: ${err.code}, message: ${err.message}`);
    } else {
      if (cmResult?.outData != undefined) {
        let signRes: Uint8Array = cmResult.outData;
        console.info('Succeeded in finishing.');
      } else {
        console.info('The result of finishing is undefined.');
      }
    }
  });
} catch(error) {
  console.error(`Failed to finish. Code: ${error.code}, message: ${error.message}`);
}

certificateManager.finish

finish(handle: Uint8Array, signature: Uint8Array, callback: AsyncCallback<CMResult>): void

表示完成验签的操作,使用Callback回调异步返回结果。

需要权限: ohos.permission.ACCESS_CERT_MANAGER

系统能力: SystemCapability.Security.CertificateManager

参数

参数名 类型 必填 说明
handle Uint8Array 表示初始化操作返回的句柄,最大长度为8字节。
signature Uint8Array 表示签名数据。
callback AsyncCallback<CMResult> 回调函数。当验签成功时,err为null;否则为错误对象。

错误码:

以下错误码的详细介绍请参见证书管理错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
17500001 Internal error. Possible causes: 1. IPC communication failed; 2. Memory operation error; 3. File operation error.

示例

import { certificateManager } from '@kit.DeviceCertificateKit';

/* cmHandle为业务调用init接口的返回值,此处仅为示例 */
let cmHandle: Uint8Array = new Uint8Array([
  0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
]);
let signRes: Uint8Array = new Uint8Array([
  0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
]);
try {
  certificateManager.finish(cmHandle, signRes, (err, cmResult) => {
    if (err != null) {
      console.error(`Failed to finish. Code: ${err.code}, message: ${err.message}`);
    } else {
      console.info('Succeeded in finishing.');
    }
  });
} catch(error) {
  console.error(`Failed to finish. Code: ${error.code}, message: ${error.message}`);
}

certificateManager.finish

finish(handle: Uint8Array, signature?: Uint8Array): Promise<CMResult>

表示完成签名、验签的操作,使用Promise方式异步返回结果。

需要权限: ohos.permission.ACCESS_CERT_MANAGER

系统能力: SystemCapability.Security.CertificateManager

参数

参数名 类型 必填 说明
handle Uint8Array 表示初始化操作返回的句柄,最大长度为8字节。
signature Uint8Array 表示签名数据。

返回值

类型 说明
Promise<CMResult> Promise对象。执行签名操作时,表示签名的结果,返回值为CMResult对象中的outData属性;执行验签操作时,无返回结果的Promise对象。

错误码:

以下错误码的详细介绍请参见证书管理错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
17500001 Internal error. Possible causes: 1. IPC communication failed; 2. Memory operation error; 3. File operation error.

示例

import { certificateManager } from '@kit.DeviceCertificateKit';
import { BusinessError } from '@kit.BasicServicesKit';

/* cmHandle为业务调用init接口的返回值,此处仅为示例 */
let cmHandle: Uint8Array = new Uint8Array([
  0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
]);
try {
  /* 签名的finish操作 */
  certificateManager.finish(cmHandle).then((cmResult) => {
    if (cmResult?.outData != undefined) {
      let signRes1: Uint8Array = cmResult.outData;
      console.info('Succeeded in finishing signature.');
    } else {
      console.info('The result of signature is undefined.');
    }
  }).catch((err: BusinessError) => {
    console.error(`Failed to finish signature. Code: ${err.code}, message: ${err.message}`);
  })

  /* 签名的结果 */
  let signRes: Uint8Array = new Uint8Array([
    0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
  ]);
  /* 验签的finish操作 */
  certificateManager.finish(cmHandle, signRes).then((cmResult) => {
    console.info('Succeeded in finishing verification.');
  }).catch((err: BusinessError) => {
    console.error(`Failed to finish verification. Code: ${err.code}, message: ${err.message}`);
  })
} catch(error) {
  console.error(`Failed to finish. Code: ${error.code}, message: ${error.message}`);
}

certificateManager.abort

abort(handle: Uint8Array, callback: AsyncCallback<void>): void

表示中止签名、验签的操作,使用Callback回调异步返回结果。

需要权限: ohos.permission.ACCESS_CERT_MANAGER

系统能力: SystemCapability.Security.CertificateManager

参数

参数名 类型 必填 说明
handle Uint8Array 表示初始化操作返回的句柄,最大长度为8字节。
callback AsyncCallback<void> 回调函数。当中止签名、验签成功时,err为null,否则为错误对象。

错误码:

以下错误码的详细介绍请参见证书管理错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
17500001 Internal error. Possible causes: 1. IPC communication failed; 2. Memory operation error; 3. File operation error.

示例

import { certificateManager } from '@kit.DeviceCertificateKit';

/* cmHandle为业务调用init接口的返回值,此处仅为示例 */
let cmHandle: Uint8Array = new Uint8Array([
  0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
]);
try {
  certificateManager.abort(cmHandle, (err, cmResult) => {
    if (err != null) {
      console.error(`Failed to abort. Code: ${err.code}, message: ${err.message}`);
    } else {
      console.info('Succeeded in aborting.');
    }
  });
} catch(error) {
  console.error(`Failed to abort. Code: ${error.code}, message: ${error.message}`);
}

certificateManager.abort

abort(handle: Uint8Array): Promise<void>

表示中止签名、验签的操作,使用Promise方式异步返回结果。

需要权限: ohos.permission.ACCESS_CERT_MANAGER

系统能力: SystemCapability.Security.CertificateManager

参数

参数名 类型 必填 说明
handle Uint8Array 表示初始化操作返回的句柄,最大长度为8字节。

返回值

类型 说明
Promise<void> Promise对象。无返回结果的Promise对象。

错误码:

以下错误码的详细介绍请参见证书管理错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
17500001 Internal error. Possible causes: 1. IPC communication failed; 2. Memory operation error; 3. File operation error.

示例

import { certificateManager } from '@kit.DeviceCertificateKit';
import { BusinessError } from '@kit.BasicServicesKit';

/* cmHandle为业务调用init接口的返回值,此处仅为示例 */
let cmHandle: Uint8Array = new Uint8Array([
  0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
]);
try {
  certificateManager.abort(cmHandle).then((result) => {
    console.info('Succeeded in aborting.');
  }).catch((err: BusinessError) => {
    console.error(`Failed to abort. Code: ${err.code}, message: ${err.message}`);
  })
} catch (error) {
  console.error(`Failed to abort. Code: ${error.code}, message: ${error.message}`);
}

certificateManager.getPublicCertificate12+

getPublicCertificate(keyUri: string): Promise<CMResult>

表示获取用户公共凭据的详细信息,使用Promise方式异步返回结果。

需要权限: ohos.permission.ACCESS_CERT_MANAGER

系统能力: SystemCapability.Security.CertificateManager

参数

参数名 类型 必填 说明
keyUri string 表示用户公共凭据的唯一标识符,长度限制256字节以内。

返回值

类型 说明
Promise<CMResult> Promise对象。表示获取用户公共凭据详细信息的结果,返回值为CMResult对象中的credential属性。

错误码:

以下错误码的详细介绍请参见证书管理错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
17500001 Internal error. Possible causes: 1. IPC communication failed; 2. Memory operation error; 3. File operation error.
17500002 The certificate does not exist.
17500005 The application is not authorized by the user.

示例

import { certificateManager } from '@kit.DeviceCertificateKit';
import { BusinessError } from '@kit.BasicServicesKit';

let uri: string = 'test'; /* 用户安装公共凭据返回的唯一标识符,此处省略 */
try {
  certificateManager.getPublicCertificate(uri).then((cmResult) => {
    if (cmResult?.credential == undefined) {
      console.info('The result of getting public certificate is undefined.');
    } else {
      let cred = cmResult.credential;
      console.info('Succeeded in getting Public certificate.');
    }
  }).catch((err: BusinessError) => {
    console.error(`Failed to get Public certificate. Code: ${err.code}, message: ${err.message}`);
  })
} catch (error) {
  console.error(`Failed to get Public certificate. Code: ${error.code}, message: ${error.message}`);
}

certificateManager.isAuthorizedApp12+

isAuthorizedApp(keyUri: string): Promise<boolean>

表示当前应用是否由指定的用户凭据授权,使用Promise方式异步返回结果。

需要权限: ohos.permission.ACCESS_CERT_MANAGER

系统能力: SystemCapability.Security.CertificateManager

参数

参数名 类型 必填 说明
keyUri string 表示用户授权给应用使用的凭据的唯一标识符,长度限制256字节以内。

返回值

类型 说明
Promise<boolean> Promise对象。表示查询应用是否被授权的结果,true为已授权,false为未授权。

错误码:

以下错误码的详细介绍请参见证书管理错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
17500001 Internal error. Possible causes: 1. IPC communication failed; 2. Memory operation error; 3. File operation error.

示例

import { certificateManager } from '@kit.DeviceCertificateKit';
import { BusinessError } from '@kit.BasicServicesKit';

let uri: string = 'test'; /* 用户授权给应用使用的凭据的唯一标识符,此处省略 */
try {
  certificateManager.isAuthorizedApp(uri).then((res) => {
    if (res) {
      console.info('The application is authorized by the user.');
    } else {
      console.info('The application is not authorized by the user.');
    }
  }).catch((err: BusinessError) => {
    console.error(`Failed to get Public certificate. Code: ${err.code}, message: ${err.message}`);
  })
} catch (error) {
  console.error(`Failed to get Public certificate. Code: ${error.code}, message: ${error.message}`);
}

certificateManager.getAllUserTrustedCertificates12+

getAllUserTrustedCertificates(): Promise<CMResult>

表示获取当前用户和设备公共位置的所有用户根CA证书列表,使用Promise方式异步返回结果。

需要权限: ohos.permission.ACCESS_CERT_MANAGER

系统能力: SystemCapability.Security.CertificateManager

返回值

类型 说明
Promise<CMResult> Promise对象。表示获取用户根CA证书列表的结果,返回值CMResult对象中的certList属性。

错误码:

以下错误码的详细介绍请参见证书管理错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
17500001 Internal error. Possible causes: 1. IPC communication failed; 2. Memory operation error; 3. File operation error.

示例

import { certificateManager } from '@kit.DeviceCertificateKit';
import { BusinessError } from '@kit.BasicServicesKit';

try {
  certificateManager.getAllUserTrustedCertificates().then((cmResult) => {
    if (cmResult == undefined) { // 用户根CA证书个数为0时,返回cmResult为undefined。
      console.info('the count of the user trusted certificates is 0');
    } else if (cmResult.certList == undefined) {
      console.info('The result of getting all user trusted certificates is undefined.');
    } else {
      let list = cmResult.certList;
      console.info('Succeeded in getting all user trusted certificates.');
    }
  }).catch((err: BusinessError) => {
    console.error(`Failed to get all user trusted certificates. Code: ${err.code}, message: ${err.message}`);
  })
} catch (error) {
  console.error(`Failed to get all user trusted certificates. Code: ${error.code}, message: ${error.message}`);
}

certificateManager.getAllUserTrustedCertificates18+

getAllUserTrustedCertificates(scope: CertScope): Promise<CMResult>

表示根据证书的位置获取用户根CA证书列表,使用Promise方式异步返回结果。

需要权限: ohos.permission.ACCESS_CERT_MANAGER

系统能力: SystemCapability.Security.CertificateManager

参数

参数名 类型 必填 说明
scope CertScope 表示证书的位置。

返回值

类型 说明
Promise<CMResult> Promise对象。表示获取用户根CA证书列表的结果,返回值CMResult对象中的certList属性。

错误码:

以下错误码的详细介绍请参见证书管理错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
17500001 Internal error. Possible causes: 1. IPC communication failed; 2. Memory operation error; 3. File operation error.

示例

import { certificateManager } from '@kit.DeviceCertificateKit';
import { BusinessError } from '@kit.BasicServicesKit';

try {
  /* 获取当前用户下的用户根CA证书列表; 如果需要获取设备公共位置的用户根CA列表,则传入GLOBAL_USER */
  let scope: certificateManager.CertScope = certificateManager.CertScope.CURRENT_USER;
  certificateManager.getAllUserTrustedCertificates(scope).then((cmResult) => {
    if (cmResult == undefined) { // 用户根CA证书个数为0时,返回cmResult为undefined。
      console.info('the count of the user trusted certificates is 0');
    } else if (cmResult.certList == undefined) {
      console.info('The result of getting current user trusted certificates is undefined.');
    } else {
      let list = cmResult.certList;
      console.info('Succeeded in getting current user trusted certificates.');
    }
  }).catch((err: BusinessError) => {
    console.error(`Failed to get current user trusted certificates. Code: ${err.code}, message: ${err.message}`);
  })
} catch (error) {
  console.error(`Failed to get current user trusted certificates. Code: ${error.code}, message: ${error.message}`);
}

certificateManager.getUserTrustedCertificate12+

getUserTrustedCertificate(certUri: string): Promise<CMResult>

表示获取用户根CA证书的详细信息,使用Promise方式异步返回结果。

需要权限: ohos.permission.ACCESS_CERT_MANAGER

系统能力: SystemCapability.Security.CertificateManager

参数

参数名 类型 必填 说明
certUri string 表示用户用户根CA证书的唯一标识符,长度限制256字节以内。

返回值

类型 说明
Promise<CMResult> Promise对象。表示获取用户根CA证书详细信息的结果,返回值为CMResult对象中的certInfo属性。

错误码:

以下错误码的详细介绍请参见证书管理错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
17500001 Internal error. Possible causes: 1. IPC communication failed; 2. Memory operation error; 3. File operation error.
17500002 The certificate does not exist.

示例

import { certificateManager } from '@kit.DeviceCertificateKit';
import { BusinessError } from '@kit.BasicServicesKit';

let certUri: string = 'testUserCert'; /* 用户安装用户根CA证书返回的唯一标识符,此处省略 */
try {
  certificateManager.getUserTrustedCertificate(certUri).then((cmResult) => {
    if (cmResult?.certInfo == undefined) {
      console.info('The result of getting user trusted certificate is undefined.');
    } else {
      let cert = cmResult.certInfo;
      console.info('Succeeded in getting user trusted certificate.');
    }
  }).catch((err: BusinessError) => {
    console.error(`Failed to get user trusted certificate. Code: ${err.code}, message: ${err.message}`);
  })
} catch (error) {
  console.error(`Failed to get user trusted certificate. Code: ${error.code}, message: ${error.message}`);
}

certificateManager.getPrivateCertificates13+

getPrivateCertificates(): Promise<CMResult>

表示获取应用安装的凭据列表,使用Promise方式异步返回结果。

需要权限: ohos.permission.ACCESS_CERT_MANAGER

系统能力: SystemCapability.Security.CertificateManager

返回值

类型 说明
Promise<CMResult> Promise对象。表示获取应用安装的凭据列表的结果,返回值CMResult对象中的credentialList属性。

错误码:

以下错误码的详细介绍请参见证书管理错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
17500001 Internal error. Possible causes: 1. IPC communication failed; 2. Memory operation error; 3. File operation error.

示例

import { certificateManager } from '@kit.DeviceCertificateKit';
import { BusinessError } from '@kit.BasicServicesKit';

try {
  certificateManager.getPrivateCertificates().then((cmResult) => {
    if (cmResult == undefined) { // 应用安装的凭据个数为0时,返回cmResult为undefined。
      console.info('the count of the private certificates is 0');
    } else if (cmResult.credentialList == undefined) {
      console.info('The result of getting all private certificates installed by the application is undefined.');
    } else {
      let list = cmResult.credentialList;
      console.info('Succeeded in getting all private certificates installed by the application.');
    }
  }).catch((err: BusinessError) => {
    console.error(`Failed to get all private certificates installed by the application. Code: ${err.code}, message: ${err.message}`);
  })
} catch (error) {
  console.error(`Failed to get all private certificates installed by the application. Code: ${error.code}, message: ${error.message}`);
}

certificateManager.getCertificateStorePath18+

getCertificateStorePath(property: CertStoreProperty): string;

表示获取证书的存储路径。

系统能力: SystemCapability.Security.CertificateManager

参数

参数名 类型 必填 说明
property CertStoreProperty 表示获取证书存储路径的参数集合。

返回值

类型 说明
string 表示证书的存储路径。

错误码:

以下错误码的详细介绍请参见证书管理错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
17500001 Internal error. Possible causes: 1. IPC communication failed; 2. Memory operation error; 3. File operation error.
17500009 The device does not support the specified certificate store path, such as the overseas device does not support the certificate which algorithm is SM.

示例

import { certificateManager } from '@kit.DeviceCertificateKit';

try {
  /* 获取系统CA的存储位置 */
  let property1: certificateManager.CertStoreProperty = {
    certType: certificateManager.CertType.CA_CERT_SYSTEM,
  }
  let systemCAPath = certificateManager.getCertificateStorePath(property1);
  console.info(`Success to get system ca path: ${systemCAPath}`);

  /* 获取当前用户的用户CA存储位置 */
  let property2: certificateManager.CertStoreProperty = {
    certType: certificateManager.CertType.CA_CERT_USER,
    certScope: certificateManager.CertScope.CURRENT_USER,
  }
  let userCACurrentPath = certificateManager.getCertificateStorePath(property2);
  console.info(`Success to get current user's user ca path: ${userCACurrentPath}`);

  /* 获取设备公共的用户CA存储位置 */
  let property3: certificateManager.CertStoreProperty = {
    certType: certificateManager.CertType.CA_CERT_USER,
    certScope: certificateManager.CertScope.GLOBAL_USER,
  }
  let globalCACurrentPath = certificateManager.getCertificateStorePath(property3);
  console.info(`Success to get global user's user ca path: ${globalCACurrentPath}`);

  /* 获取SM算法系统CA的存储位置 */
  let property4: certificateManager.CertStoreProperty = {
    certType: certificateManager.CertType.CA_CERT_SYSTEM,
    certAlg: certificateManager.CertAlgorithm.SM,
  }
  let smSystemCAPath = certificateManager.getCertificateStorePath(property4);
  console.info(`Success to get SM system ca path: ${smSystemCAPath}`);
} catch (error) {
  console.error(`Failed to get store path. Code: ${error.code}, message: ${error.message}`);
}

你可能感兴趣的鸿蒙文章

harmony 鸿蒙Device Certificate Kit(设备证书服务)

harmony 鸿蒙证书错误码

harmony 鸿蒙证书管理错误码

harmony 鸿蒙证书管理对话框错误码

harmony 鸿蒙js-apis-cert

harmony 鸿蒙@ohos.security.certManager (证书管理模块)(系统接口)

harmony 鸿蒙@ohos.security.certManagerDialog (证书管理对话框模块)

0  赞