1# @ohos.security.cert (证书模块) 2 3crypto framework提供证书相关接口。其中,依赖加解密算法库框架的基础算法能力的部分,详细接口说明可参考[cryptoFramework API参考](js-apis-cryptoFramework.md)。 4 5> **说明:** 6> 7> 本模块首批接口从API version 9开始支持。 8 9## 导入模块 10 11```javascript 12import cryptoCert from '@ohos.security.cert'; 13import cryptoFramework from "@ohos.security.cryptoFramework" 14``` 15 16## CertResult 17 18 表示执行结果的枚举。 19 20 **系统能力:** SystemCapability.Security.Cert 21 22| 名称 | 值 | 说明 | 23| --------------------------------------| -------- | -----------------------------| 24| INVALID_PARAMS | 401 | 非法入参。 | 25| NOT_SUPPORT | 801 | 操作不支持。 | 26| ERR_OUT_OF_MEMORY | 19020001 | 内存错误。 | 27| ERR_RUNTIME_ERROR | 19020002 | 运行时外部错误。 | 28| ERR_CRYPTO_OPERATION | 19030001 | 调用三方算法库API出错。 | 29| ERR_CERT_SIGNATURE_FAILURE | 19030002 | 证书签名验证错误。 | 30| ERR_CERT_NOT_YET_VALID | 19030003 | 证书尚未生效。 | 31| ERR_CERT_HAS_EXPIRED | 19030004 | 证书过期。 | 32| ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY | 19030005 | 无法获取证书的颁发者。 | 33| ERR_KEYUSAGE_NO_CERTSIGN | 19030006 | 证书的秘钥用途不含证书签名。 | 34| ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE | 19030007 | 证书的秘钥用途不含数字签名。 | 35 36## DataBlob 37buffer数组。 38 **系统能力:** SystemCapability.Security.Cert 39| 名称 | 类型 | 可读 | 可写 | 说明 | 40| -------------- | -------------- | ---- | ---- | ----------------| 41| data | Uint8Array | 是 | 是 | 数据。 | 42 43## DataArray 44 45buffer数组的列表。 46 **系统能力:** SystemCapability.Security.Cert 47| 名称 | 类型 | 可读 | 可写 | 说明 | 48| -------------- | -------------- | ---- | ---- | ----------------| 49| data | Uint8Array | 是 | 是 | 数据列表。 | 50 51## EncodingFormat 52 53 表示证书编码格式的枚举。 54 55 **系统能力:** SystemCapability.Security.Cert 56 57| 名称 | 值 | 说明 | 58| ---------- | ------ | --------- | 59| FORMAT_DER | 0 | DER格式。 | 60| FORMAT_PEM | 1 | PEM格式。 | 61 62 63## EncodingBlob 64 65带编码格式的证书二进制数组。 66 67### 属性 68 69**系统能力:** SystemCapability.Security.Cert 70 71| 名称 | 类型 | 可读 | 可写 | 说明 | 72| -------------- | --------------------------------- | ---- | ---- | ------------------------------ | 73| data | Uint8Array | 是 | 是 | 传入的证书数据。 | 74| encodingFormat | [EncodingFormat](#encodingformat) | 是 | 是 | 指明证书编码格式。 | 75 76 77## CertChainData 78 79证书链数据,在证书链校验时,作为入参传入。 80 81### 属性 82 83**系统能力:** SystemCapability.Security.Cert 84 85| 名称 | 类型 | 可读 | 可写 | 说明 | 86| -------------- | --------------------------------- | ---- | ---- | ------------------------------------------------------------ | 87| data | Uint8Array | 是 | 是 | 证书数据,按照长度(2字节)-数据的形式传入,如:08ABCDEFGH07ABCDEFG,第一本证书,前2个字节表示证书的长度为8字节,后面附加8字节的证书数据;第2本证书前2个字节表示证书的长度为7字节,后面附加7字节的证书数据。 | 88| count | number | 是 | 是 | 传入的数据中,包含的证书数量。 | 89| encodingFormat | [EncodingFormat](#encodingformat) | 是 | 是 | 指明证书编码格式。 | 90 91 92## cryptoCert.createX509Cert 93 94createX509Cert(inStream : EncodingBlob, callback : AsyncCallback\<X509Cert>) : void 95 96表示创建X509证书对象。 97 98**系统能力:** SystemCapability.Security.Cert 99 100**参数:** 101 102| 参数名 | 类型 | 必填 | 说明 | 103| -------- | ----------------------------- | ---- | -------------------------- | 104| inStream | [EncodingBlob](#encodingblob) | 是 | X509证书序列化数据 | 105| callback | AsyncCallback\<X509Cert> | 是 | 回调函数。表示X509证书对象 | 106 107**错误码:** 108 109| 错误码ID | 错误信息 | 110| -------- | ------------- | 111| 19020001 | memory error. | 112 113**示例:** 114 115```js 116import cryptoCert from '@ohos.security.cert'; 117 118// 证书二进制数据,需业务自行赋值 119let encodingData = null; 120let encodingBlob = { 121 data: encodingData, 122 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 123 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 124}; 125cryptoCert.createX509Cert(encodingBlob, function (error, x509Cert) { 126 if (error != null) { 127 console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); 128 } else { 129 console.log("createX509Cert success"); 130 } 131}); 132``` 133 134## cryptoCert.createX509Cert 135 136createX509Cert(inStream : EncodingBlob) : Promise\<X509Cert> 137 138表示创建X509证书对象。 139 140**系统能力:** SystemCapability.Security.Cert 141 142**参数:** 143 144| 参数名 | 类型 | 必填 | 说明 | 145| -------- | ----------------------------- | ---- | ------------------ | 146| inStream | [EncodingBlob](#encodingblob) | 是 | X509证书序列化数据 | 147 148**返回值:** 149 150| 类型 | 说明 | 151| ------- | ---------------- | 152| Promise\<X509Cert> | 表示X509证书对象 | 153 154**错误码:** 155 156| 错误码ID | 错误信息 | 157| -------- | ------------- | 158| 19020001 | memory error. | 159 160**示例:** 161 162```js 163import cryptoCert from '@ohos.security.cert'; 164 165// 证书二进制数据,需业务自行赋值 166let encodingData = null; 167let encodingBlob = { 168 data: encodingData, 169 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 170 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 171}; 172cryptoCert.createX509Cert(encodingBlob).then(x509Cert => { 173 console.log("createX509Cert success"); 174}, error => { 175 console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); 176}); 177``` 178 179## X509Cert 180 181X509证书类。 182 183### verify 184 185verify(key : cryptoFramework.PubKey, callback : AsyncCallback\<void>) : void 186 187表示对证书验签。 188 189**系统能力:** SystemCapability.Security.Cert 190 191**参数:** 192 193| 参数名 | 类型 | 必填 | 说明 | 194| -------- | --------------------- | ---- | ------------------------------------------------------------ | 195| key | cryptoFramework.PubKey | 是 | 用于验签的公钥对象 | 196| callback | AsyncCallback\<void> | 是 | 回调函数。使用AsyncCallback的第一个error参数判断是否验签成功,error为null表示成功,不为null表示失败 | 197 198**错误码:** 199 200| 错误码ID | 错误信息 | 201| -------- | ------------------ | 202| 19030001 | crypto operation error. | 203 204**示例:** 205 206```js 207import cryptoCert from '@ohos.security.cert'; 208 209// 证书二进制数据,需业务自行赋值 210let encodingData = null; 211let encodingBlob = { 212 data: encodingData, 213 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 214 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 215}; 216cryptoCert.createX509Cert(encodingBlob, function (error, x509Cert) { 217 if (error != null) { 218 console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); 219 } else { 220 console.log("createX509Cert success"); 221 // 业务需通过上级X509Cert证书对象的getPublicKey获取PubKey 222 let pubKey = null; 223 x509Cert.verify(pubKey, function (error, data) { 224 if (error != null) { 225 console.log("verify failed, errCode: " + error.code + ", errMsg: " + error.message); 226 } else { 227 console.log("verify success"); 228 } 229 }); 230 } 231}); 232``` 233 234### verify 235 236verify(key : cryptoFramework.PubKey) : Promise\<void> 237 238表示对证书验签。 239 240**系统能力:** SystemCapability.Security.Cert 241 242**参数:** 243 244| 参数名 | 类型 | 必填 | 说明 | 245| ------ | ------ | ---- | ------------------ | 246| key | cryptoFramework.PubKey | 是 | 用于验签的公钥对象 | 247 248**返回值:** 249 250| 类型 | 说明 | 251| -------------- | ----------- | 252| Promise\<void> | Promise对象 | 253 254**错误码:** 255 256| 错误码ID | 错误信息 | 257| -------- | ------------------ | 258| 19030001 | crypto operation error. | 259 260**示例:** 261 262```js 263import cryptoCert from '@ohos.security.cert'; 264 265// 证书二进制数据,需业务自行赋值 266let encodingData = null; 267let encodingBlob = { 268 data: encodingData, 269 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 270 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 271}; 272cryptoCert.createX509Cert(encodingBlob).then(x509Cert => { 273 console.log("createX509Cert success"); 274 // 业务可通过上级X509Cert证书对象的getPublicKey获取PubKey 275 let pubKey = null; 276 x509Cert.verify(pubKey).then(result => { 277 console.log("verify success"); 278 }, error => { 279 console.log("verify failed, errCode: " + error.code + ", errMsg: " + error.message); 280 }); 281}, error => { 282 console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); 283}); 284``` 285 286### getEncoded 287 288getEncoded(callback : AsyncCallback\<EncodingBlob>) : void 289 290表示获取X509证书序列化数据。 291 292**系统能力:** SystemCapability.Security.Cert 293 294**参数**: 295 296| 参数名 | 类型 | 必填 | 说明 | 297| -------- | --------------------------------------------- | ---- | -------------------------------- | 298| callback | AsyncCallback\<[EncodingBlob](#encodingblob)> | 是 | 回调函数。表示X509证书序列化数据 | 299 300**错误码:** 301 302| 错误码ID | 错误信息 | 303| -------- | ------------------------------------------------- | 304| 19020001 | memory error. | 305| 19020002 | runtime error. | 306| 19030001 | crypto operation error.| 307 308**示例:** 309 310```js 311import cryptoCert from '@ohos.security.cert'; 312 313// 证书二进制数据,需业务自行赋值 314let encodingData = null; 315let encodingBlob = { 316 data: encodingData, 317 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 318 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 319}; 320cryptoCert.createX509Cert(encodingBlob, function (error, x509Cert) { 321 if (error != null) { 322 console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); 323 } else { 324 console.log("createX509Cert success"); 325 x509Cert.getEncoded(function (error, data) { 326 if (error != null) { 327 console.log("getEncoded failed, errCode: " + error.code + ", errMsg: " + error.message); 328 } else { 329 console.log("getEncoded success"); 330 } 331 }); 332 } 333}); 334``` 335 336### getEncoded 337 338getEncoded() : Promise\<EncodingBlob> 339 340表示获取X509证书序列化数据。 341 342**系统能力:** SystemCapability.Security.Cert 343 344**返回值**: 345 346| 类型 | 说明 | 347| --------------------------------------- | ---------------------- | 348| Promise\<[EncodingBlob](#encodingblob)> | 表示X509证书序列化数据 | 349 350**错误码:** 351 352| 错误码ID | 错误信息 | 353| -------- | ------------------------------------------------- | 354| 19020001 | memory error. | 355| 19020002 | runtime error. | 356| 19030001 | crypto operation error.| 357 358**示例:** 359 360```js 361import cryptoCert from '@ohos.security.cert'; 362 363// 证书二进制数据,需业务自行赋值 364let encodingData = null; 365let encodingBlob = { 366 data: encodingData, 367 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 368 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 369}; 370cryptoCert.createX509Cert(encodingBlob).then(x509Cert => { 371 console.log("createX509Cert success"); 372 x509Cert.getEncoded().then(result => { 373 console.log("getEncoded success"); 374 }, error => { 375 console.log("getEncoded failed, errCode: " + error.code + ", errMsg: " + error.message); 376 }); 377}, error => { 378 console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); 379}); 380``` 381 382### getPublicKey 383 384getPublicKey() : cryptoFramework.PubKey 385 386表示获取X509证书公钥。 387 388**系统能力:** SystemCapability.Security.Cert 389 390**返回值**: 391 392| 类型 | 说明 | 393| ------ | ---------------- | 394| cryptoFramework.PubKey | X509证书公钥对象:仅用于X509Cert的verify接口 | 395 396**错误码:** 397 398| 错误码ID | 错误信息 | 399| -------- | ------------------------------------------------- | 400| 19020001 | memory error. | 401| 19030001 | crypto operation error.| 402 403**示例:** 404 405```js 406import cryptoCert from '@ohos.security.cert'; 407import cryptoFramework from "@ohos.security.cryptoFramework" 408 409// 证书二进制数据,需业务自行赋值 410let encodingData = null; 411let encodingBlob = { 412 data: encodingData, 413 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 414 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 415}; 416cryptoCert.createX509Cert(encodingBlob, function (error, x509Cert) { 417 if (error != null) { 418 console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); 419 } else { 420 console.log("createX509Cert success"); 421 let pubKey = null; 422 try { 423 pubKey = x509Cert.getPublicKey(); 424 } catch (error) { 425 console.log("getPublicKey failed, errCode: " + error.code + ", errMsg: " + error.message); 426 } 427 } 428}); 429``` 430 431### checkValidityWithDate 432 433checkValidityWithDate(date: string) : void 434 435表示检查X509证书有效期。 436 437**系统能力:** SystemCapability.Security.Cert 438 439**参数**: 440 441| 参数名 | 类型 | 必填 | 说明 | 442| -------- | -------------- | ---- | ---------- | 443| date | string | 是 | 日期(格式:YYMMDDHHMMSSZ 或 YYYYMMDDHHMMSSZ,时间必须以Z结尾:表示标准时间) | 444 445**错误码:** 446 447| 错误码ID | 错误信息 | 448| -------- | ------------------------------------------------- | 449| 19020001 | memory error. | 450| 19030001 | crypto operation error.| 451| 19030003 | the certificate has not taken effect. | 452| 19030004 | the certificate has expired.| 453 454**示例:** 455 456```js 457import cryptoCert from '@ohos.security.cert'; 458 459// 证书二进制数据,需业务自行赋值 460let encodingData = null; 461let encodingBlob = { 462 data: encodingData, 463 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 464 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 465}; 466cryptoCert.createX509Cert(encodingBlob, function (error, x509Cert) { 467 if (error != null) { 468 console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); 469 } else { 470 console.log("createX509Cert success"); 471 let date = "150527000001Z"; 472 473 // 校验证书有效期 474 try { 475 x509Cert.checkValidityWithDate(date); 476 } catch (error) { 477 console.log("checkValidityWithDate failed, errCode: " + error.code + ", errMsg: " + error.message); 478 } 479 } 480}); 481``` 482 483### getVersion 484 485getVersion() : number 486 487表示获取X509证书版本。 488 489**系统能力:** SystemCapability.Security.Cert 490 491**返回值**: 492 493| 类型 | 说明 | 494| ------ | ---------------- | 495| number | 表示X509证书版本 | 496 497**示例:** 498 499```js 500import cryptoCert from '@ohos.security.cert'; 501 502// 证书二进制数据,需业务自行赋值 503let encodingData = null; 504let encodingBlob = { 505 data: encodingData, 506 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 507 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 508}; 509cryptoCert.createX509Cert(encodingBlob, function (error, x509Cert) { 510 if (error != null) { 511 console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); 512 } else { 513 console.log("createX509Cert success"); 514 let version = x509Cert.getVersion(); 515 } 516}); 517``` 518 519### getSerialNumber 520 521getSerialNumber() : number 522 523表示获取X509证书序列号。 524 525**系统能力:** SystemCapability.Security.Cert 526 527**返回值**: 528 529| 类型 | 说明 | 530| ------ | ------------------ | 531| number | 表示X509证书序列号 | 532 533**示例:** 534 535```js 536import cryptoCert from '@ohos.security.cert'; 537 538// 证书二进制数据,需业务自行赋值 539let encodingData = null; 540let encodingBlob = { 541 data: encodingData, 542 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 543 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 544}; 545cryptoCert.createX509Cert(encodingBlob, function (error, x509Cert) { 546 if (error != null) { 547 console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); 548 } else { 549 console.log("createX509Cert success"); 550 let serialNumber = x509Cert.getSerialNumber(); 551 } 552}); 553``` 554 555### getIssuerName 556 557getIssuerName() : DataBlob 558 559表示获取X509证书颁发者名称。 560 561**系统能力:** SystemCapability.Security.Cert 562 563**返回值**: 564 565| 类型 | 说明 | 566| --------------------- | ---------------------- | 567| [DataBlob](#datablob) | 表示X509证书颁发者名称 | 568 569**错误码:** 570 571| 错误码ID | 错误信息 | 572| -------- | ------------------------------------------------- | 573| 19020001 | memory error. | 574| 19020002 | runtime error. | 575| 19030001 | crypto operation error.| 576 577**示例:** 578 579```js 580import cryptoCert from '@ohos.security.cert'; 581 582// 证书二进制数据,需业务自行赋值 583let encodingData = null; 584let encodingBlob = { 585 data: encodingData, 586 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 587 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 588}; 589cryptoCert.createX509Cert(encodingBlob, function (error, x509Cert) { 590 if (error != null) { 591 console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); 592 } else { 593 console.log("createX509Cert success"); 594 let issuerName = x509Cert.getIssuerName(); 595 } 596}); 597``` 598 599### getSubjectName 600 601getSubjectName() : DataBlob 602 603表示获取X509证书主体名称。 604 605**系统能力:** SystemCapability.Security.Cert 606 607**返回值**: 608 609| 类型 | 说明 | 610| --------------------- | -------------------- | 611| [DataBlob](#datablob) | 表示X509证书主体名称 | 612 613**错误码:** 614 615| 错误码ID | 错误信息 | 616| -------- | ------------------------------------------------- | 617| 19020001 | memory error. | 618| 19020002 | runtime error. | 619| 19030001 | crypto operation error.| 620 621**示例:** 622 623```js 624import cryptoCert from '@ohos.security.cert'; 625 626// 证书二进制数据,需业务自行赋值 627let encodingData = null; 628let encodingBlob = { 629 data: encodingData, 630 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 631 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 632}; 633cryptoCert.createX509Cert(encodingBlob, function (error, x509Cert) { 634 if (error != null) { 635 console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); 636 } else { 637 console.log("createX509Cert success"); 638 let subjectName = x509Cert.getSubjectName(); 639 } 640}); 641``` 642 643### getNotBeforeTime 644 645getNotBeforeTime() : string 646 647表示获取X509证书有效期起始时间。 648 649**系统能力:** SystemCapability.Security.Cert 650 651**返回值**: 652 653| 类型 | 说明 | 654| ------ | ------------------------------------------------------------ | 655| string | 表示X509证书有效期起始时间(格式:YYMMDDHHMMSSZ 或 YYYYMMDDHHMMSSZ,时间以Z结尾:表示标准时间) | 656 657**错误码:** 658 659| 错误码ID | 错误信息 | 660| -------- | ------------------------------------------------- | 661| 19020001 | memory error. | 662| 19020002 | runtime error. | 663| 19030001 | crypto operation error.| 664 665**示例:** 666 667```js 668import cryptoCert from '@ohos.security.cert'; 669 670// 证书二进制数据,需业务自行赋值 671let encodingData = null; 672let encodingBlob = { 673 data: encodingData, 674 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 675 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 676}; 677cryptoCert.createX509Cert(encodingBlob, function (error, x509Cert) { 678 if (error != null) { 679 console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); 680 } else { 681 console.log("createX509Cert success"); 682 let notBefore = x509Cert.getNotBeforeTime(); 683 } 684}); 685``` 686 687### getNotAfterTime 688 689getNotAfterTime() : string 690 691表示获取X509证书有效期截止时间。 692 693**系统能力:** SystemCapability.Security.Cert 694 695**返回值**: 696 697| 类型 | 说明 | 698| ------ | ------------------------------------------------------------ | 699| string | 表示X509证书有效期截止时间(格式:YYMMDDHHMMSSZ 或 YYYYMMDDHHMMSSZ,时间以Z结尾:表示标准时间) | 700 701**错误码:** 702 703| 错误码ID | 错误信息 | 704| -------- | ------------------------------------------------- | 705| 19020001 | memory error. | 706| 19020002 | runtime error. | 707| 19030001 | crypto operation error.| 708 709**示例:** 710 711```js 712import cryptoCert from '@ohos.security.cert'; 713 714// 证书二进制数据,需业务自行赋值 715let encodingData = null; 716let encodingBlob = { 717 data: encodingData, 718 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 719 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 720}; 721cryptoCert.createX509Cert(encodingBlob, function (error, x509Cert) { 722 if (error != null) { 723 console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); 724 } else { 725 console.log("createX509Cert success"); 726 let notAfter = x509Cert.getNotAfterTime(); 727 } 728}); 729``` 730 731### getSignature 732 733getSignature() : DataBlob 734 735表示获取X509证书签名数据。 736 737**系统能力:** SystemCapability.Security.Cert 738 739**返回值**: 740 741| 类型 | 说明 | 742| --------------------- | -------------------- | 743| [DataBlob](#datablob) | 表示X509证书签名数据 | 744 745**错误码:** 746 747| 错误码ID | 错误信息 | 748| -------- | ------------------------------------------------- | 749| 19020001 | memory error. | 750| 19020002 | runtime error. | 751| 19030001 | crypto operation error.| 752 753**示例:** 754 755```js 756import cryptoCert from '@ohos.security.cert'; 757 758// 证书二进制数据,需业务自行赋值 759let encodingData = null; 760let encodingBlob = { 761 data: encodingData, 762 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 763 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 764}; 765cryptoCert.createX509Cert(encodingBlob, function (error, x509Cert) { 766 if (error != null) { 767 console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); 768 } else { 769 console.log("createX509Cert success"); 770 let signature = x509Cert.getSignature(); 771 } 772}); 773``` 774 775### getSignatureAlgName 776 777getSignatureAlgName() : string 778 779表示获取X509证书签名算法名称。 780 781**系统能力:** SystemCapability.Security.Cert 782 783**返回值**: 784 785| 类型 | 说明 | 786| ------ | ------------------------ | 787| string | 表示X509证书签名算法名称 | 788 789**错误码:** 790 791| 错误码ID | 错误信息 | 792| -------- | ------------------------------------------------- | 793| 19020001 | memory error. | 794| 19020002 | runtime error. | 795| 19030001 | crypto operation error.| 796 797**示例:** 798 799```js 800import cryptoCert from '@ohos.security.cert'; 801 802// 证书二进制数据,需业务自行赋值 803let encodingData = null; 804let encodingBlob = { 805 data: encodingData, 806 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 807 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 808}; 809cryptoCert.createX509Cert(encodingBlob, function (error, x509Cert) { 810 if (error != null) { 811 console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); 812 } else { 813 console.log("createX509Cert success"); 814 let sigAlgName = x509Cert.getSignatureAlgName(); 815 } 816}); 817``` 818 819### getSignatureAlgOid 820 821getSignatureAlgOid() : string 822 823表示获取X509证书签名算法的对象标志符OID(Object Identifier)。OID是由国际标准组织(ISO)的名称注册机构分配。 824 825**系统能力:** SystemCapability.Security.Cert 826 827**返回值**: 828 829| 类型 | 说明 | 830| ------ | --------------------------------- | 831| string | 表示X509证书签名算法对象标志符OID | 832 833**错误码:** 834 835| 错误码ID | 错误信息 | 836| -------- | ------------------------------------------------- | 837| 19020001 | memory error. | 838| 19020002 | runtime error. | 839| 19030001 | crypto operation error.| 840 841**示例:** 842 843```js 844import cryptoCert from '@ohos.security.cert'; 845 846// 证书二进制数据,需业务自行赋值 847let encodingData = null; 848let encodingBlob = { 849 data: encodingData, 850 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 851 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 852}; 853cryptoCert.createX509Cert(encodingBlob, function (error, x509Cert) { 854 if (error != null) { 855 console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); 856 } else { 857 console.log("createX509Cert success"); 858 let sigAlgOid = x509Cert.getSignatureAlgOid(); 859 } 860}); 861``` 862 863### getSignatureAlgParams 864 865getSignatureAlgParams() : DataBlob 866 867表示获取X509证书签名算法参数。 868 869**系统能力:** SystemCapability.Security.Cert 870 871**返回值**: 872 873| 类型 | 说明 | 874| --------------------- | ------------------------ | 875| [DataBlob](#datablob) | 表示X509证书签名算法参数 | 876 877**错误码:** 878 879| 错误码ID | 错误信息 | 880| -------- | ------------------------------------------------- | 881| 19020001 | memory error. | 882| 19020002 | runtime error. | 883| 19030001 | crypto operation error.| 884 885**示例:** 886 887```js 888import cryptoCert from '@ohos.security.cert'; 889 890// 证书二进制数据,需业务自行赋值 891let encodingData = null; 892let encodingBlob = { 893 data: encodingData, 894 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 895 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 896}; 897cryptoCert.createX509Cert(encodingBlob, function (error, x509Cert) { 898 if (error != null) { 899 console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); 900 } else { 901 console.log("createX509Cert success"); 902 let sigAlgParams = x509Cert.getSignatureAlgParams(); 903 } 904}); 905``` 906 907### getKeyUsage 908 909getKeyUsage() : DataBlob 910 911表示获取X509证书秘钥用途。 912 913**系统能力:** SystemCapability.Security.Cert 914 915**返回值**: 916 917| 类型 | 说明 | 918| --------------------- | -------------------- | 919| [DataBlob](#datablob) | 表示X509证书秘钥用途 | 920 921**错误码:** 922 923| 错误码ID | 错误信息 | 924| -------- | ------------------------------------------------- | 925| 19020001 | memory error. | 926| 19030001 | crypto operation error.| 927 928**示例:** 929 930```js 931import cryptoCert from '@ohos.security.cert'; 932 933// 证书二进制数据,需业务自行赋值 934let encodingData = null; 935let encodingBlob = { 936 data: encodingData, 937 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 938 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 939}; 940cryptoCert.createX509Cert(encodingBlob, function (error, x509Cert) { 941 if (error != null) { 942 console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); 943 } else { 944 console.log("createX509Cert success"); 945 let keyUsage = x509Cert.getKeyUsage(); 946 } 947}); 948``` 949 950### getExtKeyUsage 951 952getExtKeyUsage() : DataArray 953 954表示获取X509证书扩展秘钥用途。 955 956**系统能力:** SystemCapability.Security.Cert 957 958**返回值**: 959 960| 类型 | 说明 | 961| ----------------------- | ------------------------ | 962| [DataArray](#dataarray) | 表示X509证书扩展秘钥用途 | 963 964**错误码:** 965 966| 错误码ID | 错误信息 | 967| -------- | ------------------------------------------------- | 968| 19020001 | memory error. | 969| 19020002 | runtime error. | 970| 19030001 | crypto operation error.| 971 972**示例:** 973 974```js 975import cryptoCert from '@ohos.security.cert'; 976 977// 证书二进制数据,需业务自行赋值 978let encodingData = null; 979let encodingBlob = { 980 data: encodingData, 981 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 982 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 983}; 984cryptoCert.createX509Cert(encodingBlob, function (error, x509Cert) { 985 if (error != null) { 986 console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); 987 } else { 988 console.log("createX509Cert success"); 989 let extKeyUsage = x509Cert.getExtKeyUsage(); 990 } 991}); 992``` 993 994### getBasicConstraints 995 996getBasicConstraints() : number 997 998表示获取X509证书基本约束。 999 1000**系统能力:** SystemCapability.Security.Cert 1001 1002**返回值**: 1003 1004| 类型 | 说明 | 1005| ------ | -------------------- | 1006| number | 表示X509证书基本约束 | 1007 1008**示例:** 1009 1010```js 1011import cryptoCert from '@ohos.security.cert'; 1012 1013// 证书二进制数据,需业务自行赋值 1014let encodingData = null; 1015let encodingBlob = { 1016 data: encodingData, 1017 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 1018 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 1019}; 1020cryptoCert.createX509Cert(encodingBlob, function (error, x509Cert) { 1021 if (error != null) { 1022 console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); 1023 } else { 1024 console.log("createX509Cert success"); 1025 let basicConstraints = x509Cert.getBasicConstraints(); 1026 } 1027}); 1028``` 1029 1030### getSubjectAltNames 1031 1032getSubjectAltNames() : DataArray 1033 1034表示获取X509证书主体可选名称。 1035 1036**系统能力:** SystemCapability.Security.Cert 1037 1038**返回值**: 1039 1040| 类型 | 说明 | 1041| ----------------------- | ------------------------ | 1042| [DataArray](#dataarray) | 表示X509证书主体可选名称 | 1043 1044**错误码:** 1045 1046| 错误码ID | 错误信息 | 1047| -------- | ------------------------------------------------- | 1048| 19020001 | memory error. | 1049| 19020002 | runtime error. | 1050| 19030001 | crypto operation error.| 1051 1052**示例:** 1053 1054```js 1055import cryptoCert from '@ohos.security.cert'; 1056 1057// 证书二进制数据,需业务自行赋值 1058let encodingData = null; 1059let encodingBlob = { 1060 data: encodingData, 1061 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 1062 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 1063}; 1064cryptoCert.createX509Cert(encodingBlob, function (error, x509Cert) { 1065 if (error != null) { 1066 console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); 1067 } else { 1068 console.log("createX509Cert success"); 1069 let subjectAltNames = x509Cert.getSubjectAltNames(); 1070 } 1071}); 1072``` 1073 1074### getIssuerAltNames 1075 1076getIssuerAltNames() : DataArray 1077 1078表示获取X509证书颁发者可选名称。 1079 1080**系统能力:** SystemCapability.Security.Cert 1081 1082**返回值**: 1083 1084| 类型 | 说明 | 1085| ----------------------- | -------------------------- | 1086| [DataArray](#dataarray) | 表示X509证书颁发者可选名称 | 1087 1088**错误码:** 1089 1090| 错误码ID | 错误信息 | 1091| -------- | ------------------------------------------------- | 1092| 19020001 | memory error. | 1093| 19020002 | runtime error. | 1094| 19030001 | crypto operation error.| 1095 1096**示例:** 1097 1098```js 1099import cryptoCert from '@ohos.security.cert'; 1100 1101// 证书二进制数据,需业务自行赋值 1102let encodingData = null; 1103let encodingBlob = { 1104 data: encodingData, 1105 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 1106 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 1107}; 1108cryptoCert.createX509Cert(encodingBlob, function (error, x509Cert) { 1109 if (error != null) { 1110 console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); 1111 } else { 1112 console.log("createX509Cert success"); 1113 let issuerAltNames = x509Cert.getIssuerAltNames(); 1114 } 1115}); 1116``` 1117 1118## cryptoCert.createX509Crl 1119 1120createX509Crl(inStream : EncodingBlob, callback : AsyncCallback\<X509Crl>) : void 1121 1122表示创建X509证书吊销列表的对象。 1123 1124**系统能力:** SystemCapability.Security.Cert 1125 1126**参数**: 1127 1128| 参数名 | 类型 | 必填 | 说明 | 1129| -------- | ----------------------------- | ---- | ------------------------------ | 1130| inStream | [EncodingBlob](#encodingblob) | 是 | 表示证书吊销列表序列化数据 | 1131| callback | AsyncCallback\<X509Crl> | 是 | 回调函数。表示证书吊销列表对象 | 1132 1133**错误码:** 1134 1135| 错误码ID | 错误信息 | 1136| -------- | ------------- | 1137| 19020001 | memory error. | 1138 1139**示例:** 1140 1141```js 1142import cryptoCert from '@ohos.security.cert'; 1143 1144// 证书吊销列表二进制数据,需业务自行赋值 1145let encodingData = null; 1146let encodingBlob = { 1147 data: encodingData, 1148 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 1149 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 1150}; 1151cryptoCert.createX509Crl(encodingBlob, function (error, x509Crl) { 1152 if (error != null) { 1153 console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); 1154 } else { 1155 console.log("createX509Crl success"); 1156 } 1157}); 1158``` 1159 1160## cryptoCert.createX509Crl 1161 1162createX509Crl(inStream : EncodingBlob) : Promise\<X509Crl> 1163 1164表示创建X509证书吊销列表的对象。 1165 1166**系统能力:** SystemCapability.Security.Cert 1167 1168**参数**: 1169 1170| 参数名 | 类型 | 必填 | 说明 | 1171| -------- | ----------------------------- | ---- | -------------------------- | 1172| inStream | [EncodingBlob](#encodingblob) | 是 | 表示证书吊销列表序列化数据 | 1173 1174**返回值**: 1175 1176| 类型 | 说明 | 1177| ----------------- | -------------------- | 1178| Promise\<X509Crl> | 表示证书吊销列表对象 | 1179 1180**错误码:** 1181 1182| 错误码ID | 错误信息 | 1183| -------- | ------------- | 1184| 19020001 | memory error. | 1185 1186**示例:** 1187 1188```js 1189import cryptoCert from '@ohos.security.cert'; 1190 1191// 证书吊销列表二进制数据,需业务自行赋值 1192let encodingData = null; 1193let encodingBlob = { 1194 data: encodingData, 1195 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 1196 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 1197}; 1198cryptoCert.createX509Crl(encodingBlob).then(x509Crl => { 1199 console.log("createX509Crl success"); 1200}, error => { 1201 console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); 1202}); 1203``` 1204 1205## X509Crl 1206 1207X509证书吊销列表对象。 1208 1209### isRevoked 1210 1211isRevoked(cert : X509Cert) : boolean 1212 1213表示检查证书是否吊销。 1214 1215**系统能力:** SystemCapability.Security.Cert 1216 1217**参数**: 1218 1219| 参数名 | 类型 | 必填 | 说明 | 1220| ------ | -------- | ---- | -------------------- | 1221| cert | X509Cert | 是 | 表示被检查的证书对象 | 1222 1223**返回值**: 1224 1225| 类型 | 说明 | 1226| --------- | --------------------------------------------- | 1227| boolean | 表示证书吊销状态,true表示已吊销,false表示未吊销 | 1228 1229**示例:** 1230 1231```js 1232import cryptoCert from '@ohos.security.cert'; 1233 1234// 证书吊销列表二进制数据,需业务自行赋值 1235let encodingData = null; 1236let encodingBlob = { 1237 data: encodingData, 1238 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 1239 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 1240}; 1241cryptoCert.createX509Crl(encodingBlob, function (error, x509Crl) { 1242 if (error != null) { 1243 console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); 1244 } else { 1245 console.log("createX509Crl success"); 1246 // 业务需自行生成X509Cert证书对象 1247 let x509Cert = null; 1248 try { 1249 let revokedFlag = x509Crl.isRevoked(x509Cert); 1250 } catch (error) { 1251 console.log("isRevoked failed, errCode: " + error.code + ", errMsg: " + error.message); 1252 } 1253 } 1254}); 1255``` 1256 1257### getType 1258 1259getType() : string 1260 1261表示获取证书吊销列表类型。 1262 1263**系统能力:** SystemCapability.Security.Cert 1264 1265**返回值**: 1266 1267| 类型 | 说明 | 1268| ------ | -------------------- | 1269| string | 表示证书吊销列表类型 | 1270 1271**示例:** 1272 1273```js 1274import cryptoCert from '@ohos.security.cert'; 1275 1276// 证书吊销列表二进制数据,需业务自行赋值 1277let encodingData = null; 1278let encodingBlob = { 1279 data: encodingData, 1280 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 1281 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 1282}; 1283cryptoCert.createX509Crl(encodingBlob, function (error, x509Crl) { 1284 if (error != null) { 1285 console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); 1286 } else { 1287 console.log("createX509Crl success"); 1288 let type = x509Crl.getType(); 1289 } 1290}); 1291``` 1292 1293### getEncoded 1294 1295getEncoded(callback : AsyncCallback\<EncodingBlob>) : void 1296 1297表示获取X509证书吊销列表的序列化数据。 1298 1299**系统能力:** SystemCapability.Security.Cert 1300 1301**参数**: 1302 1303| 参数名 | 类型 | 必填 | 说明 | 1304| -------- | ---------------------------- | ---- | ------------------------------------------ | 1305| callback | AsyncCallback\<EncodingBlob> | 是 | 回调函数,表示X509证书吊销列表的序列化数据 | 1306 1307**错误码:** 1308 1309| 错误码ID | 错误信息 | 1310| -------- | ----------------------- | 1311| 19020001 | memory error. | 1312| 19020002 | runtime error. | 1313| 19030001 | crypto operation error. | 1314 1315**示例:** 1316 1317```js 1318import cryptoCert from '@ohos.security.cert'; 1319 1320// 证书吊销列表二进制数据,需业务自行赋值 1321let encodingData = null; 1322let encodingBlob = { 1323 data: encodingData, 1324 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 1325 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 1326}; 1327cryptoCert.createX509Crl(encodingBlob, function (error, x509Crl) { 1328 if (error != null) { 1329 console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); 1330 } else { 1331 console.log("createX509Crl success"); 1332 x509Crl.getEncoded(function (error, data) { 1333 if (error != null) { 1334 console.log("getEncoded failed, errCode: " + error.code + ", errMsg: " + error.message); 1335 } else { 1336 console.log("getEncoded success"); 1337 } 1338 }); 1339 } 1340}); 1341``` 1342 1343### getEncoded 1344 1345getEncoded() : Promise\<EncodingBlob> 1346 1347表示获取X509证书吊销列表的序列化数据。 1348 1349**系统能力:** SystemCapability.Security.Cert 1350 1351**返回值**: 1352 1353| 类型 | 说明 | 1354| ---------------------- | -------------------------------- | 1355| Promise\<EncodingBlob> | 表示X509证书吊销列表的序列化数据 | 1356 1357**错误码:** 1358 1359| 错误码ID | 错误信息 | 1360| -------- | ----------------------- | 1361| 19020001 | memory error. | 1362| 19020002 | runtime error. | 1363| 19030001 | crypto operation error. | 1364 1365**示例:** 1366 1367```js 1368import cryptoCert from '@ohos.security.cert'; 1369 1370// 证书吊销列表二进制数据,需业务自行赋值 1371let encodingData = null; 1372let encodingBlob = { 1373 data: encodingData, 1374 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 1375 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 1376}; 1377cryptoCert.createX509Crl(encodingBlob).then(x509Crl => { 1378 console.log("createX509Crl success"); 1379 x509Crl.getEncoded().then(result => { 1380 console.log("getEncoded success"); 1381 }, error => { 1382 console.log("getEncoded failed, errCode: " + error.code + ", errMsg: " + error.message); 1383 }); 1384}, error => { 1385 console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); 1386}); 1387``` 1388 1389### verify 1390 1391verify(key : cryptoFramework.PubKey, callback : AsyncCallback\<void>) : void 1392 1393表示对X509证书吊销列表进行验签。验签支持RSA算法。 1394 1395**系统能力:** SystemCapability.Security.Cert 1396 1397**参数**: 1398 1399| 参数名 | 类型 | 必填 | 说明 | 1400| -------- | -------------------- | ---- | ------------------------------------------------------------ | 1401| key | cryptoFramework.PubKey | 是 | 表示用于验签的公钥对象 | 1402| callback | AsyncCallback\<void> | 是 | 回调函数,使用AsyncCallback的第一个error参数判断是否验签成功,error为null表示成功,error不为null表示失败。 | 1403 1404**错误码:** 1405 1406| 错误码ID | 错误信息 | 1407| -------- | ----------------------- | 1408| 19030001 | crypto operation error. | 1409 1410**示例:** 1411 1412```js 1413import cryptoCert from '@ohos.security.cert'; 1414import cryptoFramework from "@ohos.security.cryptoFramework" 1415 1416// 证书吊销列表二进制数据,需业务自行赋值 1417let encodingData = null; 1418let encodingBlob = { 1419 data: encodingData, 1420 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 1421 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 1422}; 1423cryptoCert.createX509Crl(encodingBlob, function (error, x509Crl) { 1424 if (error != null) { 1425 console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); 1426 } else { 1427 console.log("createX509Crl success"); 1428 // 业务需通过AsyKeyGenerator生成PubKey 1429 let pubKey = null; 1430 x509Crl.verify(pubKey, function (error, data) { 1431 if (error != null) { 1432 console.log("verify failed, errCode: " + error.code + ", errMsg: " + error.message); 1433 } else { 1434 console.log("verify success"); 1435 } 1436 }); 1437 } 1438}); 1439``` 1440 1441### verify 1442 1443verify(key : cryptoFramework.PubKey) : Promise\<void> 1444 1445表示对X509证书吊销列表进行验签。验签支持RSA算法。 1446 1447**系统能力:** SystemCapability.Security.Cert 1448 1449**参数**: 1450 1451| 参数名 | 类型 | 必填 | 说明 | 1452| ------ | ------ | ---- | ---------------------- | 1453| key | cryptoFramework.PubKey | 是 | 表示用于验签的公钥对象。 | 1454 1455**返回值**: 1456 1457| 类型 | 说明 | 1458| ---- | ------------------------------------------------------------ | 1459| Promise\<void> | Promise对象 | 1460 1461**错误码:** 1462 1463| 错误码ID | 错误信息 | 1464| -------- | ----------------------- | 1465| 19030001 | crypto operation error. | 1466 1467**示例:** 1468 1469```js 1470import cryptoCert from '@ohos.security.cert'; 1471import cryptoFramework from "@ohos.security.cryptoFramework" 1472 1473// 证书吊销列表二进制数据,需业务自行赋值 1474let encodingData = null; 1475let encodingBlob = { 1476 data: encodingData, 1477 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 1478 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 1479}; 1480cryptoCert.createX509Crl(encodingBlob).then(x509Crl => { 1481 console.log("createX509Crl success"); 1482 // 业务需通过AsyKeyGenerator生成PubKey 1483 let pubKey = null; 1484 x509Crl.verify(pubKey).then(result => { 1485 console.log("verify success"); 1486 }, error => { 1487 console.log("verify failed, errCode: " + error.code + ", errMsg: " + error.message); 1488 }); 1489}, error => { 1490 console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); 1491}); 1492``` 1493 1494### getVersion 1495 1496getVersion() : number 1497 1498表示获取X509证书吊销列表的版本号。 1499 1500**系统能力:** SystemCapability.Security.Cert 1501 1502**返回值**: 1503 1504| 类型 | 说明 | 1505| ------ | -------------------------------- | 1506| number | 表示获取X509证书吊销列表的版本号 | 1507 1508**示例:** 1509 1510```js 1511import cryptoCert from '@ohos.security.cert'; 1512 1513// 证书吊销列表二进制数据,需业务自行赋值 1514let encodingData = null; 1515let encodingBlob = { 1516 data: encodingData, 1517 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 1518 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 1519}; 1520cryptoCert.createX509Crl(encodingBlob, function (error, x509Crl) { 1521 if (error != null) { 1522 console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); 1523 } else { 1524 console.log("createX509Crl success"); 1525 let version = x509Crl.getVersion(); 1526 } 1527}); 1528``` 1529 1530### getIssuerName 1531 1532getIssuerName() : DataBlob 1533 1534表示获取X509证书吊销列表颁发者名称。 1535 1536**系统能力:** SystemCapability.Security.Cert 1537 1538**返回值**: 1539 1540| 类型 | 说明 | 1541| --------------------- | ------------------------------ | 1542| [DataBlob](#datablob) | 表示X509证书吊销列表颁发者名称 | 1543 1544**错误码:** 1545 1546| 错误码ID | 错误信息 | 1547| -------- | ----------------------- | 1548| 19020001 | memory error. | 1549| 19020002 | runtime error. | 1550| 19030001 | crypto operation error. | 1551 1552**示例:** 1553 1554```js 1555import cryptoCert from '@ohos.security.cert'; 1556 1557// 证书吊销列表二进制数据,需业务自行赋值 1558let encodingData = null; 1559let encodingBlob = { 1560 data: encodingData, 1561 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 1562 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 1563}; 1564cryptoCert.createX509Crl(encodingBlob, function (error, x509Crl) { 1565 if (error != null) { 1566 console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); 1567 } else { 1568 console.log("createX509Crl success"); 1569 let issuerName = x509Crl.getIssuerName(); 1570 } 1571}); 1572``` 1573 1574### getLastUpdate 1575 1576getLastUpdate() : string 1577 1578表示获取X509证书吊销列表最后一次更新日期。 1579 1580**系统能力:** SystemCapability.Security.Cert 1581 1582**返回值**: 1583 1584| 类型 | 说明 | 1585| ------ | ------------------------------------ | 1586| string | 表示X509证书吊销列表最后一次更新日期 | 1587 1588**错误码:** 1589 1590| 错误码ID | 错误信息 | 1591| -------- | ----------------------- | 1592| 19020001 | memory error. | 1593| 19020002 | runtime error. | 1594| 19030001 | crypto operation error. | 1595 1596**示例:** 1597 1598```js 1599import cryptoCert from '@ohos.security.cert'; 1600 1601// 证书吊销列表二进制数据,需业务自行赋值 1602let encodingData = null; 1603let encodingBlob = { 1604 data: encodingData, 1605 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 1606 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 1607}; 1608cryptoCert.createX509Crl(encodingBlob, function (error, x509Crl) { 1609 if (error != null) { 1610 console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); 1611 } else { 1612 console.log("createX509Crl success"); 1613 let lastUpdate = x509Crl.getLastUpdate(); 1614 } 1615}); 1616``` 1617 1618### getNextUpdate 1619 1620getNextUpdate() : string 1621 1622表示获取证书吊销列表下一次更新的日期。 1623 1624**系统能力:** SystemCapability.Security.Cert 1625 1626**返回值**: 1627 1628| 类型 | 说明 | 1629| ------ | ------------------------------------ | 1630| string | 表示X509证书吊销列表下一次更新的日期 | 1631 1632**错误码:** 1633 1634| 错误码ID | 错误信息 | 1635| -------- | ----------------------- | 1636| 19020001 | memory error. | 1637| 19020002 | runtime error. | 1638| 19030001 | crypto operation error. | 1639 1640**示例:** 1641 1642```js 1643import cryptoCert from '@ohos.security.cert'; 1644 1645// 证书吊销列表二进制数据,需业务自行赋值 1646let encodingData = null; 1647let encodingBlob = { 1648 data: encodingData, 1649 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 1650 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 1651}; 1652cryptoCert.createX509Crl(encodingBlob, function (error, x509Crl) { 1653 if (error != null) { 1654 console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); 1655 } else { 1656 console.log("createX509Crl success"); 1657 let nextUpdate = x509Crl.getNextUpdate(); 1658 } 1659}); 1660``` 1661 1662### getRevokedCert 1663 1664getRevokedCert(serialNumber : number) : X509CrlEntry 1665 1666表示通过指定证书序列号获取被吊销X509证书对象。 1667 1668**系统能力:** SystemCapability.Security.Cert 1669 1670**参数**: 1671 1672| 参数名 | 类型 | 必填 | 说明 | 1673| ------------ | ------ | ---- | -------------- | 1674| serialNumber | number | 是 | 表示证书序列号 | 1675 1676**返回值**: 1677 1678| 类型 | 说明 | 1679| ---------------------- | --------------------- | 1680| X509CrlEntry | 表示被吊销X509证书对象 | 1681 1682**错误码:** 1683 1684| 错误码ID | 错误信息 | 1685| -------- | ----------------------- | 1686| 19020001 | memory error. | 1687| 19030001 | crypto operation error. | 1688 1689**示例:** 1690 1691```js 1692import cryptoCert from '@ohos.security.cert'; 1693 1694// 证书吊销列表二进制数据,需业务自行赋值 1695let encodingData = null; 1696let encodingBlob = { 1697 data: encodingData, 1698 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 1699 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 1700}; 1701cryptoCert.createX509Crl(encodingBlob, function (error, x509Crl) { 1702 if (error != null) { 1703 console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); 1704 } else { 1705 console.log("createX509Crl success"); 1706 // 业务需赋值为对应证书的序列号 1707 let serialNumber = 1000; 1708 try { 1709 let entry = x509Crl.getRevokedCert(serialNumber); 1710 } catch (error) { 1711 console.log("getRevokedCert failed, errCode: " + error.code + ", errMsg: " + error.message); 1712 } 1713 } 1714}); 1715``` 1716 1717### getRevokedCertWithCert 1718 1719getRevokedCertWithCert(cert : X509Cert) : X509CrlEntry 1720 1721表示通过指定证书对象获取被吊销X509证书对象。 1722 1723**系统能力:** SystemCapability.Security.Cert 1724 1725**参数**: 1726 1727| 参数名 | 类型 | 必填 | 说明 | 1728| ------ | -------- | ---- | ------------ | 1729| cert | X509Cert | 是 | 表示证书对象 | 1730 1731**返回值**: 1732 1733| 类型 | 说明 | 1734| ------------ | -------------------- | 1735| X509CrlEntry | 表示被吊销X509证书对象 | 1736 1737**错误码:** 1738 1739| 错误码ID | 错误信息 | 1740| -------- | ----------------------- | 1741| 19020001 | memory error. | 1742| 19030001 | crypto operation error. | 1743 1744**示例:** 1745 1746```js 1747import cryptoCert from '@ohos.security.cert'; 1748 1749// 证书吊销列表二进制数据,需业务自行赋值 1750let encodingData = null; 1751let encodingBlob = { 1752 data: encodingData, 1753 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 1754 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 1755}; 1756cryptoCert.createX509Crl(encodingBlob, function (error, x509Crl) { 1757 if (error != null) { 1758 console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); 1759 } else { 1760 console.log("createX509Crl success"); 1761 // 业务需自行生成X509Cert证书对象 1762 let x509Cert = null; 1763 try { 1764 let entry = x509Crl.getRevokedCertWithCert(x509Cert); 1765 } catch (error) { 1766 console.log("getRevokedCertWithCert failed, errCode: " + error.code + ", errMsg: " + error.message); 1767 } 1768 } 1769}); 1770``` 1771 1772### getRevokedCerts 1773 1774getRevokedCerts(callback : AsyncCallback<Array\<X509CrlEntry>>) : void 1775 1776表示获取被吊销X509证书列表。 1777 1778**系统能力:** SystemCapability.Security.Cert 1779 1780**参数**: 1781 1782| 参数名 | 类型 | 必填 | 说明 | 1783| -------- | ----------------------------------- | ---- | -------------------------------- | 1784| callback | AsyncCallback<Array\<X509CrlEntry>> | 是 | 回调函数。表示被吊销X509证书列表 | 1785 1786**错误码:** 1787 1788| 错误码ID | 错误信息 | 1789| -------- | ----------------------- | 1790| 19020001 | memory error. | 1791| 19030001 | crypto operation error. | 1792 1793**示例:** 1794 1795```js 1796import cryptoCert from '@ohos.security.cert'; 1797 1798// 证书吊销列表二进制数据,需业务自行赋值 1799let encodingData = null; 1800let encodingBlob = { 1801 data: encodingData, 1802 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 1803 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 1804}; 1805cryptoCert.createX509Crl(encodingBlob, function (error, x509Crl) { 1806 if (error != null) { 1807 console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); 1808 } else { 1809 console.log("createX509Crl success"); 1810 x509Crl.getRevokedCerts(function (error, array) { 1811 if (error != null) { 1812 console.log("getRevokedCerts failed, errCode: " + error.code + ", errMsg: " + error.message); 1813 } else { 1814 console.log("getRevokedCerts success"); 1815 } 1816 }); 1817 } 1818}); 1819``` 1820 1821### getRevokedCerts 1822 1823getRevokedCerts() : Promise<Array\<X509CrlEntry>> 1824 1825表示获取被吊销X509证书列表。 1826 1827**系统能力:** SystemCapability.Security.Cert 1828 1829**返回值**: 1830 1831| 类型 | 说明 | 1832| ----------------------------- | ---------------------- | 1833| Promise<Array\<X509CrlEntry>> | 表示被吊销X509证书列表 | 1834 1835**错误码:** 1836 1837| 错误码ID | 错误信息 | 1838| -------- | ----------------------- | 1839| 19020001 | memory error. | 1840| 19030001 | crypto operation error. | 1841 1842**示例:** 1843 1844```js 1845import cryptoCert from '@ohos.security.cert'; 1846 1847// 证书吊销列表二进制数据,需业务自行赋值 1848let encodingData = null; 1849let encodingBlob = { 1850 data: encodingData, 1851 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 1852 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 1853}; 1854cryptoCert.createX509Crl(encodingBlob).then(x509Crl => { 1855 console.log("createX509Crl success"); 1856 x509Crl.getRevokedCerts().then(array => { 1857 console.log("getRevokedCerts success"); 1858 }, error => { 1859 console.log("getRevokedCerts failed, errCode: " + error.code + ", errMsg: " + error.message); 1860 }); 1861}, error => { 1862 console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); 1863}); 1864``` 1865 1866### getTbsInfo 1867 1868getTbsInfo() : DataBlob 1869 1870表示获取证书吊销列表的tbsCertList信息。 1871 1872**系统能力:** SystemCapability.Security.Cert 1873 1874**返回值**: 1875 1876| 类型 | 说明 | 1877| --------------------- | ------------------------------- | 1878| [DataBlob](#datablob) | 表示证书吊销列表的tbsCertList信息 | 1879 1880**错误码:** 1881 1882| 错误码ID | 错误信息 | 1883| -------- | ----------------------- | 1884| 19020001 | memory error. | 1885| 19020002 | runtime error. | 1886| 19030001 | crypto operation error. | 1887 1888**示例:** 1889 1890```js 1891import cryptoCert from '@ohos.security.cert'; 1892 1893// 证书吊销列表二进制数据,需业务自行赋值 1894let encodingData = null; 1895let encodingBlob = { 1896 data: encodingData, 1897 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 1898 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 1899}; 1900cryptoCert.createX509Crl(encodingBlob, function (error, x509Crl) { 1901 if (error != null) { 1902 console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); 1903 } else { 1904 console.log("createX509Crl success"); 1905 try { 1906 let tbsInfo = x509Crl.getTbsInfo(); 1907 } catch (error) { 1908 console.log("getTbsInfo failed, errCode: " + error.code + ", errMsg: " + error.message); 1909 } 1910 } 1911}); 1912``` 1913 1914### getSignature 1915 1916getSignature() : DataBlob 1917 1918表示获取X509证书吊销列表的签名数据。 1919 1920**系统能力:** SystemCapability.Security.Cert 1921 1922**返回值**: 1923 1924| 类型 | 说明 | 1925| --------------------- | ------------------------------ | 1926| [DataBlob](#datablob) | 表示X509证书吊销列表的签名数据 | 1927 1928**错误码:** 1929 1930| 错误码ID | 错误信息 | 1931| -------- | ----------------------- | 1932| 19020001 | memory error. | 1933| 19020002 | runtime error. | 1934| 19030001 | crypto operation error. | 1935 1936**示例:** 1937 1938```js 1939import cryptoCert from '@ohos.security.cert'; 1940 1941// 证书吊销列表二进制数据,需业务自行赋值 1942let encodingData = null; 1943let encodingBlob = { 1944 data: encodingData, 1945 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 1946 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 1947}; 1948cryptoCert.createX509Crl(encodingBlob, function (error, x509Crl) { 1949 if (error != null) { 1950 console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); 1951 } else { 1952 console.log("createX509Crl success"); 1953 let signature = x509Crl.getSignature(); 1954 } 1955}); 1956``` 1957 1958### getSignatureAlgName 1959 1960getSignatureAlgName() : string 1961 1962表示获取X509证书吊销列表签名的算法名称。 1963 1964**系统能力:** SystemCapability.Security.Cert 1965 1966**返回值**: 1967 1968| 类型 | 说明 | 1969| ------ | -------------------------------- | 1970| string | 表示X509证书吊销列表签名的算法名 | 1971 1972**错误码:** 1973 1974| 错误码ID | 错误信息 | 1975| -------- | ----------------------- | 1976| 19020001 | memory error. | 1977| 19020002 | runtime error. | 1978| 19030001 | crypto operation error. | 1979 1980**示例:** 1981 1982```js 1983import cryptoCert from '@ohos.security.cert'; 1984 1985// 证书吊销列表二进制数据,需业务自行赋值 1986let encodingData = null; 1987let encodingBlob = { 1988 data: encodingData, 1989 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 1990 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 1991}; 1992cryptoCert.createX509Crl(encodingBlob, function (error, x509Crl) { 1993 if (error != null) { 1994 console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); 1995 } else { 1996 console.log("createX509Crl success"); 1997 let sigAlgName = x509Crl.getSignatureAlgName(); 1998 } 1999}); 2000``` 2001 2002### getSignatureAlgOid 2003 2004getSignatureAlgOid() : string 2005 2006表示获取X509证书吊销列表签名算法的对象标志符OID(Object Identifier)。OID是由国际标准组织(ISO)的名称注册机构分配。 2007 2008**系统能力:** SystemCapability.Security.Cert 2009 2010**返回值**: 2011 2012| 类型 | 说明 | 2013| ------ | --------------------------------------------- | 2014| string | 表示X509证书吊销列表签名算法的对象标志符OID。 | 2015 2016**错误码:** 2017 2018| 错误码ID | 错误信息 | 2019| -------- | ----------------------- | 2020| 19020001 | memory error. | 2021| 19020002 | runtime error. | 2022| 19030001 | crypto operation error. | 2023 2024**示例:** 2025 2026```js 2027import cryptoCert from '@ohos.security.cert'; 2028 2029// 证书吊销列表二进制数据,需业务自行赋值 2030let encodingData = null; 2031let encodingBlob = { 2032 data: encodingData, 2033 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 2034 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 2035}; 2036cryptoCert.createX509Crl(encodingBlob, function (error, x509Crl) { 2037 if (error != null) { 2038 console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); 2039 } else { 2040 console.log("createX509Crl success"); 2041 let sigAlgOid = x509Crl.getSignatureAlgOid(); 2042 } 2043}); 2044``` 2045 2046### getSignatureAlgParams 2047 2048getSignatureAlgParams() : DataBlob 2049 2050表示获取X509证书吊销列表签名的算法参数。 2051 2052**系统能力:** SystemCapability.Security.Cert 2053 2054**返回值**: 2055 2056| 类型 | 说明 | 2057| --------------------- | ---------------------------------- | 2058| [DataBlob](#datablob) | 表示X509证书吊销列表签名的算法参数 | 2059 2060**错误码:** 2061 2062| 错误码ID | 错误信息 | 2063| -------- | ----------------------- | 2064| 19020001 | memory error. | 2065| 19020002 | runtime error. | 2066| 19030001 | crypto operation error. | 2067 2068**示例:** 2069 2070```js 2071import cryptoCert from '@ohos.security.cert'; 2072 2073// 证书吊销列表二进制数据,需业务自行赋值 2074let encodingData = null; 2075let encodingBlob = { 2076 data: encodingData, 2077 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 2078 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 2079}; 2080cryptoCert.createX509Crl(encodingBlob, function (error, x509Crl) { 2081 if (error != null) { 2082 console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); 2083 } else { 2084 console.log("createX509Crl success"); 2085 let sigAlgParams = x509Crl.getSignatureAlgParams(); 2086 } 2087}); 2088``` 2089 2090## cryptoCert.createCertChainValidator 2091 2092createCertChainValidator(algorithm :string) : CertChainValidator 2093 2094表示创建证书链校验器对象。 2095 2096**系统能力:** SystemCapability.Security.Cert 2097 2098**参数**: 2099 2100| 参数名 | 类型 | 必填 | 说明 | 2101| --------- | ------ | ---- | ------------------------------------------ | 2102| algorithm | string | 是 | 表示证书链校验器算法。当前仅支持输入“PKIX” | 2103 2104**返回值**: 2105 2106| 类型 | 说明 | 2107| ------------------ | -------------------- | 2108| CertChainValidator | 表示证书链校验器对象 | 2109 2110**错误码:** 2111 2112| 错误码ID | 错误信息 | 2113| -------- | ----------------------- | 2114| 19020001 | memory error. | 2115| 19020002 | runtime error. | 2116| 19030001 | crypto operation error. | 2117 2118**示例:** 2119 2120```js 2121import cryptoCert from '@ohos.security.cert'; 2122 2123let validator = cryptoCert.createCertChainValidator("PKIX"); 2124``` 2125 2126## CertChainValidator 2127 2128证书链校验器对象。 2129 2130 2131### 属性 2132 2133**系统能力:** SystemCapability.Security.Cert 2134 2135| 名称 | 类型 | 可读 | 可写 | 说明 | 2136| ------- | ------ | ---- | ---- | -------------------------- | 2137| algorithm | string | 是 | 否 | X509证书链校验器算法名称。 | 2138 2139 2140### validate 2141 2142validate(certChain : CertChainData, callback : AsyncCallback\<void>) : void 2143 2144表示校验X509证书链。 2145由于端侧系统时间不可信,证书链校验不包含对证书有效时间的校验。如果需要检查证书的时间有效性,可使用X509证书的[checkValidityWithDate](#checkvaliditywithdate)方法进行检查。详见[证书规格](../../security/cert-overview.md#证书规格) 2146 2147**系统能力:** SystemCapability.Security.Cert 2148 2149**参数**: 2150 2151| 参数名 | 类型 | 必填 | 说明 | 2152| --------- | ------------------------------- | ---- | ------------------------------------------------------------ | 2153| certChain | [CertChainData](#certchaindata) | 是 | 表示X509证书链序列化数据 | 2154| callback | AsyncCallback\<void> | 是 | 回调函数。使用AsyncCallback的第一个error参数判断是否校验成功,error为null表示成功,error不为null表示失败 | 2155 2156**错误码:** 2157 2158| 错误码ID | 错误信息 | 2159| -------- | ------------------------------------------------- | 2160| 19020001 | memory error. | 2161| 19020002 | runtime error. | 2162| 19030001 | crypto operation error. | 2163| 19030002 | the certificate signature verification failed. | 2164| 19030003 | the certificate has not taken effect. | 2165| 19030004 | the certificate has expired. | 2166| 19030005 | failed to obtain the certificate issuer. | 2167| 19030006 | the key cannot be used for signing a certificate. | 2168| 19030007 | the key cannot be used for digital signature. | 2169 2170**示例:** 2171 2172```js 2173import cryptoCert from '@ohos.security.cert'; 2174 2175let validator = cryptoCert.createCertChainValidator("PKIX"); 2176// 证书链二进制数据,需业务自行赋值 2177let encodingData = null; 2178// 证书链包含的证书个数,需业务自行赋值 2179let certCount = 2; 2180let certChainData = { 2181 data: encodingData, 2182 count: certCount, 2183 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 2184 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 2185}; 2186validator.validate(certChainData, function (error, data) { 2187 if (error != null) { 2188 console.log("validate failed, errCode: " + error.code + ", errMsg: " + error.message); 2189 } else { 2190 console.log("validate success"); 2191 } 2192}); 2193``` 2194 2195### validate 2196 2197validate(certChain : CertChainData) : Promise\<void> 2198 2199表示校验X509证书链。 2200由于端侧系统时间不可信,证书链校验不包含对证书有效时间的校验。如果需要检查证书的时间有效性,可使用X509证书的[checkValidityWithDate](#checkvaliditywithdate)方法进行检查。详见[证书规格](../../security/cert-overview.md#证书规格) 2201 2202**系统能力:** SystemCapability.Security.Cert 2203 2204**参数**: 2205 2206| 参数名 | 类型 | 必填 | 说明 | 2207| --------- | ------------------------------- | ---- | -------------------------- | 2208| certChain | [CertChainData](#certchaindata) | 是 | 表示X509证书链序列化数据。 | 2209 2210**返回值**: 2211 2212| 类型 | 说明 | 2213| -------------- | ----------- | 2214| Promise\<void> | Promise对象 | 2215 2216**错误码:** 2217 2218| 错误码ID | 错误信息 | 2219| -------- | ------------------------------------------------- | 2220| 19020001 | memory error. | 2221| 19020002 | runtime error. | 2222| 19030001 | crypto operation error. | 2223| 19030002 | the certificate signature verification failed. | 2224| 19030003 | the certificate has not taken effect. | 2225| 19030004 | the certificate has expired. | 2226| 19030005 | failed to obtain the certificate issuer. | 2227| 19030006 | the key cannot be used for signing a certificate. | 2228| 19030007 | the key cannot be used for digital signature. | 2229 2230**示例:** 2231 2232```js 2233import cryptoCert from '@ohos.security.cert'; 2234 2235let validator = cryptoCert.createCertChainValidator("PKIX"); 2236// 证书链二进制数据,需业务自行赋值 2237let encodingData = null; 2238// 证书链包含的证书个数,需业务自行赋值 2239let certCount = 2; 2240let certChainData = { 2241 data: encodingData, 2242 count: certCount, 2243 // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER 2244 encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM 2245}; 2246validator.validate(certChainData).then(result => { 2247 console.log("validate success"); 2248}, error => { 2249 console.log("validate failed, errCode: " + error.code + ", errMsg: " + error.message); 2250}); 2251``` 2252 2253### algorithm 2254 2255algorithm : string 2256 2257表示X509证书链校验器算法名称。 2258 2259**系统能力:** SystemCapability.Security.Cert 2260 2261**返回值**: 2262 2263| 类型 | 说明 | 2264| ------ | ------------------------ | 2265| string | 表示证书链校验器算法名称 | 2266 2267**示例:** 2268 2269```js 2270import cryptoCert from '@ohos.security.cert'; 2271 2272let validator = cryptoCert.createCertChainValidator("PKIX"); 2273let algorithm = validator.algorithm; 2274``` 2275 2276## X509CrlEntry 2277 2278被吊销证书对象。 2279 2280### getEncoded 2281 2282getEncoded(callback : AsyncCallback\<EncodingBlob>) : void 2283 2284表示获取被吊销证书的序列化数据。 2285 2286**系统能力:** SystemCapability.Security.Cert 2287 2288**参数**: 2289 2290| 参数名 | 类型 | 必填 | 说明 | 2291| -------- | --------------------------------------------- | ---- | ------------------------------------ | 2292| callback | AsyncCallback\<[EncodingBlob](#encodingblob)> | 是 | 回调函数。表示被吊销证书的序列化数据 | 2293 2294**错误码:** 2295 2296| 错误码ID | 错误信息 | 2297| -------- | ----------------------- | 2298| 19020001 | memory error. | 2299| 19020002 | runtime error. | 2300| 19030001 | crypto operation error. | 2301 2302**示例:** 2303 2304```js 2305import cryptoCert from '@ohos.security.cert'; 2306 2307// 业务需通过X509Crl的getRevokedCert相关方法获取X509CrlEntry 2308let x509CrlEntry = null; 2309x509CrlEntry.getEncoded(function (error, data) { 2310 if (error != null) { 2311 console.log("getEncoded failed, errCode: " + error.code + ", errMsg: " + error.message); 2312 } else { 2313 console.log("getEncoded success"); 2314 } 2315}); 2316``` 2317 2318### getEncoded 2319 2320getEncoded() : Promise\<EncodingBlob> 2321 2322表示获取被吊销证书的序列化数据。 2323 2324**系统能力:** SystemCapability.Security.Cert 2325 2326**返回值**: 2327 2328| 类型 | 说明 | 2329| --------------------------------------- | -------------------------- | 2330| Promise\<[EncodingBlob](#encodingblob)> | 表示被吊销证书的序列化数据 | 2331 2332**错误码:** 2333 2334| 错误码ID | 错误信息 | 2335| -------- | ----------------------- | 2336| 19020001 | memory error. | 2337| 19020002 | runtime error. | 2338| 19030001 | crypto operation error. | 2339 2340**示例:** 2341 2342```js 2343import cryptoCert from '@ohos.security.cert'; 2344 2345// 业务需通过X509Crl的getRevokedCert相关方法获取X509CrlEntry 2346let x509CrlEntry = null; 2347x509CrlEntry.getEncoded().then(result => { 2348 console.log("getEncoded success"); 2349}, error => { 2350 console.log("getEncoded failed, errCode: " + error.code + ", errMsg: " + error.message); 2351}); 2352``` 2353 2354### getSerialNumber 2355 2356getSerialNumber() : number 2357 2358表示获取被吊销证书的序列号。 2359 2360**系统能力:** SystemCapability.Security.Cert 2361 2362**返回值**: 2363 2364| 类型 | 说明 | 2365| ------ | ---------------------- | 2366| number | 表示被吊销证书的序列号 | 2367 2368**示例:** 2369 2370```js 2371import cryptoCert from '@ohos.security.cert'; 2372 2373// 业务需通过X509Crl的getRevokedCert相关方法获取X509CrlEntry 2374let x509CrlEntry = null; 2375let serialNumber = x509CrlEntry.getSerialNumber(); 2376``` 2377 2378### getCertIssuer 2379 2380getCertIssuer() : DataBlob 2381 2382表示获取被吊销证书的颁发者信息。 2383 2384**系统能力:** SystemCapability.Security.Cert 2385 2386**返回值**: 2387 2388| 类型 | 说明 | 2389| --------------------- | ----------------------- | 2390| [DataBlob](#datablob) | 表示被吊销证书的颁发者信息 | 2391 2392**错误码:** 2393 2394| 错误码ID | 错误信息 | 2395| -------- | -------------- | 2396| 19020001 | memory error. | 2397| 19020002 | runtime error. | 2398 2399**示例:** 2400 2401```js 2402import cryptoCert from '@ohos.security.cert'; 2403 2404// 业务需通过X509Crl的getRevokedCert相关方法获取X509CrlEntry 2405let x509CrlEntry = null; 2406try { 2407 let issuer = x509CrlEntry.getCertIssuer(); 2408} catch (error) { 2409 console.log("getCertIssuer failed, errCode: " + error.code + ", errMsg: " + error.message); 2410} 2411``` 2412 2413### getRevocationDate 2414 2415getRevocationDate() : string 2416 2417表示获取证书被吊销的日期。 2418 2419**系统能力:** SystemCapability.Security.Cert 2420 2421**返回值**: 2422 2423| 类型 | 说明 | 2424| ------ | ------------------ | 2425| string | 表示证书被吊销的日期 | 2426 2427**错误码:** 2428 2429| 错误码ID | 错误信息 | 2430| -------- | ----------------------- | 2431| 19020001 | memory error. | 2432| 19020002 | runtime error. | 2433| 19030001 | crypto operation error. | 2434 2435**示例:** 2436 2437```js 2438import cryptoCert from '@ohos.security.cert'; 2439 2440// 业务需通过X509Crl的getRevokedCert相关方法获取X509CrlEntry 2441let x509CrlEntry = null; 2442try { 2443 let date = x509CrlEntry.getRevocationDate(); 2444} catch (error) { 2445 console.log("getRevocationDate failed, errCode: " + error.code + ", errMsg: " + error.message); 2446} 2447``` 2448