• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.net.networkSecurity (网络安全校验)
2
3本模块提供网络安全校验能力。应用可以通过证书校验API完成证书校验功能。
4
5> **说明:**
6>
7> 本模块首批接口从API version 11开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8
9## 导入模块
10
11```ts
12import { networkSecurity } from '@kit.NetworkKit';
13```
14
15## 完整实例
16
17```ts
18import { networkSecurity } from '@kit.NetworkKit';
19import { BusinessError } from '@kit.BasicServicesKit';
20
21// Define certificate blobs
22const cert: networkSecurity.CertBlob = {
23  type: networkSecurity.CertType.CERT_TYPE_PEM,
24  data: '-----BEGIN CERTIFICATE-----\n... (certificate data) ...\n-----END CERTIFICATE-----',
25};
26
27const caCert: networkSecurity.CertBlob = {
28  type: networkSecurity.CertType.CERT_TYPE_PEM,
29  data: '-----BEGIN CERTIFICATE-----\n... (CA certificate data) ...\n-----END CERTIFICATE-----',
30};
31
32// Perform asynchronous certificate verification
33networkSecurity.certVerification(cert, caCert)
34  .then((result) => {
35    console.info('Certificate verification result:', result);
36  })
37  .catch((error: BusinessError) => {
38    console.error('Certificate verification failed:', error);
39  });
40```
41
42> **注意**:
43>
44> 请务必将示例中的证书数据替换为实际的证书内容。
45
46## CertType
47
48证书编码类型。
49
50**系统能力**: SystemCapability.Communication.NetStack
51
52| 名称          | 值    |      说明     |
53| ------------- | ----- | ------------- |
54| CERT_TYPE_PEM | 0     | PEM格式证书。 |
55| CERT_TYPE_DER | 1     | DER格式证书。 |
56
57
58## CertBlob
59
60证书数据。
61
62**系统能力**: SystemCapability.Communication.NetStack
63
64| 名称  | 类型                   | 必填      | 说明           |
65| ----- | --------------------- | --------- | -------------- |
66| type  | CertType              | 是      | 证书编码类型。  |
67| data  | string \| ArrayBuffer | 是       | 证书内容。      |
68
69
70## networkSecurity.certVerification
71
72certVerification(cert: CertBlob, caCert?: CertBlob): Promise\<number\>
73
74从证书管理获取系统预置的CA证书和用户安装的CA证书,对应用传入的证书进行校验。
75
76**系统能力**: SystemCapability.Communication.NetStack
77
78**参数**
79
80| 参数名 | 类型     | 必填 | 说明                   |
81| ------ | -------- | ---- | ---------------------- |
82| cert   | CertBlob | 是   | 被校验的证书。       |
83| caCert | CertBlob | 否   | 传入自定义的CA证书。 |
84
85**返回值:**
86
87| 类型            | 说明                                                         |
88| --------------- | ------------------------------------------------------------ |
89| Promise\<number\> | 以promise形式返回一个数字,表示证书验证的结果。如果证书验证成功,则返回0; 否则验证失败。 |
90
91**错误码:**
92
93以下错误码的详细介绍请参见[网络安全校验错误码](errorcode-net-networkSecurity.md)和[通用错误码](../errorcode-universal.md)。
94
95| 错误码ID | 错误信息                                             |
96| -------- | ---------------------------------------------------- |
97| 401      | Parameter error.                                     |
98| 2305001  | Unspecified error.                                   |
99| 2305002  | Unable to get issuer certificate.                    |
100| 2305003  | Unable to get certificate revocation list (CRL).     |
101| 2305004  | Unable to decrypt certificate signature.             |
102| 2305005  | Unable to decrypt CRL signature.                     |
103| 2305006  | Unable to decode issuer public key.                  |
104| 2305007  | Certificate signature failure.                       |
105| 2305008  | CRL signature failure.                               |
106| 2305009  | Certificate is not yet valid.                        |
107| 2305010  | Certificate has expired.                             |
108| 2305011  | CRL is not yet valid.                                |
109| 2305012  | CRL has expired.                                     |
110| 2305018  | Self-signed certificate.                             |
111| 2305023  | Certificate has been revoked.                        |
112| 2305024  | Invalid certificate authority (CA).                  |
113| 2305027  | Certificate is untrusted.                            |
114| 2305069  | Invalid certificate verification context.            |
115
116> **说明:**
117>
118> 这些错误代码对应于证书验证过程中的各种失败。
119
120**示例:**
121
122```ts
123import { networkSecurity } from '@kit.NetworkKit';
124import { BusinessError } from '@kit.BasicServicesKit';
125
126// Define certificate blobs
127const cert:networkSecurity.CertBlob = {
128  type: networkSecurity.CertType.CERT_TYPE_PEM,
129  data: '-----BEGIN CERTIFICATE-----\n... (certificate data) ...\n-----END CERTIFICATE-----',
130};
131
132const caCert:networkSecurity.CertBlob = {
133  type: networkSecurity.CertType.CERT_TYPE_PEM,
134  data: '-----BEGIN CERTIFICATE-----\n... (CA certificate data) ...\n-----END CERTIFICATE-----',
135};
136
137// Perform asynchronous certificate verification
138networkSecurity.certVerification(cert, caCert)
139  .then((result) => {
140    console.info('Certificate verification result:', result);
141  })
142  .catch((error: BusinessError) => {
143    console.error('Certificate verification failed:', error);
144  });
145```
146> **注意**:
147>
148> 请务必将示例中的证书数据替换为实际的证书内容。
149
150
151
152## networkSecurity.certVerificationSync
153
154certVerificationSync(cert: CertBlob, caCert?: CertBlob): number
155
156从证书管理获取系统预置的CA证书和用户安装的CA证书,对应用传入的证书进行校验。
157
158**系统能力**:SystemCapability.Communication.NetStack
159
160**参数**:
161
162| 参数名 | 类型     | 必填 | 说明                   |
163| ------ | -------- | ---- | ---------------------- |
164| cert   | CertBlob | 是  | 被校验的证书。       |
165| caCert | CertBlob | 否   | 传入自定义的CA证书。 |
166
167**返回值:**
168
169| 类型   | 说明                                                         |
170| ------ | ------------------------------------------------------------ |
171| number | 表示证书验证的结果。如果证书验证成功,则返回0; 否则验证失败。 |
172
173**错误码:**
174
175以下错误码的详细介绍请参见[网络安全校验错误码](errorcode-net-networkSecurity.md)和[通用错误码](../errorcode-universal.md)。
176
177| 错误码ID | 错误信息                                             |
178| -------- | ---------------------------------------------------- |
179| 401      | Parameter error.                                     |
180| 2305001  | Unspecified error.                                   |
181| 2305002  | Unable to get issuer certificate.                    |
182| 2305003  | Unable to get certificate revocation list (CRL).     |
183| 2305004  | Unable to decrypt certificate signature.             |
184| 2305005  | Unable to decrypt CRL signature.                     |
185| 2305006  | Unable to decode issuer public key.                  |
186| 2305007  | Certificate signature failure.                       |
187| 2305008  | CRL signature failure.                               |
188| 2305009  | Certificate is not yet valid.                        |
189| 2305010  | Certificate has expired.                             |
190| 2305011  | CRL is not yet valid.                                |
191| 2305012  | CRL has expired.                                     |
192| 2305018  | Self-signed certificate.                             |
193| 2305023  | Certificate has been revoked.                        |
194| 2305024  | Invalid certificate authority (CA).                  |
195| 2305027  | Certificate is untrusted.                            |
196| 2305069  | Invalid certificate verification context.            |
197
198> **说明:**
199>
200> 这些错误代码对应于证书验证过程中的各种失败。
201
202**示例:**
203
204```ts
205import { networkSecurity } from '@kit.NetworkKit';
206import { BusinessError } from '@kit.BasicServicesKit';
207
208// Create certificate blobs
209const cert: networkSecurity.CertBlob = {
210  type: networkSecurity.CertType.CERT_TYPE_PEM,
211  data: '-----BEGIN CERTIFICATE-----\n...'
212};
213
214const caCert: networkSecurity.CertBlob = {
215  type: networkSecurity.CertType.CERT_TYPE_PEM,
216  data: '-----BEGIN CERTIFICATE-----\n...'
217};
218
219// Asynchronous verification
220networkSecurity.certVerification(cert, caCert)
221  .then((result) => {
222    console.info('Verification Result:', result);
223  })
224  .catch((error: BusinessError) => {
225    console.error('Verification Error:', error);
226  });
227
228// Synchronous verification
229let resultSync: number = networkSecurity.certVerificationSync(cert, caCert);
230console.info('Synchronous Verification Result:', resultSync);
231```
232
233> **注意**:
234>
235> 请务必将示例中的证书数据替换为实际的证书内容。
236
237## networkSecurity.isCleartextPermitted<sup>18+</sup>
238
239isCleartextPermitted(): boolean
240
241从应用预置network_config.json文件中获取整体明文HTTP是否允许信息,默认允许明文HTTP访问。
242
243**需要权限**:ohos.permission.INTERNET
244
245**系统能力**:SystemCapability.Communication.NetStack
246
247**返回值:**
248
249| 类型   | 说明                                                         |
250| ------ | ------------------------------------------------------------ |
251| boolean | 整体明文HTTP是否允许。返回true表示允许访问明文HTTP,false表示不允许。默认返回true。 |
252
253**错误码:**
254
255以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
256
257| 错误码ID | 错误信息                                             |
258| -------- | ---------------------------------------------------- |
259| 201      | Permission denied.                                  |
260
261**示例:**
262
263```ts
264import { networkSecurity } from '@kit.NetworkKit';
265import { BusinessError } from '@kit.BasicServicesKit';
266
267try {
268  let result: boolean = networkSecurity.isCleartextPermitted();
269  console.info(`isCleartextPermitted Result: ${JSON.stringify(result)}`);
270} catch (error) {
271  console.error(`isCleartextPermitted Error: ${JSON.stringify(error)}`);
272}
273```
274
275## networkSecurity.isCleartextPermittedByHostName<sup>18+</sup>
276
277isCleartextPermittedByHostName(hostName: string): boolean
278
279从应用预置network_config.json文件中获取按域名明文HTTP是否允许信息,默认允许明文HTTP访问。
280
281**需要权限**:ohos.permission.INTERNET
282
283**系统能力**:SystemCapability.Communication.NetStack
284
285**参数**:
286
287| 参数名 | 类型     | 必填 | 说明                   |
288| ------ | -------- | ---- | ---------------------- |
289| hostName | string | 是  | 需要查询的主机名。|
290
291**返回值:**
292
293| 类型   | 说明                                                         |
294| ------ | ------------------------------------------------------------ |
295| boolean | 按域名明文HTTP是否允许。返回true表示允许明文HTTP访问该主机,false表示不允许。默认返回true。 |
296
297**错误码:**
298
299以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
300
301| 错误码ID | 错误信息                                             |
302| -------- | ---------------------------------------------------- |
303| 201      | Permission denied.                                     |
304
305**示例:**
306
307```ts
308import { networkSecurity } from '@kit.NetworkKit';
309import { BusinessError } from '@kit.BasicServicesKit';
310
311try {
312  let result: boolean = networkSecurity.isCleartextPermittedByHostName("xxx");
313  console.info(`isCleartextPermitted Result: ${JSON.stringify(result)}`);
314} catch (error) {
315  console.error(`isCleartextPermitted Error: ${JSON.stringify(error)}`);
316}
317```