• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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