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```