1e41f4b71Sopenharmony_ci# @ohos.security.certManager (证书管理模块) 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci证书管理主要提供系统级的证书管理能力,实现证书全生命周期(安装,存储,使用,销毁)的管理和安全使用 。 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci> **说明:** 6e41f4b71Sopenharmony_ci> 7e41f4b71Sopenharmony_ci> 本模块首批接口从API version 11开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ci## 导入模块 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci```ts 12e41f4b71Sopenharmony_ciimport { certificateManager } from '@kit.DeviceCertificateKit'; 13e41f4b71Sopenharmony_ci``` 14e41f4b71Sopenharmony_ci 15e41f4b71Sopenharmony_ci## CmKeyPurpose 16e41f4b71Sopenharmony_ci 17e41f4b71Sopenharmony_ci表示密钥使用目的的枚举,用于签名、验签。 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 20e41f4b71Sopenharmony_ci 21e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 22e41f4b71Sopenharmony_ci| ---------- | ------ | --------- | 23e41f4b71Sopenharmony_ci| CM_KEY_PURPOSE_SIGN | 4 | 签名 | 24e41f4b71Sopenharmony_ci| CM_KEY_PURPOSE_VERIFY | 8 | 验签 | 25e41f4b71Sopenharmony_ci 26e41f4b71Sopenharmony_ci## CmKeyDigest 27e41f4b71Sopenharmony_ci 28e41f4b71Sopenharmony_ci表示签名、验签使用的摘要算法的枚举。 29e41f4b71Sopenharmony_ci 30e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 31e41f4b71Sopenharmony_ci 32e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 33e41f4b71Sopenharmony_ci| ---------- | ------ | --------- | 34e41f4b71Sopenharmony_ci| CM_DIGEST_NONE | 0 | 不需要摘要算法,选用此项时,需要业务传入已经计算过摘要的数据进行签名、验签。 | 35e41f4b71Sopenharmony_ci| CM_DIGEST_MD5 | 1 | MD5摘要算法。 | 36e41f4b71Sopenharmony_ci| CM_DIGEST_SHA1 | 2 | SHA1摘要算法。 | 37e41f4b71Sopenharmony_ci| CM_DIGEST_SHA224 | 3 | SHA224摘要算法。 | 38e41f4b71Sopenharmony_ci| CM_DIGEST_SHA256 | 4 | SHA256摘要算法。 | 39e41f4b71Sopenharmony_ci| CM_DIGEST_SHA384 | 5 | SHA384摘要算法。 | 40e41f4b71Sopenharmony_ci| CM_DIGEST_SHA512 | 6 | SHA512摘要算法。 | 41e41f4b71Sopenharmony_ci 42e41f4b71Sopenharmony_ci## CmKeyPadding 43e41f4b71Sopenharmony_ci 44e41f4b71Sopenharmony_ci表示签名、验签使用的填充方式的枚举。 45e41f4b71Sopenharmony_ci 46e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 47e41f4b71Sopenharmony_ci 48e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 49e41f4b71Sopenharmony_ci| ---------- | ------ | --------- | 50e41f4b71Sopenharmony_ci| CM_PADDING_NONE | 0 | 无填充。 | 51e41f4b71Sopenharmony_ci| CM_PADDING_PSS | 1 | PSS方式填充。 | 52e41f4b71Sopenharmony_ci| CM_PADDING_PKCS1_V1_5 | 2 | PKCS1_V1_5方式填充。 | 53e41f4b71Sopenharmony_ci 54e41f4b71Sopenharmony_ci## CMSignatureSpec 55e41f4b71Sopenharmony_ci 56e41f4b71Sopenharmony_ci表示签名、验签操作使用的参数集合,包括密钥使用目的、填充方式和摘要算法。 57e41f4b71Sopenharmony_ci 58e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 59e41f4b71Sopenharmony_ci 60e41f4b71Sopenharmony_ci| 名称 | 类型 | 只读 | 可选 | 说明 | 61e41f4b71Sopenharmony_ci| -------------- | --------------------------------- | ---- | ------------------------------------------------------------ | ------------------------------------------------------------ | 62e41f4b71Sopenharmony_ci| purpose | [CmKeyPurpose](#cmkeypurpose) | 否 | 否 | 表示密钥使用目的的枚举。 | 63e41f4b71Sopenharmony_ci| padding | [CmKeyPadding](#cmkeypadding) | 否 | 是 | 表示填充方式的枚举。 | 64e41f4b71Sopenharmony_ci| digest | [CmKeyDigest](#cmkeydigest) | 否 | 是 | 表示摘要算法的枚举。 | 65e41f4b71Sopenharmony_ci 66e41f4b71Sopenharmony_ci 67e41f4b71Sopenharmony_ci## CertInfo 68e41f4b71Sopenharmony_ci 69e41f4b71Sopenharmony_ci表示证书详细信息。 70e41f4b71Sopenharmony_ci 71e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 72e41f4b71Sopenharmony_ci 73e41f4b71Sopenharmony_ci| 名称 | 类型 | 只读 | 可选 | 说明 | 74e41f4b71Sopenharmony_ci| -------------- | --------------------------------- | ---- | ---- | ------------------------------------------------------------ | 75e41f4b71Sopenharmony_ci| uri | string | 否 | 否 | 表示证书的唯一标识符。 | 76e41f4b71Sopenharmony_ci| certAlias | string | 否 | 否 | 表示证书的别名。 | 77e41f4b71Sopenharmony_ci| state | boolean | 否 | 否 | 表示证书的状态,true为启用状态、false为禁用状态。 | 78e41f4b71Sopenharmony_ci| issuerName | string | 否 | 否 | 表示证书的颁发者名称。 | 79e41f4b71Sopenharmony_ci| subjectName | string | 否 | 否 | 表示证书的使用者名称。 | 80e41f4b71Sopenharmony_ci| serial | string | 否 | 否 | 表示证书的序列号。 | 81e41f4b71Sopenharmony_ci| notBefore | string | 否 | 否 | 表示证书有效期起始日期。 | 82e41f4b71Sopenharmony_ci| notAfter | string | 否 | 否 | 表示证书有效期截止日期。 | 83e41f4b71Sopenharmony_ci| fingerprintSha256 | string | 否 | 否 | 表示证书的指纹值。 | 84e41f4b71Sopenharmony_ci| cert | Uint8Array | 否 | 否 | 表示证书二进制数据。 | 85e41f4b71Sopenharmony_ci 86e41f4b71Sopenharmony_ci## CertAbstract 87e41f4b71Sopenharmony_ci 88e41f4b71Sopenharmony_ci表示证书简要信息。 89e41f4b71Sopenharmony_ci 90e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 91e41f4b71Sopenharmony_ci 92e41f4b71Sopenharmony_ci| 名称 | 类型 | 只读 | 可选 | 说明 | 93e41f4b71Sopenharmony_ci| -------------- | --------------------------------- | ---- | ---- | ------------------------------------------------------------ | 94e41f4b71Sopenharmony_ci| uri | string | 否 | 否 | 表示证书的唯一标识符。 | 95e41f4b71Sopenharmony_ci| certAlias | string | 否 | 否 | 表示证书的别名。 | 96e41f4b71Sopenharmony_ci| state | boolean | 否 | 否 | 表示证书的状态,true为启用状态、false为禁用状态。 | 97e41f4b71Sopenharmony_ci| subjectName | string | 否 | 否 | 表示证书的使用者名称。 | 98e41f4b71Sopenharmony_ci 99e41f4b71Sopenharmony_ci## Credential 100e41f4b71Sopenharmony_ci 101e41f4b71Sopenharmony_ci表示凭据详细信息。 102e41f4b71Sopenharmony_ci 103e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 104e41f4b71Sopenharmony_ci 105e41f4b71Sopenharmony_ci| 名称 | 类型 | 只读 | 可选 | 说明 | 106e41f4b71Sopenharmony_ci| -------------- | --------------------------------- | ---- | ---- | ------------------------------------------------------------ | 107e41f4b71Sopenharmony_ci| type | string | 否 | 否 | 表示凭据的类型。 | 108e41f4b71Sopenharmony_ci| alias | string | 否 | 否 | 表示凭据的别名。 | 109e41f4b71Sopenharmony_ci| keyUri | string | 否 | 否 | 表示凭据的唯一标识符。 | 110e41f4b71Sopenharmony_ci| certNum | number | 否 | 否 | 表示凭据中包含的证书个数。 | 111e41f4b71Sopenharmony_ci| keyNum | number | 否 | 否 | 表示凭据中包含的密钥个数。 | 112e41f4b71Sopenharmony_ci| credentialData | Uint8Array | 否 | 否 | 表示凭据二进制数据。 | 113e41f4b71Sopenharmony_ci 114e41f4b71Sopenharmony_ci## CredentialAbstract 115e41f4b71Sopenharmony_ci 116e41f4b71Sopenharmony_ci表示凭据的简要信息。 117e41f4b71Sopenharmony_ci 118e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 119e41f4b71Sopenharmony_ci 120e41f4b71Sopenharmony_ci| 名称 | 类型 | 只读 | 可选 | 说明 | 121e41f4b71Sopenharmony_ci| -------------- | --------------------------------- | ---- | ---- | ------------------------------------------------------------ | 122e41f4b71Sopenharmony_ci| type | string | 否 | 否 | 表示凭据的类型。 | 123e41f4b71Sopenharmony_ci| alias | string | 否 | 否 | 表示凭据的别名。 | 124e41f4b71Sopenharmony_ci| keyUri | string | 否 | 否 | 表示凭据的唯一标识符。 | 125e41f4b71Sopenharmony_ci 126e41f4b71Sopenharmony_ci## CMResult 127e41f4b71Sopenharmony_ci 128e41f4b71Sopenharmony_ci表示接口的返回结果。 129e41f4b71Sopenharmony_ci 130e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 131e41f4b71Sopenharmony_ci 132e41f4b71Sopenharmony_ci| 名称 | 类型 | 只读 | 可选 | 说明 | 133e41f4b71Sopenharmony_ci| -------------- | --------------------------------- | ---- | ---- | ------------------------------------------------------------ | 134e41f4b71Sopenharmony_ci| certList | Array<[CertAbstract](#certabstract)> | 否 | 是 | 表示证书简要信息的列表。 | 135e41f4b71Sopenharmony_ci| certInfo | [CertInfo](#certinfo) | 否 | 是 | 表示证书详情。 | 136e41f4b71Sopenharmony_ci| credentialList | Array<[CredentialAbstract](#credentialabstract)> | 否 | 是 | 表示凭据简要信息的列表。 | 137e41f4b71Sopenharmony_ci| credential | [Credential](#credential) | 否 | 是 | 表示凭据详情。 | 138e41f4b71Sopenharmony_ci| appUidList | Array\<string> | 否 | 是 | 表示授权应用列表。 | 139e41f4b71Sopenharmony_ci| uri | string | 否 | 是 | 表示证书或凭据的唯一标识符。 | 140e41f4b71Sopenharmony_ci| outData | Uint8Array | 否 | 是 | 表示签名结果。 | 141e41f4b71Sopenharmony_ci 142e41f4b71Sopenharmony_ci## CMHandle 143e41f4b71Sopenharmony_ci 144e41f4b71Sopenharmony_ci表示签名、验签的初始化操作句柄。 145e41f4b71Sopenharmony_ci 146e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 147e41f4b71Sopenharmony_ci 148e41f4b71Sopenharmony_ci| 名称 | 类型 | 只读 | 可选 | 说明 | 149e41f4b71Sopenharmony_ci| -------------- | --------------------------------- | ---- | ---- | ------------------------------------------------------------ | 150e41f4b71Sopenharmony_ci| handle | Uint8Array | 否 | 否 | 否签名、验签的初始化操作句柄。 | 151e41f4b71Sopenharmony_ci 152e41f4b71Sopenharmony_ci## CMErrorCode 153e41f4b71Sopenharmony_ci 154e41f4b71Sopenharmony_ci表示调用证书管理相关API的错误码。 155e41f4b71Sopenharmony_ci 156e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 157e41f4b71Sopenharmony_ci 158e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 159e41f4b71Sopenharmony_ci| ---------- | ------ | --------- | 160e41f4b71Sopenharmony_ci| CM_ERROR_NO_PERMISSION | 201 | 表示应用程序无权限调用接口。 | 161e41f4b71Sopenharmony_ci| CM_ERROR_INVALID_PARAMS | 401 | 表示输入参数无效。 | 162e41f4b71Sopenharmony_ci| CM_ERROR_GENERIC | 17500001 | 表示调用接口时发生内部错误。 | 163e41f4b71Sopenharmony_ci| CM_ERROR_NO_FOUND | 17500002 | 表示证书或凭据不存在。 | 164e41f4b71Sopenharmony_ci| CM_ERROR_INCORRECT_FORMAT | 17500003 | 表示输入证书或凭据的数据格式无效。 | 165e41f4b71Sopenharmony_ci| CM_ERROR_MAX_CERT_COUNT_REACHED<sup>12+</sup> | 17500004 | 表示证书或凭据数量达到上限。 | 166e41f4b71Sopenharmony_ci| CM_ERROR_NO_AUTHORIZATION<sup>12+</sup> | 17500005 | 表示应用未经用户授权。 | 167e41f4b71Sopenharmony_ci 168e41f4b71Sopenharmony_ci## certificateManager.installPrivateCertificate 169e41f4b71Sopenharmony_ci 170e41f4b71Sopenharmony_ciinstallPrivateCertificate(keystore: Uint8Array, keystorePwd: string, certAlias: string, callback: AsyncCallback\<CMResult>): void 171e41f4b71Sopenharmony_ci 172e41f4b71Sopenharmony_ci表示安装私有凭据,使用Callback回调异步返回结果。 173e41f4b71Sopenharmony_ci 174e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.ACCESS_CERT_MANAGER 175e41f4b71Sopenharmony_ci 176e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 177e41f4b71Sopenharmony_ci 178e41f4b71Sopenharmony_ci**参数**: 179e41f4b71Sopenharmony_ci 180e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 181e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------- | ---- | -------------------------- | 182e41f4b71Sopenharmony_ci| keystore | Uint8Array | 是 | 表示带有密钥对和证书的密钥库文件。 | 183e41f4b71Sopenharmony_ci| keystorePwd | string | 是 | 表示密钥库文件的密码,长度限制32字节以内。 | 184e41f4b71Sopenharmony_ci| certAlias | string | 是 | 表示用户输入的凭据别名,当前仅支持传入数字、字母或下划线,长度建议32字节以内。 | 185e41f4b71Sopenharmony_ci| callback | AsyncCallback\<[CMResult](#cmresult)> | 是 | 回调函数。当安装私有凭据成功时,err为null,data为[CMResult](#cmresult)对象中的uri属性;否则为错误对象。 | 186e41f4b71Sopenharmony_ci 187e41f4b71Sopenharmony_ci**错误码:** 188e41f4b71Sopenharmony_ci 189e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[证书管理错误码](errorcode-certManager.md)。 190e41f4b71Sopenharmony_ci 191e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 192e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | 193e41f4b71Sopenharmony_ci| 201 | Permission verification failed. The application does not have the permission required to call the API. | 194e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 195e41f4b71Sopenharmony_ci| 17500001 | Internal error. | 196e41f4b71Sopenharmony_ci| 17500003 | The keystore is in an invalid format or the keystore password is incorrect. | 197e41f4b71Sopenharmony_ci| 17500004<sup>12+</sup> | The number of certificates or credentials reaches the maximum allowed. | 198e41f4b71Sopenharmony_ci 199e41f4b71Sopenharmony_ci**示例**: 200e41f4b71Sopenharmony_ci```ts 201e41f4b71Sopenharmony_ciimport { certificateManager } from '@kit.DeviceCertificateKit'; 202e41f4b71Sopenharmony_ci 203e41f4b71Sopenharmony_ci/* 安装的凭据数据需要业务赋值,本例数据非凭据数据 */ 204e41f4b71Sopenharmony_cilet keystore: Uint8Array = new Uint8Array([ 205e41f4b71Sopenharmony_ci 0x30, 0x82, 0x0b, 0xc1, 0x02, 0x01, 206e41f4b71Sopenharmony_ci]); 207e41f4b71Sopenharmony_cilet keystorePwd: string = "123456"; 208e41f4b71Sopenharmony_citry { 209e41f4b71Sopenharmony_ci certificateManager.installPrivateCertificate(keystore, keystorePwd, "test", (err, cmResult) => { 210e41f4b71Sopenharmony_ci if (err != null) { 211e41f4b71Sopenharmony_ci console.error(`Failed to install private certificate. Code: ${err.code}, message: ${err.message}`); 212e41f4b71Sopenharmony_ci } else { 213e41f4b71Sopenharmony_ci let uri: string = (cmResult?.uri == undefined) ? '' : cmResult.uri; 214e41f4b71Sopenharmony_ci console.info('Succeeded in installing private certificate.'); 215e41f4b71Sopenharmony_ci } 216e41f4b71Sopenharmony_ci }); 217e41f4b71Sopenharmony_ci} catch (error) { 218e41f4b71Sopenharmony_ci console.error(`Failed to install private certificate. Code: ${error.code}, message: ${error.message}`); 219e41f4b71Sopenharmony_ci} 220e41f4b71Sopenharmony_ci``` 221e41f4b71Sopenharmony_ci 222e41f4b71Sopenharmony_ci## certificateManager.installPrivateCertificate 223e41f4b71Sopenharmony_ci 224e41f4b71Sopenharmony_ciinstallPrivateCertificate(keystore: Uint8Array, keystorePwd: string, certAlias: string): Promise\<CMResult> 225e41f4b71Sopenharmony_ci 226e41f4b71Sopenharmony_ci表示安装私有凭据,使用Promise方式异步返回结果。 227e41f4b71Sopenharmony_ci 228e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.ACCESS_CERT_MANAGER 229e41f4b71Sopenharmony_ci 230e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 231e41f4b71Sopenharmony_ci 232e41f4b71Sopenharmony_ci**参数**: 233e41f4b71Sopenharmony_ci 234e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 235e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------- | ---- | -------------------------- | 236e41f4b71Sopenharmony_ci| keystore | Uint8Array | 是 | 表示带有密钥对和证书的密钥库文件。 | 237e41f4b71Sopenharmony_ci| keystorePwd | string | 是 | 表示密钥库文件的密码,长度限制32字节以内。 | 238e41f4b71Sopenharmony_ci| certAlias | string | 是 | 表示用户输入的凭据别名,当前仅支持传入数字、字母或下划线,长度建议32字节以内。 | 239e41f4b71Sopenharmony_ci 240e41f4b71Sopenharmony_ci**返回值**: 241e41f4b71Sopenharmony_ci 242e41f4b71Sopenharmony_ci| 类型 | 说明 | 243e41f4b71Sopenharmony_ci| ------------------------------- | ------------------------------------------------------------ | 244e41f4b71Sopenharmony_ci| Promise\<[CMResult](#cmresult)> | Promise对象。表示安装私有凭据的结果,返回值为[CMResult](#cmresult)对象中的uri属性。 | 245e41f4b71Sopenharmony_ci 246e41f4b71Sopenharmony_ci**错误码:** 247e41f4b71Sopenharmony_ci 248e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[证书管理错误码](errorcode-certManager.md)。 249e41f4b71Sopenharmony_ci 250e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 251e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | 252e41f4b71Sopenharmony_ci| 201 | Permission verification failed. The application does not have the permission required to call the API. | 253e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 254e41f4b71Sopenharmony_ci| 17500001 | Internal error. | 255e41f4b71Sopenharmony_ci| 17500003 | The keystore is in an invalid format or the keystore password is incorrect. | 256e41f4b71Sopenharmony_ci| 17500004<sup>12+</sup> | The number of certificates or credentials reaches the maximum allowed. | 257e41f4b71Sopenharmony_ci 258e41f4b71Sopenharmony_ci**示例**: 259e41f4b71Sopenharmony_ci 260e41f4b71Sopenharmony_ci```ts 261e41f4b71Sopenharmony_ciimport { certificateManager } from '@kit.DeviceCertificateKit'; 262e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 263e41f4b71Sopenharmony_ci 264e41f4b71Sopenharmony_ci/* 安装的凭据数据需要业务赋值,本例数据非凭据数据 */ 265e41f4b71Sopenharmony_cilet keystore: Uint8Array = new Uint8Array([ 266e41f4b71Sopenharmony_ci 0x30, 0x82, 0x0b, 0xc1, 0x02, 0x01, 267e41f4b71Sopenharmony_ci]); 268e41f4b71Sopenharmony_cilet keystorePwd: string = "123456"; 269e41f4b71Sopenharmony_citry { 270e41f4b71Sopenharmony_ci certificateManager.installPrivateCertificate(keystore, keystorePwd, 'test').then((cmResult) => { 271e41f4b71Sopenharmony_ci let uri: string = (cmResult?.uri == undefined) ? '' : cmResult.uri; 272e41f4b71Sopenharmony_ci console.info('Succeeded in installing private certificate.'); 273e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 274e41f4b71Sopenharmony_ci console.error(`Failed to install private certificate. Code: ${err.code}, message: ${err.message}`); 275e41f4b71Sopenharmony_ci }) 276e41f4b71Sopenharmony_ci} catch (error) { 277e41f4b71Sopenharmony_ci console.error(`Failed to install private certificate. Code: ${error.code}, message: ${error.message}`); 278e41f4b71Sopenharmony_ci} 279e41f4b71Sopenharmony_ci``` 280e41f4b71Sopenharmony_ci 281e41f4b71Sopenharmony_ci## certificateManager.getPrivateCertificate 282e41f4b71Sopenharmony_ci 283e41f4b71Sopenharmony_cigetPrivateCertificate(keyUri: string, callback: AsyncCallback\<CMResult>): void 284e41f4b71Sopenharmony_ci 285e41f4b71Sopenharmony_ci表示获取私有凭据的详细信息,使用Callback回调异步返回结果。 286e41f4b71Sopenharmony_ci 287e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.ACCESS_CERT_MANAGER 288e41f4b71Sopenharmony_ci 289e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 290e41f4b71Sopenharmony_ci 291e41f4b71Sopenharmony_ci**参数**: 292e41f4b71Sopenharmony_ci 293e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 294e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------- | ---- | -------------------------- | 295e41f4b71Sopenharmony_ci| keyUri | string | 是 | 表示待获取凭据的唯一标识符。 | 296e41f4b71Sopenharmony_ci| callback | AsyncCallback\<[CMResult](#cmresult)> | 是 | 回调函数。当获取私有凭据的详细信息成功时,err为null,data为[CMResult](#cmresult)对象中的credential属性;否则为错误对象。 | 297e41f4b71Sopenharmony_ci 298e41f4b71Sopenharmony_ci**错误码:** 299e41f4b71Sopenharmony_ci 300e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[证书管理错误码](errorcode-certManager.md)。 301e41f4b71Sopenharmony_ci 302e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 303e41f4b71Sopenharmony_ci| -------- | ------------- | 304e41f4b71Sopenharmony_ci| 201 | Permission verification failed. The application does not have the permission required to call the API. | 305e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 306e41f4b71Sopenharmony_ci| 17500001 | Internal error. | 307e41f4b71Sopenharmony_ci| 17500002 | The certificate does not exist. | 308e41f4b71Sopenharmony_ci 309e41f4b71Sopenharmony_ci**示例**: 310e41f4b71Sopenharmony_ci```ts 311e41f4b71Sopenharmony_ciimport { certificateManager } from '@kit.DeviceCertificateKit'; 312e41f4b71Sopenharmony_ci 313e41f4b71Sopenharmony_cilet uri: string = 'test'; /* 业务安装凭据,返回唯一标识符,此处省略 */ 314e41f4b71Sopenharmony_citry { 315e41f4b71Sopenharmony_ci certificateManager.getPrivateCertificate(uri, (err, cmResult) => { 316e41f4b71Sopenharmony_ci if (err != null) { 317e41f4b71Sopenharmony_ci console.error(`Failed to get private certificate. Code: ${err.code}, message: ${err.message}`); 318e41f4b71Sopenharmony_ci } else { 319e41f4b71Sopenharmony_ci if (cmResult?.credential == undefined) { 320e41f4b71Sopenharmony_ci console.info('The result of getting private certificate is undefined.'); 321e41f4b71Sopenharmony_ci } else { 322e41f4b71Sopenharmony_ci let list = cmResult.credential; 323e41f4b71Sopenharmony_ci console.info('Succeeded in getting private certificate.'); 324e41f4b71Sopenharmony_ci } 325e41f4b71Sopenharmony_ci } 326e41f4b71Sopenharmony_ci }); 327e41f4b71Sopenharmony_ci} catch (error) { 328e41f4b71Sopenharmony_ci console.error(`Failed to get private certificate. Code: ${error.code}, message: ${error.message}`); 329e41f4b71Sopenharmony_ci} 330e41f4b71Sopenharmony_ci``` 331e41f4b71Sopenharmony_ci 332e41f4b71Sopenharmony_ci## certificateManager.getPrivateCertificate 333e41f4b71Sopenharmony_ci 334e41f4b71Sopenharmony_cigetPrivateCertificate(keyUri: string): Promise\<CMResult> 335e41f4b71Sopenharmony_ci 336e41f4b71Sopenharmony_ci表示获取私有凭据详情,使用Promise方式异步返回结果。 337e41f4b71Sopenharmony_ci 338e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.ACCESS_CERT_MANAGER 339e41f4b71Sopenharmony_ci 340e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 341e41f4b71Sopenharmony_ci 342e41f4b71Sopenharmony_ci**参数**: 343e41f4b71Sopenharmony_ci 344e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 345e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------- | ---- | -------------------------- | 346e41f4b71Sopenharmony_ci| keyUri | string | 是 | 表示待获取凭据的唯一标识符。 | 347e41f4b71Sopenharmony_ci 348e41f4b71Sopenharmony_ci**返回值**: 349e41f4b71Sopenharmony_ci 350e41f4b71Sopenharmony_ci| 类型 | 说明 | 351e41f4b71Sopenharmony_ci| ------------------------------- | ------------------------------------------------------------ | 352e41f4b71Sopenharmony_ci| Promise\<[CMResult](#cmresult)> | Promise对象。表示获取私有凭据详细信息的结果,返回值为[CMResult](#cmresult)对象中的credential属性。 | 353e41f4b71Sopenharmony_ci 354e41f4b71Sopenharmony_ci**错误码:** 355e41f4b71Sopenharmony_ci 356e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[证书管理错误码](errorcode-certManager.md)。 357e41f4b71Sopenharmony_ci 358e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 359e41f4b71Sopenharmony_ci| -------- | ------------- | 360e41f4b71Sopenharmony_ci| 201 | Permission verification failed. The application does not have the permission required to call the API. | 361e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 362e41f4b71Sopenharmony_ci| 17500001 | Internal error. | 363e41f4b71Sopenharmony_ci| 17500002 | The certificate does not exist. | 364e41f4b71Sopenharmony_ci 365e41f4b71Sopenharmony_ci**示例**: 366e41f4b71Sopenharmony_ci```ts 367e41f4b71Sopenharmony_ciimport { certificateManager } from '@kit.DeviceCertificateKit'; 368e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 369e41f4b71Sopenharmony_ci 370e41f4b71Sopenharmony_cilet uri: string = 'test'; /* 业务安装凭据,返回唯一标识符,此处省略 */ 371e41f4b71Sopenharmony_citry { 372e41f4b71Sopenharmony_ci certificateManager.getPrivateCertificate(uri).then((cmResult) => { 373e41f4b71Sopenharmony_ci if (cmResult?.credential == undefined) { 374e41f4b71Sopenharmony_ci console.info('The result of getting private certificate is undefined.'); 375e41f4b71Sopenharmony_ci } else { 376e41f4b71Sopenharmony_ci let list = cmResult.credential; 377e41f4b71Sopenharmony_ci console.info('Succeeded in getting private certificate.'); 378e41f4b71Sopenharmony_ci } 379e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 380e41f4b71Sopenharmony_ci console.error(`Failed to get private certificate. Code: ${err.code}, message: ${err.message}`); 381e41f4b71Sopenharmony_ci }) 382e41f4b71Sopenharmony_ci} catch (error) { 383e41f4b71Sopenharmony_ci console.error(`Failed to get private certificate. Code: ${error.code}, message: ${error.message}`); 384e41f4b71Sopenharmony_ci} 385e41f4b71Sopenharmony_ci``` 386e41f4b71Sopenharmony_ci 387e41f4b71Sopenharmony_ci## certificateManager.uninstallPrivateCertificate 388e41f4b71Sopenharmony_ci 389e41f4b71Sopenharmony_ciuninstallPrivateCertificate(keyUri: string, callback: AsyncCallback\<void>): void 390e41f4b71Sopenharmony_ci 391e41f4b71Sopenharmony_ci表示卸载指定的私有凭据,使用Callback回调异步返回结果。 392e41f4b71Sopenharmony_ci 393e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.ACCESS_CERT_MANAGER 394e41f4b71Sopenharmony_ci 395e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 396e41f4b71Sopenharmony_ci 397e41f4b71Sopenharmony_ci**参数**: 398e41f4b71Sopenharmony_ci 399e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 400e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------- | ---- | -------------------------- | 401e41f4b71Sopenharmony_ci| keyUri | string | 是 | 表示待卸载凭据的唯一标识符。 | 402e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 回调函数。当卸载私有凭据成功时,err为null,否则为错误对象。 | 403e41f4b71Sopenharmony_ci 404e41f4b71Sopenharmony_ci**错误码:** 405e41f4b71Sopenharmony_ci 406e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[证书管理错误码](errorcode-certManager.md)。 407e41f4b71Sopenharmony_ci 408e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 409e41f4b71Sopenharmony_ci| -------- | ------------- | 410e41f4b71Sopenharmony_ci| 201 | Permission verification failed. The application does not have the permission required to call the API. | 411e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 412e41f4b71Sopenharmony_ci| 17500001 | Internal error. | 413e41f4b71Sopenharmony_ci| 17500002 | The certificate does not exist. | 414e41f4b71Sopenharmony_ci 415e41f4b71Sopenharmony_ci**示例**: 416e41f4b71Sopenharmony_ci```ts 417e41f4b71Sopenharmony_ciimport { certificateManager } from '@kit.DeviceCertificateKit'; 418e41f4b71Sopenharmony_ci 419e41f4b71Sopenharmony_cilet uri: string = 'test'; /* 业务安装凭据,返回唯一标识符,此处省略 */ 420e41f4b71Sopenharmony_citry { 421e41f4b71Sopenharmony_ci certificateManager.uninstallPrivateCertificate(uri, (err, result) => { 422e41f4b71Sopenharmony_ci if (err != null) { 423e41f4b71Sopenharmony_ci console.error(`Failed to uninstall private certificate. Code: ${err.code}, message: ${err.message}`); 424e41f4b71Sopenharmony_ci } else { 425e41f4b71Sopenharmony_ci console.info('Succeeded in uninstalling private certificate.'); 426e41f4b71Sopenharmony_ci } 427e41f4b71Sopenharmony_ci }); 428e41f4b71Sopenharmony_ci} catch (error) { 429e41f4b71Sopenharmony_ci console.error(`Failed to uninstall private certificate. Code: ${error.code}, message: ${error.message}`); 430e41f4b71Sopenharmony_ci} 431e41f4b71Sopenharmony_ci``` 432e41f4b71Sopenharmony_ci 433e41f4b71Sopenharmony_ci## certificateManager.uninstallPrivateCertificate 434e41f4b71Sopenharmony_ci 435e41f4b71Sopenharmony_ciuninstallPrivateCertificate(keyUri: string): Promise\<void> 436e41f4b71Sopenharmony_ci 437e41f4b71Sopenharmony_ci表示卸载指定的私有凭据,使用Promise方式异步返回结果。 438e41f4b71Sopenharmony_ci 439e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.ACCESS_CERT_MANAGER 440e41f4b71Sopenharmony_ci 441e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 442e41f4b71Sopenharmony_ci 443e41f4b71Sopenharmony_ci**参数**: 444e41f4b71Sopenharmony_ci 445e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 446e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------- | ---- | -------------------------- | 447e41f4b71Sopenharmony_ci| keyUri | string | 是 | 表示待卸载凭据的唯一标识符。 | 448e41f4b71Sopenharmony_ci 449e41f4b71Sopenharmony_ci**返回值**: 450e41f4b71Sopenharmony_ci 451e41f4b71Sopenharmony_ci| 类型 | 说明 | 452e41f4b71Sopenharmony_ci| ------------------------------------------- | -------------------- | 453e41f4b71Sopenharmony_ci| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 454e41f4b71Sopenharmony_ci 455e41f4b71Sopenharmony_ci**错误码:** 456e41f4b71Sopenharmony_ci 457e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[证书管理错误码](errorcode-certManager.md)。 458e41f4b71Sopenharmony_ci 459e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 460e41f4b71Sopenharmony_ci| -------- | ------------- | 461e41f4b71Sopenharmony_ci| 201 | Permission verification failed. The application does not have the permission required to call the API. | 462e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 463e41f4b71Sopenharmony_ci| 17500001 | Internal error. | 464e41f4b71Sopenharmony_ci| 17500002 | The certificate does not exist. | 465e41f4b71Sopenharmony_ci 466e41f4b71Sopenharmony_ci**示例**: 467e41f4b71Sopenharmony_ci```ts 468e41f4b71Sopenharmony_ciimport { certificateManager } from '@kit.DeviceCertificateKit'; 469e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 470e41f4b71Sopenharmony_ci 471e41f4b71Sopenharmony_cilet uri: string = 'test'; /* 业务安装凭据,返回唯一标识符,此处省略 */ 472e41f4b71Sopenharmony_citry { 473e41f4b71Sopenharmony_ci certificateManager.uninstallPrivateCertificate(uri).then((cmResult) => { 474e41f4b71Sopenharmony_ci console.info('Succeeded in uninstalling private certificate.'); 475e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 476e41f4b71Sopenharmony_ci console.error(`Failed to uninstall private certificate. Code: ${err.code}, message: ${err.message}`); 477e41f4b71Sopenharmony_ci }) 478e41f4b71Sopenharmony_ci} catch (error) { 479e41f4b71Sopenharmony_ci console.error(`Failed to uninstall private certificate. Code: ${error.code}, message: ${error.message}`); 480e41f4b71Sopenharmony_ci} 481e41f4b71Sopenharmony_ci``` 482e41f4b71Sopenharmony_ci 483e41f4b71Sopenharmony_ci## certificateManager.init 484e41f4b71Sopenharmony_ci 485e41f4b71Sopenharmony_ciinit(authUri: string, spec: CMSignatureSpec, callback: AsyncCallback\<CMHandle>): void 486e41f4b71Sopenharmony_ci 487e41f4b71Sopenharmony_ci表示使用凭据进行签名、验签的初始化操作,使用Callback回调异步返回结果。 488e41f4b71Sopenharmony_ci 489e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.ACCESS_CERT_MANAGER 490e41f4b71Sopenharmony_ci 491e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 492e41f4b71Sopenharmony_ci 493e41f4b71Sopenharmony_ci**参数**: 494e41f4b71Sopenharmony_ci 495e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 496e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------- | ---- | -------------------------- | 497e41f4b71Sopenharmony_ci| authUri | string | 是 | 表示使用凭据的唯一标识符。 | 498e41f4b71Sopenharmony_ci| spec | [CMSignatureSpec](#cmsignaturespec) | 是 | 表示签名、验签的属性。 | 499e41f4b71Sopenharmony_ci| callback | AsyncCallback\<[CMHandle](#cmhandle)> | 是 | 回调函数。当签名、验签的初始化操作成功时,err为null,data为获取到的CMHandle;否则为错误对象。 | 500e41f4b71Sopenharmony_ci 501e41f4b71Sopenharmony_ci**错误码:** 502e41f4b71Sopenharmony_ci 503e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[证书管理错误码](errorcode-certManager.md)。 504e41f4b71Sopenharmony_ci 505e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 506e41f4b71Sopenharmony_ci| -------- | ------------- | 507e41f4b71Sopenharmony_ci| 201 | Permission verification failed. The application does not have the permission required to call the API. | 508e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 509e41f4b71Sopenharmony_ci| 17500001 | Internal error. | 510e41f4b71Sopenharmony_ci| 17500002 | The certificate does not exist. | 511e41f4b71Sopenharmony_ci| 17500005<sup>12+</sup> | The application is not authorized by the user. | 512e41f4b71Sopenharmony_ci 513e41f4b71Sopenharmony_ci**示例**: 514e41f4b71Sopenharmony_ci```ts 515e41f4b71Sopenharmony_ciimport { certificateManager } from '@kit.DeviceCertificateKit'; 516e41f4b71Sopenharmony_ci 517e41f4b71Sopenharmony_cilet uri: string = 'test'; /* 业务安装凭据,返回唯一标识符,此处省略 */ 518e41f4b71Sopenharmony_ciconst req: certificateManager.CMSignatureSpec = { 519e41f4b71Sopenharmony_ci purpose: certificateManager.CmKeyPurpose.CM_KEY_PURPOSE_SIGN, 520e41f4b71Sopenharmony_ci padding: certificateManager.CmKeyPadding.CM_PADDING_PSS, 521e41f4b71Sopenharmony_ci digest: certificateManager.CmKeyDigest.CM_DIGEST_SHA256 522e41f4b71Sopenharmony_ci} 523e41f4b71Sopenharmony_citry { 524e41f4b71Sopenharmony_ci certificateManager.init(uri, req, (err, cmHandle) => { 525e41f4b71Sopenharmony_ci if (err != null) { 526e41f4b71Sopenharmony_ci console.error(`Failed to init. Code: ${err.code}, message: ${err.message}`); 527e41f4b71Sopenharmony_ci } else { 528e41f4b71Sopenharmony_ci console.info('Succeeded in initiating.'); 529e41f4b71Sopenharmony_ci } 530e41f4b71Sopenharmony_ci }) 531e41f4b71Sopenharmony_ci} catch (error) { 532e41f4b71Sopenharmony_ci console.error(`Failed to init. Code: ${error.code}, message: ${error.message}`); 533e41f4b71Sopenharmony_ci} 534e41f4b71Sopenharmony_ci``` 535e41f4b71Sopenharmony_ci 536e41f4b71Sopenharmony_ci## certificateManager.init 537e41f4b71Sopenharmony_ci 538e41f4b71Sopenharmony_ciinit(authUri: string, spec: CMSignatureSpec): Promise\<CMHandle> 539e41f4b71Sopenharmony_ci 540e41f4b71Sopenharmony_ci表示使用凭据进行签名、验签的初始化操作,使用Promise方式异步返回结果。 541e41f4b71Sopenharmony_ci 542e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.ACCESS_CERT_MANAGER 543e41f4b71Sopenharmony_ci 544e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 545e41f4b71Sopenharmony_ci 546e41f4b71Sopenharmony_ci**参数**: 547e41f4b71Sopenharmony_ci 548e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 549e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------- | ---- | -------------------------- | 550e41f4b71Sopenharmony_ci| authUri | string | 是 | 表示使用凭据的唯一标识符。 | 551e41f4b71Sopenharmony_ci| spec | [CMSignatureSpec](#cmsignaturespec) | 是 | 表示签名、验签的属性。 | 552e41f4b71Sopenharmony_ci 553e41f4b71Sopenharmony_ci**返回值**: 554e41f4b71Sopenharmony_ci 555e41f4b71Sopenharmony_ci| 类型 | 说明 | 556e41f4b71Sopenharmony_ci| ------------------------------------------- | -------------------- | 557e41f4b71Sopenharmony_ci| Promise\<[CMHandle](#cmhandle)> | Promise对象。表示签名、验签的初始化操作结果,返回CMHandle对象。 | 558e41f4b71Sopenharmony_ci 559e41f4b71Sopenharmony_ci**错误码:** 560e41f4b71Sopenharmony_ci 561e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[证书管理错误码](errorcode-certManager.md)。 562e41f4b71Sopenharmony_ci 563e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 564e41f4b71Sopenharmony_ci| -------- | ------------- | 565e41f4b71Sopenharmony_ci| 201 | Permission verification failed. The application does not have the permission required to call the API. | 566e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 567e41f4b71Sopenharmony_ci| 17500001 | Internal error. | 568e41f4b71Sopenharmony_ci| 17500002 | The certificate does not exist. | 569e41f4b71Sopenharmony_ci| 17500005<sup>12+</sup> | The application is not authorized by the user. | 570e41f4b71Sopenharmony_ci 571e41f4b71Sopenharmony_ci**示例**: 572e41f4b71Sopenharmony_ci```ts 573e41f4b71Sopenharmony_ciimport { certificateManager } from '@kit.DeviceCertificateKit'; 574e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 575e41f4b71Sopenharmony_ci 576e41f4b71Sopenharmony_cilet uri: string = 'test'; /* 业务安装凭据,返回唯一标识符,此处省略 */ 577e41f4b71Sopenharmony_ciconst req: certificateManager.CMSignatureSpec = { 578e41f4b71Sopenharmony_ci purpose: certificateManager.CmKeyPurpose.CM_KEY_PURPOSE_VERIFY, 579e41f4b71Sopenharmony_ci padding: certificateManager.CmKeyPadding.CM_PADDING_PSS, 580e41f4b71Sopenharmony_ci digest: certificateManager.CmKeyDigest.CM_DIGEST_MD5 581e41f4b71Sopenharmony_ci} 582e41f4b71Sopenharmony_citry { 583e41f4b71Sopenharmony_ci certificateManager.init(uri, req).then((handle) => { 584e41f4b71Sopenharmony_ci console.info('Succeeded in initiating.'); 585e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 586e41f4b71Sopenharmony_ci console.error(`Failed to init. Code: ${err.code}, message: ${err.message}`); 587e41f4b71Sopenharmony_ci }) 588e41f4b71Sopenharmony_ci} catch (error) { 589e41f4b71Sopenharmony_ci console.error(`Failed to init. Code: ${error.code}, message: ${error.message}`); 590e41f4b71Sopenharmony_ci} 591e41f4b71Sopenharmony_ci``` 592e41f4b71Sopenharmony_ci 593e41f4b71Sopenharmony_ci## certificateManager.update 594e41f4b71Sopenharmony_ci 595e41f4b71Sopenharmony_ciupdate(handle: Uint8Array, data: Uint8Array, callback: AsyncCallback\<void>): void 596e41f4b71Sopenharmony_ci 597e41f4b71Sopenharmony_ci表示签名、验签的数据更新操作,使用Callback回调异步返回结果。 598e41f4b71Sopenharmony_ci 599e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.ACCESS_CERT_MANAGER 600e41f4b71Sopenharmony_ci 601e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 602e41f4b71Sopenharmony_ci 603e41f4b71Sopenharmony_ci**参数**: 604e41f4b71Sopenharmony_ci 605e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 606e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------- | ---- | -------------------------- | 607e41f4b71Sopenharmony_ci| handle | Uint8Array | 是 | 表示初始化操作返回的句柄。 | 608e41f4b71Sopenharmony_ci| data | Uint8Array | 是 | 表示待签名、验签的数据。 | 609e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 回调函数。当签名、验签的数据更新操作成功时,err为null,否则为错误对象。 | 610e41f4b71Sopenharmony_ci 611e41f4b71Sopenharmony_ci**错误码:** 612e41f4b71Sopenharmony_ci 613e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[证书管理错误码](errorcode-certManager.md)。 614e41f4b71Sopenharmony_ci 615e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 616e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | 617e41f4b71Sopenharmony_ci| 201 | Permission verification failed. The application does not have the permission required to call the API. | 618e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 619e41f4b71Sopenharmony_ci| 17500001 | Internal error. | 620e41f4b71Sopenharmony_ci 621e41f4b71Sopenharmony_ci**示例**: 622e41f4b71Sopenharmony_ci```ts 623e41f4b71Sopenharmony_ciimport { certificateManager } from '@kit.DeviceCertificateKit'; 624e41f4b71Sopenharmony_ci 625e41f4b71Sopenharmony_ci/* cmHandle为业务调用init接口的返回值,此处仅为示例 */ 626e41f4b71Sopenharmony_cilet cmHandle: Uint8Array = new Uint8Array([ 627e41f4b71Sopenharmony_ci 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 628e41f4b71Sopenharmony_ci]); 629e41f4b71Sopenharmony_cilet srcData: Uint8Array = new Uint8Array([ 630e41f4b71Sopenharmony_ci 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 631e41f4b71Sopenharmony_ci]); 632e41f4b71Sopenharmony_citry { 633e41f4b71Sopenharmony_ci certificateManager.update(cmHandle, srcData, (err, result) => { 634e41f4b71Sopenharmony_ci if (err != null) { 635e41f4b71Sopenharmony_ci console.error(`Failed to update. Code: ${err.code}, message: ${err.message}`); 636e41f4b71Sopenharmony_ci } else { 637e41f4b71Sopenharmony_ci console.info('Succeeded in updating.'); 638e41f4b71Sopenharmony_ci } 639e41f4b71Sopenharmony_ci }); 640e41f4b71Sopenharmony_ci} catch (error) { 641e41f4b71Sopenharmony_ci console.error(`Failed to update. Code: ${error.code}, message: ${error.message}`); 642e41f4b71Sopenharmony_ci} 643e41f4b71Sopenharmony_ci``` 644e41f4b71Sopenharmony_ci 645e41f4b71Sopenharmony_ci## certificateManager.update 646e41f4b71Sopenharmony_ci 647e41f4b71Sopenharmony_ciupdate(handle: Uint8Array, data: Uint8Array): Promise\<void> 648e41f4b71Sopenharmony_ci 649e41f4b71Sopenharmony_ci表示签名、验签的数据更新操作,使用Promise方式异步返回结果。 650e41f4b71Sopenharmony_ci 651e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.ACCESS_CERT_MANAGER 652e41f4b71Sopenharmony_ci 653e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 654e41f4b71Sopenharmony_ci 655e41f4b71Sopenharmony_ci**参数**: 656e41f4b71Sopenharmony_ci 657e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 658e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------- | ---- | -------------------------- | 659e41f4b71Sopenharmony_ci| handle | Uint8Array | 是 | 表示初始化操作返回的句柄。 | 660e41f4b71Sopenharmony_ci| data | Uint8Array | 是 | 表示待签名、验签的数据。 | 661e41f4b71Sopenharmony_ci 662e41f4b71Sopenharmony_ci**返回值**: 663e41f4b71Sopenharmony_ci 664e41f4b71Sopenharmony_ci| 类型 | 说明 | 665e41f4b71Sopenharmony_ci| ------------------------------------------- | -------------------- | 666e41f4b71Sopenharmony_ci| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 667e41f4b71Sopenharmony_ci 668e41f4b71Sopenharmony_ci**错误码:** 669e41f4b71Sopenharmony_ci 670e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[证书管理错误码](errorcode-certManager.md)。 671e41f4b71Sopenharmony_ci 672e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 673e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | 674e41f4b71Sopenharmony_ci| 201 | Permission verification failed. The application does not have the permission required to call the API. | 675e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 676e41f4b71Sopenharmony_ci| 17500001 | Internal error. | 677e41f4b71Sopenharmony_ci 678e41f4b71Sopenharmony_ci**示例**: 679e41f4b71Sopenharmony_ci```ts 680e41f4b71Sopenharmony_ciimport { certificateManager } from '@kit.DeviceCertificateKit'; 681e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 682e41f4b71Sopenharmony_ci 683e41f4b71Sopenharmony_ci/* cmHandle为业务调用init接口的返回值,此处仅为示例 */ 684e41f4b71Sopenharmony_cilet cmHandle: Uint8Array = new Uint8Array([ 685e41f4b71Sopenharmony_ci 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 686e41f4b71Sopenharmony_ci]); 687e41f4b71Sopenharmony_cilet srcData: Uint8Array = new Uint8Array([ 688e41f4b71Sopenharmony_ci 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 689e41f4b71Sopenharmony_ci]); 690e41f4b71Sopenharmony_citry { 691e41f4b71Sopenharmony_ci certificateManager.update(cmHandle, srcData).then((result) => { 692e41f4b71Sopenharmony_ci console.info('Succeeded in updating.'); 693e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 694e41f4b71Sopenharmony_ci console.error(`Failed to update. Code: ${err.code}, message: ${err.message}`); 695e41f4b71Sopenharmony_ci }) 696e41f4b71Sopenharmony_ci} catch (error) { 697e41f4b71Sopenharmony_ci console.error(`Failed to update. Code: ${error.code}, message: ${error.message}`); 698e41f4b71Sopenharmony_ci} 699e41f4b71Sopenharmony_ci``` 700e41f4b71Sopenharmony_ci 701e41f4b71Sopenharmony_ci## certificateManager.finish 702e41f4b71Sopenharmony_ci 703e41f4b71Sopenharmony_cifinish(handle: Uint8Array, callback: AsyncCallback\<CMResult>): void 704e41f4b71Sopenharmony_ci 705e41f4b71Sopenharmony_ci表示完成签名的操作,Callback回调异步返回结果。 706e41f4b71Sopenharmony_ci 707e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.ACCESS_CERT_MANAGER 708e41f4b71Sopenharmony_ci 709e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 710e41f4b71Sopenharmony_ci 711e41f4b71Sopenharmony_ci**参数**: 712e41f4b71Sopenharmony_ci 713e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 714e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------- | ---- | -------------------------- | 715e41f4b71Sopenharmony_ci| handle | Uint8Array | 是 | 表示初始化操作返回的句柄。 | 716e41f4b71Sopenharmony_ci| callback | AsyncCallback\<[CMResult](#cmresult)> | 是 | 回调函数。当签名成功时,err为null,data为[CMResult](#cmresult)对象中的outData属性,表示签名数据;否则为错误对象。 | 717e41f4b71Sopenharmony_ci 718e41f4b71Sopenharmony_ci**错误码:** 719e41f4b71Sopenharmony_ci 720e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[证书管理错误码](errorcode-certManager.md)。 721e41f4b71Sopenharmony_ci 722e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 723e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | 724e41f4b71Sopenharmony_ci| 201 | Permission verification failed. The application does not have the permission required to call the API. | 725e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 726e41f4b71Sopenharmony_ci| 17500001 | Internal error. | 727e41f4b71Sopenharmony_ci 728e41f4b71Sopenharmony_ci**示例**: 729e41f4b71Sopenharmony_ci```ts 730e41f4b71Sopenharmony_ciimport { certificateManager } from '@kit.DeviceCertificateKit'; 731e41f4b71Sopenharmony_ci 732e41f4b71Sopenharmony_ci/* cmHandle为业务调用init接口的返回值,此处仅为示例 */ 733e41f4b71Sopenharmony_cilet cmHandle: Uint8Array = new Uint8Array([ 734e41f4b71Sopenharmony_ci 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 735e41f4b71Sopenharmony_ci]); 736e41f4b71Sopenharmony_citry { 737e41f4b71Sopenharmony_ci certificateManager.finish(cmHandle, (err, cmResult) => { 738e41f4b71Sopenharmony_ci if (err != null) { 739e41f4b71Sopenharmony_ci console.error(`Failed to finish. Code: ${err.code}, message: ${err.message}`); 740e41f4b71Sopenharmony_ci } else { 741e41f4b71Sopenharmony_ci if (cmResult?.outData != undefined) { 742e41f4b71Sopenharmony_ci let signRes: Uint8Array = cmResult.outData; 743e41f4b71Sopenharmony_ci console.info('Succeeded in finishing.'); 744e41f4b71Sopenharmony_ci } else { 745e41f4b71Sopenharmony_ci console.info('The result of finishing is undefined.'); 746e41f4b71Sopenharmony_ci } 747e41f4b71Sopenharmony_ci } 748e41f4b71Sopenharmony_ci }); 749e41f4b71Sopenharmony_ci} catch(error) { 750e41f4b71Sopenharmony_ci console.error(`Failed to finish. Code: ${error.code}, message: ${error.message}`); 751e41f4b71Sopenharmony_ci} 752e41f4b71Sopenharmony_ci``` 753e41f4b71Sopenharmony_ci 754e41f4b71Sopenharmony_ci## certificateManager.finish 755e41f4b71Sopenharmony_ci 756e41f4b71Sopenharmony_cifinish(handle: Uint8Array, signature: Uint8Array, callback: AsyncCallback\<CMResult>): void 757e41f4b71Sopenharmony_ci 758e41f4b71Sopenharmony_ci表示完成验签的操作,使用Callback回调异步返回结果。 759e41f4b71Sopenharmony_ci 760e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.ACCESS_CERT_MANAGER 761e41f4b71Sopenharmony_ci 762e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 763e41f4b71Sopenharmony_ci 764e41f4b71Sopenharmony_ci**参数**: 765e41f4b71Sopenharmony_ci 766e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 767e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------- | ---- | -------------------------- | 768e41f4b71Sopenharmony_ci| handle | Uint8Array | 是 | 表示初始化操作返回的句柄。 | 769e41f4b71Sopenharmony_ci| signature | Uint8Array | 是 | 表示签名数据。 | 770e41f4b71Sopenharmony_ci| callback | AsyncCallback\<[CMResult](#cmresult)> | 是 | 回调函数。当验签成功时,err为null;否则为错误对象。 | 771e41f4b71Sopenharmony_ci 772e41f4b71Sopenharmony_ci**错误码:** 773e41f4b71Sopenharmony_ci 774e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[证书管理错误码](errorcode-certManager.md)。 775e41f4b71Sopenharmony_ci 776e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 777e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | 778e41f4b71Sopenharmony_ci| 201 | Permission verification failed. The application does not have the permission required to call the API. | 779e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 780e41f4b71Sopenharmony_ci| 17500001 | Internal error. | 781e41f4b71Sopenharmony_ci 782e41f4b71Sopenharmony_ci**示例**: 783e41f4b71Sopenharmony_ci```ts 784e41f4b71Sopenharmony_ciimport { certificateManager } from '@kit.DeviceCertificateKit'; 785e41f4b71Sopenharmony_ci 786e41f4b71Sopenharmony_ci/* cmHandle为业务调用init接口的返回值,此处仅为示例 */ 787e41f4b71Sopenharmony_cilet cmHandle: Uint8Array = new Uint8Array([ 788e41f4b71Sopenharmony_ci 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 789e41f4b71Sopenharmony_ci]); 790e41f4b71Sopenharmony_cilet signRes: Uint8Array = new Uint8Array([ 791e41f4b71Sopenharmony_ci 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 792e41f4b71Sopenharmony_ci]); 793e41f4b71Sopenharmony_citry { 794e41f4b71Sopenharmony_ci certificateManager.finish(cmHandle, signRes, (err, cmResult) => { 795e41f4b71Sopenharmony_ci if (err != null) { 796e41f4b71Sopenharmony_ci console.error(`Failed to finish. Code: ${err.code}, message: ${err.message}`); 797e41f4b71Sopenharmony_ci } else { 798e41f4b71Sopenharmony_ci console.info('Succeeded in finishing.'); 799e41f4b71Sopenharmony_ci } 800e41f4b71Sopenharmony_ci }); 801e41f4b71Sopenharmony_ci} catch(error) { 802e41f4b71Sopenharmony_ci console.error(`Failed to finish. Code: ${error.code}, message: ${error.message}`); 803e41f4b71Sopenharmony_ci} 804e41f4b71Sopenharmony_ci``` 805e41f4b71Sopenharmony_ci 806e41f4b71Sopenharmony_ci## certificateManager.finish 807e41f4b71Sopenharmony_ci 808e41f4b71Sopenharmony_cifinish(handle: Uint8Array, signature?: Uint8Array): Promise\<CMResult> 809e41f4b71Sopenharmony_ci 810e41f4b71Sopenharmony_ci表示完成签名、验签的操作,使用Promise方式异步返回结果。 811e41f4b71Sopenharmony_ci 812e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.ACCESS_CERT_MANAGER 813e41f4b71Sopenharmony_ci 814e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 815e41f4b71Sopenharmony_ci 816e41f4b71Sopenharmony_ci**参数**: 817e41f4b71Sopenharmony_ci 818e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 819e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------- | ---- | -------------------------- | 820e41f4b71Sopenharmony_ci| handle | Uint8Array | 是 | 表示初始化操作返回的句柄。 | 821e41f4b71Sopenharmony_ci| signature | Uint8Array | 否 | 表示签名数据。 | 822e41f4b71Sopenharmony_ci 823e41f4b71Sopenharmony_ci**返回值**: 824e41f4b71Sopenharmony_ci 825e41f4b71Sopenharmony_ci| 类型 | 说明 | 826e41f4b71Sopenharmony_ci| ------------------------------- | ------------------------------------------------------------ | 827e41f4b71Sopenharmony_ci| Promise\<[CMResult](#cmresult)> | Promise对象。执行签名操作时,表示签名的结果,返回值为[CMResult](#cmresult)对象中的outData属性;执行验签操作时,无返回结果的Promise对象。 | 828e41f4b71Sopenharmony_ci 829e41f4b71Sopenharmony_ci**错误码:** 830e41f4b71Sopenharmony_ci 831e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[证书管理错误码](errorcode-certManager.md)。 832e41f4b71Sopenharmony_ci 833e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 834e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | 835e41f4b71Sopenharmony_ci| 201 | Permission verification failed. The application does not have the permission required to call the API. | 836e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 837e41f4b71Sopenharmony_ci| 17500001 | Internal error. | 838e41f4b71Sopenharmony_ci 839e41f4b71Sopenharmony_ci**示例**: 840e41f4b71Sopenharmony_ci```ts 841e41f4b71Sopenharmony_ciimport { certificateManager } from '@kit.DeviceCertificateKit'; 842e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 843e41f4b71Sopenharmony_ci 844e41f4b71Sopenharmony_ci/* cmHandle为业务调用init接口的返回值,此处仅为示例 */ 845e41f4b71Sopenharmony_cilet cmHandle: Uint8Array = new Uint8Array([ 846e41f4b71Sopenharmony_ci 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 847e41f4b71Sopenharmony_ci]); 848e41f4b71Sopenharmony_citry { 849e41f4b71Sopenharmony_ci /* 签名的finish操作 */ 850e41f4b71Sopenharmony_ci certificateManager.finish(cmHandle).then((cmResult) => { 851e41f4b71Sopenharmony_ci if (cmResult?.outData != undefined) { 852e41f4b71Sopenharmony_ci let signRes1: Uint8Array = cmResult.outData; 853e41f4b71Sopenharmony_ci console.info('Succeeded in finishing signature.'); 854e41f4b71Sopenharmony_ci } else { 855e41f4b71Sopenharmony_ci console.info('The result of signature is undefined.'); 856e41f4b71Sopenharmony_ci } 857e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 858e41f4b71Sopenharmony_ci console.error(`Failed to finish signature. Code: ${err.code}, message: ${err.message}`); 859e41f4b71Sopenharmony_ci }) 860e41f4b71Sopenharmony_ci 861e41f4b71Sopenharmony_ci /* 签名的结果 */ 862e41f4b71Sopenharmony_ci let signRes: Uint8Array = new Uint8Array([ 863e41f4b71Sopenharmony_ci 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 864e41f4b71Sopenharmony_ci ]); 865e41f4b71Sopenharmony_ci /* 验签的finish操作 */ 866e41f4b71Sopenharmony_ci certificateManager.finish(cmHandle, signRes).then((cmResult) => { 867e41f4b71Sopenharmony_ci console.info('Succeeded in finishing verification.'); 868e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 869e41f4b71Sopenharmony_ci console.error(`Failed to finish verification. Code: ${err.code}, message: ${err.message}`); 870e41f4b71Sopenharmony_ci }) 871e41f4b71Sopenharmony_ci} catch(error) { 872e41f4b71Sopenharmony_ci console.error(`Failed to finish. Code: ${error.code}, message: ${error.message}`); 873e41f4b71Sopenharmony_ci} 874e41f4b71Sopenharmony_ci``` 875e41f4b71Sopenharmony_ci 876e41f4b71Sopenharmony_ci## certificateManager.abort 877e41f4b71Sopenharmony_ci 878e41f4b71Sopenharmony_ciabort(handle: Uint8Array, callback: AsyncCallback\<void>): void 879e41f4b71Sopenharmony_ci 880e41f4b71Sopenharmony_ci表示中止签名、验签的操作,使用Callback回调异步返回结果。 881e41f4b71Sopenharmony_ci 882e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.ACCESS_CERT_MANAGER 883e41f4b71Sopenharmony_ci 884e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 885e41f4b71Sopenharmony_ci 886e41f4b71Sopenharmony_ci**参数**: 887e41f4b71Sopenharmony_ci 888e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 889e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------- | ---- | -------------------------- | 890e41f4b71Sopenharmony_ci| handle | Uint8Array | 是 | 表示初始化操作返回的句柄。 | 891e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 回调函数。当中止签名、验签成功时,err为null,否则为错误对象。 | 892e41f4b71Sopenharmony_ci 893e41f4b71Sopenharmony_ci**错误码:** 894e41f4b71Sopenharmony_ci 895e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[证书管理错误码](errorcode-certManager.md)。 896e41f4b71Sopenharmony_ci 897e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 898e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | 899e41f4b71Sopenharmony_ci| 201 | Permission verification failed. The application does not have the permission required to call the API. | 900e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 901e41f4b71Sopenharmony_ci| 17500001 | Internal error. | 902e41f4b71Sopenharmony_ci 903e41f4b71Sopenharmony_ci**示例**: 904e41f4b71Sopenharmony_ci```ts 905e41f4b71Sopenharmony_ciimport { certificateManager } from '@kit.DeviceCertificateKit'; 906e41f4b71Sopenharmony_ci 907e41f4b71Sopenharmony_ci/* cmHandle为业务调用init接口的返回值,此处仅为示例 */ 908e41f4b71Sopenharmony_cilet cmHandle: Uint8Array = new Uint8Array([ 909e41f4b71Sopenharmony_ci 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 910e41f4b71Sopenharmony_ci]); 911e41f4b71Sopenharmony_citry { 912e41f4b71Sopenharmony_ci certificateManager.abort(cmHandle, (err, cmResult) => { 913e41f4b71Sopenharmony_ci if (err != null) { 914e41f4b71Sopenharmony_ci console.error(`Failed to abort. Code: ${err.code}, message: ${err.message}`); 915e41f4b71Sopenharmony_ci } else { 916e41f4b71Sopenharmony_ci console.info('Succeeded in aborting.'); 917e41f4b71Sopenharmony_ci } 918e41f4b71Sopenharmony_ci }); 919e41f4b71Sopenharmony_ci} catch(error) { 920e41f4b71Sopenharmony_ci console.error(`Failed to abort. Code: ${error.code}, message: ${error.message}`); 921e41f4b71Sopenharmony_ci} 922e41f4b71Sopenharmony_ci``` 923e41f4b71Sopenharmony_ci 924e41f4b71Sopenharmony_ci## certificateManager.abort 925e41f4b71Sopenharmony_ci 926e41f4b71Sopenharmony_ciabort(handle: Uint8Array): Promise\<void> 927e41f4b71Sopenharmony_ci 928e41f4b71Sopenharmony_ci表示中止签名、验签的操作,使用Promise方式异步返回结果。 929e41f4b71Sopenharmony_ci 930e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.ACCESS_CERT_MANAGER 931e41f4b71Sopenharmony_ci 932e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 933e41f4b71Sopenharmony_ci 934e41f4b71Sopenharmony_ci**参数**: 935e41f4b71Sopenharmony_ci 936e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 937e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------- | ---- | -------------------------- | 938e41f4b71Sopenharmony_ci| handle | Uint8Array | 是 | 表示初始化操作返回的句柄。 | 939e41f4b71Sopenharmony_ci 940e41f4b71Sopenharmony_ci**返回值**: 941e41f4b71Sopenharmony_ci 942e41f4b71Sopenharmony_ci| 类型 | 说明 | 943e41f4b71Sopenharmony_ci| ------------------------------------------- | -------------------- | 944e41f4b71Sopenharmony_ci| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 945e41f4b71Sopenharmony_ci 946e41f4b71Sopenharmony_ci**错误码:** 947e41f4b71Sopenharmony_ci 948e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[证书管理错误码](errorcode-certManager.md)。 949e41f4b71Sopenharmony_ci 950e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 951e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | 952e41f4b71Sopenharmony_ci| 201 | Permission verification failed. The application does not have the permission required to call the API. | 953e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 954e41f4b71Sopenharmony_ci| 17500001 | Internal error. | 955e41f4b71Sopenharmony_ci 956e41f4b71Sopenharmony_ci**示例**: 957e41f4b71Sopenharmony_ci```ts 958e41f4b71Sopenharmony_ciimport { certificateManager } from '@kit.DeviceCertificateKit'; 959e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 960e41f4b71Sopenharmony_ci 961e41f4b71Sopenharmony_ci/* cmHandle为业务调用init接口的返回值,此处仅为示例 */ 962e41f4b71Sopenharmony_cilet cmHandle: Uint8Array = new Uint8Array([ 963e41f4b71Sopenharmony_ci 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 964e41f4b71Sopenharmony_ci]); 965e41f4b71Sopenharmony_citry { 966e41f4b71Sopenharmony_ci certificateManager.abort(cmHandle).then((result) => { 967e41f4b71Sopenharmony_ci console.info('Succeeded in aborting.'); 968e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 969e41f4b71Sopenharmony_ci console.error(`Failed to abort. Code: ${err.code}, message: ${err.message}`); 970e41f4b71Sopenharmony_ci }) 971e41f4b71Sopenharmony_ci} catch (error) { 972e41f4b71Sopenharmony_ci console.error(`Failed to abort. Code: ${error.code}, message: ${error.message}`); 973e41f4b71Sopenharmony_ci} 974e41f4b71Sopenharmony_ci``` 975e41f4b71Sopenharmony_ci 976e41f4b71Sopenharmony_ci## certificateManager.getPublicCertificate<sup>12+</sup> 977e41f4b71Sopenharmony_ci 978e41f4b71Sopenharmony_cigetPublicCertificate(keyUri: string): Promise\<CMResult> 979e41f4b71Sopenharmony_ci 980e41f4b71Sopenharmony_ci表示获取用户公共凭据的详细信息,使用Promise方式异步返回结果。 981e41f4b71Sopenharmony_ci 982e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.ACCESS_CERT_MANAGER 983e41f4b71Sopenharmony_ci 984e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 985e41f4b71Sopenharmony_ci 986e41f4b71Sopenharmony_ci**参数**: 987e41f4b71Sopenharmony_ci 988e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 989e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------- | ---- | -------------------------- | 990e41f4b71Sopenharmony_ci| keyUri | string | 是 | 表示用户公共凭据的唯一标识符。 | 991e41f4b71Sopenharmony_ci 992e41f4b71Sopenharmony_ci**返回值**: 993e41f4b71Sopenharmony_ci 994e41f4b71Sopenharmony_ci| 类型 | 说明 | 995e41f4b71Sopenharmony_ci| ------------------------------- | ------------------------------------------------------------ | 996e41f4b71Sopenharmony_ci| Promise\<[CMResult](#cmresult)> | Promise对象。表示获取用户公共凭据详细信息的结果,返回值为[CMResult](#cmresult)对象中的credential属性。 | 997e41f4b71Sopenharmony_ci 998e41f4b71Sopenharmony_ci**错误码:** 999e41f4b71Sopenharmony_ci 1000e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[证书管理错误码](errorcode-certManager.md)。 1001e41f4b71Sopenharmony_ci 1002e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1003e41f4b71Sopenharmony_ci| -------- | ------------- | 1004e41f4b71Sopenharmony_ci| 201 | Permission verification failed. The application does not have the permission required to call the API. | 1005e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 1006e41f4b71Sopenharmony_ci| 17500001 | Internal error. | 1007e41f4b71Sopenharmony_ci| 17500002 | The certificate does not exist. | 1008e41f4b71Sopenharmony_ci| 17500005 | The application is not authorized by the user. | 1009e41f4b71Sopenharmony_ci 1010e41f4b71Sopenharmony_ci**示例**: 1011e41f4b71Sopenharmony_ci```ts 1012e41f4b71Sopenharmony_ciimport { certificateManager } from '@kit.DeviceCertificateKit'; 1013e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1014e41f4b71Sopenharmony_ci 1015e41f4b71Sopenharmony_cilet uri: string = 'test'; /* 用户安装公共凭据返回的唯一标识符,此处省略 */ 1016e41f4b71Sopenharmony_citry { 1017e41f4b71Sopenharmony_ci certificateManager.getPublicCertificate(uri).then((cmResult) => { 1018e41f4b71Sopenharmony_ci if (cmResult?.credential == undefined) { 1019e41f4b71Sopenharmony_ci console.info('The result of getting public certificate is undefined.'); 1020e41f4b71Sopenharmony_ci } else { 1021e41f4b71Sopenharmony_ci let cred = cmResult.credential; 1022e41f4b71Sopenharmony_ci console.info('Succeeded in getting Public certificate.'); 1023e41f4b71Sopenharmony_ci } 1024e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 1025e41f4b71Sopenharmony_ci console.error(`Failed to get Public certificate. Code: ${err.code}, message: ${err.message}`); 1026e41f4b71Sopenharmony_ci }) 1027e41f4b71Sopenharmony_ci} catch (error) { 1028e41f4b71Sopenharmony_ci console.error(`Failed to get Public certificate. Code: ${error.code}, message: ${error.message}`); 1029e41f4b71Sopenharmony_ci} 1030e41f4b71Sopenharmony_ci``` 1031e41f4b71Sopenharmony_ci 1032e41f4b71Sopenharmony_ci## certificateManager.isAuthorizedApp<sup>12+</sup> 1033e41f4b71Sopenharmony_ci 1034e41f4b71Sopenharmony_ciisAuthorizedApp(keyUri: string): Promise\<boolean> 1035e41f4b71Sopenharmony_ci 1036e41f4b71Sopenharmony_ci表示当前应用是否由指定的用户凭据授权,使用Promise方式异步返回结果。 1037e41f4b71Sopenharmony_ci 1038e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.ACCESS_CERT_MANAGER 1039e41f4b71Sopenharmony_ci 1040e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 1041e41f4b71Sopenharmony_ci 1042e41f4b71Sopenharmony_ci**参数**: 1043e41f4b71Sopenharmony_ci 1044e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1045e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------- | ---- | -------------------------- | 1046e41f4b71Sopenharmony_ci| keyUri | string | 是 | 表示用户授权给应用使用的凭据的唯一标识符。 | 1047e41f4b71Sopenharmony_ci 1048e41f4b71Sopenharmony_ci**返回值**: 1049e41f4b71Sopenharmony_ci 1050e41f4b71Sopenharmony_ci| 类型 | 说明 | 1051e41f4b71Sopenharmony_ci| ----------------- | ------------------------------------------------------------ | 1052e41f4b71Sopenharmony_ci| Promise\<boolean> | Promise对象。表示查询应用是否被授权的结果,返回boolean对象。 | 1053e41f4b71Sopenharmony_ci 1054e41f4b71Sopenharmony_ci**错误码:** 1055e41f4b71Sopenharmony_ci 1056e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[证书管理错误码](errorcode-certManager.md)。 1057e41f4b71Sopenharmony_ci 1058e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1059e41f4b71Sopenharmony_ci| -------- | ------------- | 1060e41f4b71Sopenharmony_ci| 201 | Permission verification failed. The application does not have the permission required to call the API. | 1061e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 1062e41f4b71Sopenharmony_ci| 17500001 | Internal error. | 1063e41f4b71Sopenharmony_ci 1064e41f4b71Sopenharmony_ci**示例**: 1065e41f4b71Sopenharmony_ci```ts 1066e41f4b71Sopenharmony_ciimport { certificateManager } from '@kit.DeviceCertificateKit'; 1067e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1068e41f4b71Sopenharmony_ci 1069e41f4b71Sopenharmony_cilet uri: string = 'test'; /* 用户授权给应用使用的凭据的唯一标识符,此处省略 */ 1070e41f4b71Sopenharmony_citry { 1071e41f4b71Sopenharmony_ci certificateManager.isAuthorizedApp(uri).then((res) => { 1072e41f4b71Sopenharmony_ci if (res) { 1073e41f4b71Sopenharmony_ci console.info('The application is authorized by the user.'); 1074e41f4b71Sopenharmony_ci } else { 1075e41f4b71Sopenharmony_ci console.info('The application is not authorized by the user.'); 1076e41f4b71Sopenharmony_ci } 1077e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 1078e41f4b71Sopenharmony_ci console.error(`Failed to get Public certificate. Code: ${err.code}, message: ${err.message}`); 1079e41f4b71Sopenharmony_ci }) 1080e41f4b71Sopenharmony_ci} catch (error) { 1081e41f4b71Sopenharmony_ci console.error(`Failed to get Public certificate. Code: ${error.code}, message: ${error.message}`); 1082e41f4b71Sopenharmony_ci} 1083e41f4b71Sopenharmony_ci``` 1084e41f4b71Sopenharmony_ci 1085e41f4b71Sopenharmony_ci## certificateManager.getAllUserTrustedCertificates<sup>12+</sup> 1086e41f4b71Sopenharmony_ci 1087e41f4b71Sopenharmony_cigetAllUserTrustedCertificates(): Promise\<CMResult> 1088e41f4b71Sopenharmony_ci 1089e41f4b71Sopenharmony_ci表示获取所有用户根CA证书列表,使用Promise方式异步返回结果。 1090e41f4b71Sopenharmony_ci 1091e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.ACCESS_CERT_MANAGER 1092e41f4b71Sopenharmony_ci 1093e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 1094e41f4b71Sopenharmony_ci 1095e41f4b71Sopenharmony_ci**返回值**: 1096e41f4b71Sopenharmony_ci 1097e41f4b71Sopenharmony_ci| 类型 | 说明 | 1098e41f4b71Sopenharmony_ci| ------------------------------- | ------------------------------------------------------------ | 1099e41f4b71Sopenharmony_ci| Promise\<[CMResult](#cmresult)> | Promise对象。表示获取用户根CA证书列表的结果,返回值[CMResult](#cmresult)对象中的certList属性。 | 1100e41f4b71Sopenharmony_ci 1101e41f4b71Sopenharmony_ci**错误码:** 1102e41f4b71Sopenharmony_ci 1103e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[证书管理错误码](errorcode-certManager.md)。 1104e41f4b71Sopenharmony_ci 1105e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1106e41f4b71Sopenharmony_ci| -------- | ------------- | 1107e41f4b71Sopenharmony_ci| 201 | Permission verification failed. The application does not have the permission required to call the API. | 1108e41f4b71Sopenharmony_ci| 17500001 | Internal error. | 1109e41f4b71Sopenharmony_ci 1110e41f4b71Sopenharmony_ci**示例**: 1111e41f4b71Sopenharmony_ci```ts 1112e41f4b71Sopenharmony_ciimport { certificateManager } from '@kit.DeviceCertificateKit'; 1113e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1114e41f4b71Sopenharmony_ci 1115e41f4b71Sopenharmony_citry { 1116e41f4b71Sopenharmony_ci certificateManager.getAllUserTrustedCertificates().then((cmResult) => { 1117e41f4b71Sopenharmony_ci if (cmResult?.certList == undefined) { 1118e41f4b71Sopenharmony_ci console.info('The result of getting all user trusted certificates is undefined.'); 1119e41f4b71Sopenharmony_ci } else { 1120e41f4b71Sopenharmony_ci let list = cmResult.certList; 1121e41f4b71Sopenharmony_ci console.info('Succeeded in getting all user trusted certificates.'); 1122e41f4b71Sopenharmony_ci } 1123e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 1124e41f4b71Sopenharmony_ci console.error(`Failed to get all user trusted certificates. Code: ${err.code}, message: ${err.message}`); 1125e41f4b71Sopenharmony_ci }) 1126e41f4b71Sopenharmony_ci} catch (error) { 1127e41f4b71Sopenharmony_ci console.error(`Failed to get all user trusted certificates. Code: ${error.code}, message: ${error.message}`); 1128e41f4b71Sopenharmony_ci} 1129e41f4b71Sopenharmony_ci``` 1130e41f4b71Sopenharmony_ci 1131e41f4b71Sopenharmony_ci## certificateManager.getUserTrustedCertificate<sup>12+</sup> 1132e41f4b71Sopenharmony_ci 1133e41f4b71Sopenharmony_cigetUserTrustedCertificate(certUri: string): Promise\<CMResult> 1134e41f4b71Sopenharmony_ci 1135e41f4b71Sopenharmony_ci表示获取用户根CA证书的详细信息,使用Promise方式异步返回结果。 1136e41f4b71Sopenharmony_ci 1137e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.ACCESS_CERT_MANAGER 1138e41f4b71Sopenharmony_ci 1139e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 1140e41f4b71Sopenharmony_ci 1141e41f4b71Sopenharmony_ci**参数**: 1142e41f4b71Sopenharmony_ci 1143e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1144e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------- | ---- | -------------------------- | 1145e41f4b71Sopenharmony_ci| certUri | string | 是 | 表示用户用户根CA证书的唯一标识符。 | 1146e41f4b71Sopenharmony_ci 1147e41f4b71Sopenharmony_ci**返回值**: 1148e41f4b71Sopenharmony_ci 1149e41f4b71Sopenharmony_ci| 类型 | 说明 | 1150e41f4b71Sopenharmony_ci| ------------------------------- | ------------------------------------------------------------ | 1151e41f4b71Sopenharmony_ci| Promise\<[CMResult](#cmresult)> | Promise对象。表示获取用户根CA证书详细信息的结果,返回值为[CMResult](#cmresult)对象中的certInfo属性。 | 1152e41f4b71Sopenharmony_ci 1153e41f4b71Sopenharmony_ci**错误码:** 1154e41f4b71Sopenharmony_ci 1155e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[证书管理错误码](errorcode-certManager.md)。 1156e41f4b71Sopenharmony_ci 1157e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1158e41f4b71Sopenharmony_ci| -------- | ------------- | 1159e41f4b71Sopenharmony_ci| 201 | Permission verification failed. The application does not have the permission required to call the API. | 1160e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 1161e41f4b71Sopenharmony_ci| 17500001 | Internal error. | 1162e41f4b71Sopenharmony_ci| 17500002 | The certificate does not exist. | 1163e41f4b71Sopenharmony_ci 1164e41f4b71Sopenharmony_ci**示例**: 1165e41f4b71Sopenharmony_ci```ts 1166e41f4b71Sopenharmony_ciimport { certificateManager } from '@kit.DeviceCertificateKit'; 1167e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1168e41f4b71Sopenharmony_ci 1169e41f4b71Sopenharmony_cilet certUri: string = 'testUserCert'; /* 用户安装用户根CA证书返回的唯一标识符,此处省略 */ 1170e41f4b71Sopenharmony_citry { 1171e41f4b71Sopenharmony_ci certificateManager.getUserTrustedCertificate(certUri).then((cmResult) => { 1172e41f4b71Sopenharmony_ci if (cmResult?.certInfo == undefined) { 1173e41f4b71Sopenharmony_ci console.info('The result of getting user trusted certificate is undefined.'); 1174e41f4b71Sopenharmony_ci } else { 1175e41f4b71Sopenharmony_ci let cert = cmResult.certInfo; 1176e41f4b71Sopenharmony_ci console.info('Succeeded in getting user trusted certificate.'); 1177e41f4b71Sopenharmony_ci } 1178e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 1179e41f4b71Sopenharmony_ci console.error(`Failed to get user trusted certificate. Code: ${err.code}, message: ${err.message}`); 1180e41f4b71Sopenharmony_ci }) 1181e41f4b71Sopenharmony_ci} catch (error) { 1182e41f4b71Sopenharmony_ci console.error(`Failed to get user trusted certificate. Code: ${error.code}, message: ${error.message}`); 1183e41f4b71Sopenharmony_ci} 1184e41f4b71Sopenharmony_ci``` 1185e41f4b71Sopenharmony_ci## certificateManager.getPrivateCertificates<sup>13+</sup> 1186e41f4b71Sopenharmony_ci 1187e41f4b71Sopenharmony_cigetPrivateCertificates(): Promise\<CMResult> 1188e41f4b71Sopenharmony_ci 1189e41f4b71Sopenharmony_ci表示获取应用安装的凭据列表,使用Promise方式异步返回结果。 1190e41f4b71Sopenharmony_ci 1191e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.ACCESS_CERT_MANAGER 1192e41f4b71Sopenharmony_ci 1193e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Security.CertificateManager 1194e41f4b71Sopenharmony_ci 1195e41f4b71Sopenharmony_ci**返回值**: 1196e41f4b71Sopenharmony_ci 1197e41f4b71Sopenharmony_ci| 类型 | 说明 | 1198e41f4b71Sopenharmony_ci| ------------------------------- | ------------------------------------------------------------ | 1199e41f4b71Sopenharmony_ci| Promise\<[CMResult](#cmresult)> | Promise对象。表示获取应用安装的凭据列表的结果,返回值[CMResult](#cmresult)对象中的credentialList属性。 | 1200e41f4b71Sopenharmony_ci 1201e41f4b71Sopenharmony_ci**错误码:** 1202e41f4b71Sopenharmony_ci 1203e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[证书管理错误码](errorcode-certManager.md)。 1204e41f4b71Sopenharmony_ci 1205e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1206e41f4b71Sopenharmony_ci| -------- | ------------- | 1207e41f4b71Sopenharmony_ci| 201 | Permission verification failed. The application does not have the permission required to call the API. | 1208e41f4b71Sopenharmony_ci| 17500001 | Internal error. | 1209e41f4b71Sopenharmony_ci 1210e41f4b71Sopenharmony_ci**示例**: 1211e41f4b71Sopenharmony_ci```ts 1212e41f4b71Sopenharmony_ciimport { certificateManager } from '@kit.DeviceCertificateKit'; 1213e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1214e41f4b71Sopenharmony_ci 1215e41f4b71Sopenharmony_citry { 1216e41f4b71Sopenharmony_ci certificateManager.getPrivateCertificates().then((cmResult) => { 1217e41f4b71Sopenharmony_ci if (cmResult?.credentialList == undefined) { 1218e41f4b71Sopenharmony_ci console.info('The result of getting all private certificates installed by the application is undefined.'); 1219e41f4b71Sopenharmony_ci } else { 1220e41f4b71Sopenharmony_ci let list = cmResult.credentialList; 1221e41f4b71Sopenharmony_ci console.info('Succeeded in getting all private certificates installed by the application.'); 1222e41f4b71Sopenharmony_ci } 1223e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 1224e41f4b71Sopenharmony_ci console.error(`Failed to get all private certificates installed by the application. Code: ${err.code}, message: ${err.message}`); 1225e41f4b71Sopenharmony_ci }) 1226e41f4b71Sopenharmony_ci} catch (error) { 1227e41f4b71Sopenharmony_ci console.error(`Failed to get all private certificates installed by the application. Code: ${error.code}, message: ${error.message}`); 1228e41f4b71Sopenharmony_ci} 1229e41f4b71Sopenharmony_ci```