1# @ohos.net.networkSecurity (Network Security) 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'; 19 20// Define certificate blobs 21const cert: networkSecurity.CertBlob = { 22 type: networkSecurity.CertType.CERT_TYPE_PEM, 23 data: '-----BEGIN CERTIFICATE-----\n... (certificate data) ...\n-----END CERTIFICATE-----', 24}; 25 26const caCert: networkSecurity.CertBlob = { 27 type: networkSecurity.CertType.CERT_TYPE_PEM, 28 data: '-----BEGIN CERTIFICATE-----\n... (CA certificate data) ...\n-----END CERTIFICATE-----', 29}; 30 31// Perform asynchronous certificate verification 32networkSecurity.certVerification(cert, caCert) 33 .then((result) => { 34 console.info('Certificate verification result:', result); 35 }) 36 .catch((error: BusinessError) => { 37 console.error('Certificate verification failed:', error); 38 }); 39``` 40 41> **注意**: 42> 43> 请务必将示例中的证书数据替换为实际的证书内容。 44 45## CertType 46 47证书编码类型。 48 49**系统能力**: SystemCapability.Communication.NetStack 50 51| 名称 | 值 | 说明 | 52| ------------- | ----- | ------------- | 53| CERT_TYPE_PEM | 0 | PEM格式证书。 | 54| CERT_TYPE_DER | 1 | DER格式证书。 | 55 56 57## CertBlob 58 59证书数据。 60 61**系统能力**: SystemCapability.Communication.NetStack 62 63| 名称 | 类型 | 必填 | 说明 | 64| ----- | --------------------- | --------- | -------------- | 65| type | CertType | 是 | 证书编码类型。 | 66| data | string \| ArrayBuffer | 是 | 证书内容。 | 67 68 69## networkSecurity.certVerification 70 71certVerification(cert: CertBlob, caCert?: CertBlob): Promise\<number\> 72 73从证书管理获取系统预置的CA证书和用户安装的CA证书,对应用传入的证书进行校验。 74 75**系统能力**: SystemCapability.Communication.NetStack 76 77**参数** 78 79| 参数名 | 类型 | 必填 | 说明 | 80| ------ | -------- | ---- | ---------------------- | 81| cert | CertBlob | 是 | 被校验的证书。 | 82| caCert | CertBlob | 否 | 传入自定义的CA证书。 | 83 84**返回值:** 85 86| 类型 | 说明 | 87| --------------- | ------------------------------------------------------------ | 88| Promise\<number\> | 以promise形式返回一个数字,表示证书验证的结果。如果证书验证成功,则返回0; 否则验证失败。 | 89 90**错误码:** 91 92| 错误码ID | 错误信息 | 93| -------- | ---------------------------------------------------- | 94| 401 | Parameter error. | 95| 2305001 | Unspecified error. | 96| 2305002 | Unable to get issuer certificate. | 97| 2305003 | Unable to get certificate revocation list (CRL). | 98| 2305004 | Unable to decrypt certificate signature. | 99| 2305005 | Unable to decrypt CRL signature. | 100| 2305006 | Unable to decode issuer public key. | 101| 2305007 | Certificate signature failure. | 102| 2305008 | CRL signature failure. | 103| 2305009 | Certificate is not yet valid. | 104| 2305010 | Certificate has expired. | 105| 2305011 | CRL is not yet valid. | 106| 2305012 | CRL has expired. | 107| 2305018 | Self-signed certificate. | 108| 2305023 | Certificate has been revoked. | 109| 2305024 | Invalid certificate authority (CA). | 110| 2305027 | Certificate is untrusted. | 111| 2305069 | Invalid certificate verification context. | 112 113> **说明:** 114> 115> 这些错误代码对应于证书验证过程中的各种失败,提供有关所遇到问题的详细信息。 116 117**示例:** 118 119```ts 120import { networkSecurity } from '@kit.NetworkKit'; 121import { BusinessError } from '@kit.BasicServicesKit'; 122 123// Define certificate blobs 124const cert:networkSecurity.CertBlob = { 125 type: networkSecurity.CertType.CERT_TYPE_PEM, 126 data: '-----BEGIN CERTIFICATE-----\n... (certificate data) ...\n-----END CERTIFICATE-----', 127}; 128 129const caCert:networkSecurity.CertBlob = { 130 type: networkSecurity.CertType.CERT_TYPE_PEM, 131 data: '-----BEGIN CERTIFICATE-----\n... (CA certificate data) ...\n-----END CERTIFICATE-----', 132}; 133 134// Perform asynchronous certificate verification 135networkSecurity.certVerification(cert, caCert) 136 .then((result) => { 137 console.info('Certificate verification result:', result); 138 }) 139 .catch((error: BusinessError) => { 140 console.error('Certificate verification failed:', error); 141 }); 142``` 143> **注意**: 144> 145> 请务必将示例中的证书数据替换为实际的证书内容。 146 147 148 149## networkSecurity.certVerificationSync 150 151certVerificationSync(cert: CertBlob, caCert?: CertBlob): number 152 153从证书管理获取系统预置的CA证书和用户安装的CA证书,对应用传入的证书进行校验。 154 155**系统能力**:SystemCapability.Communication.NetStack 156 157**参数**: 158 159| 参数名 | 类型 | 必填 | 说明 | 160| ------ | -------- | ---- | ---------------------- | 161| cert | CertBlob | 是 | 被校验的证书。 | 162| caCert | CertBlob | 否 | 传入自定义的CA证书。 | 163 164**返回值:** 165 166| 类型 | 说明 | 167| ------ | ------------------------------------------------------------ | 168| number | 表示证书验证的结果。如果证书验证成功,则返回0; 否则验证失败。 | 169 170**错误码:** 171 172| 错误码ID | 错误信息 | 173| -------- | ---------------------------------------------------- | 174| 401 | Parameter error. | 175| 2305001 | Unspecified error. | 176| 2305002 | Unable to get issuer certificate. | 177| 2305003 | Unable to get certificate revocation list (CRL). | 178| 2305004 | Unable to decrypt certificate signature. | 179| 2305005 | Unable to decrypt CRL signature. | 180| 2305006 | Unable to decode issuer public key. | 181| 2305007 | Certificate signature failure. | 182| 2305008 | CRL signature failure. | 183| 2305009 | Certificate is not yet valid. | 184| 2305010 | Certificate has expired. | 185| 2305011 | CRL is not yet valid. | 186| 2305012 | CRL has expired. | 187| 2305018 | Self-signed certificate. | 188| 2305023 | Certificate has been revoked. | 189| 2305024 | Invalid certificate authority (CA). | 190| 2305027 | Certificate is untrusted. | 191| 2305069 | Invalid certificate verification context. | 192 193> **说明:** 194> 195> 这些错误代码对应于证书验证过程中的各种失败,提供有关所遇到问题的详细信息。 196 197**示例:** 198 199```ts 200import { networkSecurity } from '@kit.NetworkKit'; 201import { BusinessError } from '@kit.BasicServicesKit'; 202 203// Create certificate blobs 204const cert: networkSecurity.CertBlob = { 205 type: networkSecurity.CertType.CERT_TYPE_PEM, 206 data: '-----BEGIN CERTIFICATE-----\n...' 207}; 208 209const caCert: networkSecurity.CertBlob = { 210 type: networkSecurity.CertType.CERT_TYPE_PEM, 211 data: '-----BEGIN CERTIFICATE-----\n...' 212}; 213 214// Asynchronous verification 215networkSecurity.certVerification(cert, caCert) 216 .then((result) => { 217 console.info('Verification Result:', result); 218 }) 219 .catch((error: BusinessError) => { 220 console.error('Verification Error:', error); 221 }); 222 223// Synchronous verification 224let resultSync: number = networkSecurity.certVerificationSync(cert, caCert); 225console.info('Synchronous Verification Result:', resultSync); 226``` 227 228> **注意**: 229> 230> 请务必将示例中的证书数据替换为实际的证书内容。 231