1# 证书管理对话框开发指导 2 3> **说明** 4> 5> 本开发指导需使用API version 13及以上版本SDK。 6 7证书管理对话框,可用于拉起证书管理页面并管理证书,如安装、存储、使用、销毁证书。 8 9## 接口说明 10 11详细接口说明可参考[API参考](../../reference/apis-device-certificate-kit/js-apis-certManagerDialog.md)。 12 13以上场景涉及的常用接口如下表所示。 14 15| 实例名 | 接口名 | 描述 | 16| --------------- | ------------------------------------------------------------ | -------------------------------------------- | 17| certificateManagerDialog | openCertificateManagerDialog(context: common.Context, pageType: CertificateDialogPageType): Promise\<void> | 拉起证书管理对话框,显示相应的页面,使用Promise方式异步返回结果。 | 18| certificateManagerDialog | openInstallCertificateDialog(context: common.Context, certType: CertificateType, certScope: CertificateScope, cert: Uint8Array): Promise\<string><sup>14+</sup> | 调用安装证书对话框接口进行证书安装,使用Promise方式异步返回安装证书的唯一标识符。<br/>仅2in1设备支持。 | 19| certificateManagerDialog | openUninstallCertificateDialog(context: common.Context, certType: CertificateType, certUri: string): Promise\<void><sup>18+</sup> | 调用删除证书对话框接口删除指定的证书,使用Promise方式异步返回结果。<br/>仅2in1设备支持。 | 20| certificateManagerDialog | openCertificateDetailDialog(context: common.Context, cert: Uint8Array, property: CertificateDialogProperty): Promise\<void><sup>18+</sup> | 调用查看证书详情的对话框接口,展示证书的详情。使用Promise方式异步返回结果。<br/>仅2in1设备支持。 | 21 22## 开发步骤 23 241. 权限申请和声明。 25 26 需要申请的权限:ohos.permission.ACCESS_CERT_MANAGER 27 28 申请流程请参考:[申请应用权限](../AccessToken/determine-application-mode.md) 29 30 声明权限请参考:[声明权限](../AccessToken/declare-permissions.md) 31 322. 导入相关模块。 33 34 ```ts 35 import { certificateManagerDialog } from '@kit.DeviceCertificateKit'; 36 import { BusinessError } from '@kit.BasicServicesKit'; 37 import { common } from '@kit.AbilityKit'; 38 import { UIContext } from '@kit.ArkUI'; 39 ``` 40 413. 拉起证书管理界面。 42 43 ```ts 44 /* context为应用的上下文信息,由调用方自行获取,此处仅为示例。 */ 45 let context: common.Context = new UIContext().getHostContext() as common.Context; 46 async function certificateManagerDialogSample() { 47 /* pageType为页面类型,此处赋值PAGE_MAIN,即拉起证书管理主界面。 */ 48 let pageType: certificateManagerDialog.CertificateDialogPageType = certificateManagerDialog.CertificateDialogPageType.PAGE_MAIN; 49 try { 50 certificateManagerDialog.openCertificateManagerDialog(context, pageType).then(() => { 51 console.info('Succeeded in opening certificate manager dialog.'); 52 }).catch((err: BusinessError) => { 53 console.error(`Failed to open certificate manager dialog. Code: ${err.code}, message: ${err.message}`); 54 }) 55 } catch (error) { 56 console.error(`Failed to open certificate manager dialog. Code: ${error.code}, message: ${error.message}`); 57 } 58 } 59 ``` 604. 调用安装证书对话框接口进行证书安装、调用删除证书对话框接口进行证书删除、调用查看证书详情的对话框接口、展示证书的详情。以上场景仅2in1设备支持。 61 62 ```ts 63 /* context为应用的上下文信息,由调用方自行获取,此处仅为示例。 */ 64 let context: common.Context = new UIContext().getHostContext() as common.Context; 65 async function userCADialogSample() { 66 let certUri: string = ''; 67 let certType = certificateManagerDialog.CertificateType.CA_CERT; 68 /* 用户CA证书数据需要业务赋值。 */ 69 let cert = new Uint8Array([ 70 0x30, 0x82, 0x01, 0x2E, 0x30, 0x81, 0xD5, 0x02, 0x14, 0x28, 0x75, 0x71, 0x22, 0xDF, 0xDC, 0xCB, 71 ]); 72 73 try { 74 /* 安装证书。 */ 75 let certScope = certificateManagerDialog.CertificateScope.CURRENT_USER; /* 安装在当前用户下。 */ 76 certificateManagerDialog.openInstallCertificateDialog(context, certType, certScope, cert).then((result) => { 77 console.info('Succeeded in opening install ca dialog.'); 78 certUri = result; 79 }).catch((err: BusinessError) => { 80 console.error(`Failed to open install ca dialog. Code: ${err.code}, message: ${err.message}`); 81 }) 82 } catch (error) { 83 console.error(`Failed to open install ca dialog. Code: ${error.code}, message: ${error.message}`); 84 } 85 86 try { 87 /* 删除证书。 */ 88 certificateManagerDialog.openUninstallCertificateDialog(context, certType, certUri).then(() => { 89 console.info('Succeeded in opening uninstall ca dialog.'); 90 }).catch((err: BusinessError) => { 91 console.error(`Failed to open uninstall ca dialog. Code: ${err.code}, message: ${err.message}`); 92 }) 93 } catch (error) { 94 console.error(`Failed to open uninstall ca dialog. Code: ${error.code}, message: ${error.message}`); 95 } 96 97 try { 98 let property: certificateManagerDialog.CertificateDialogProperty = { 99 showInstallButton: false /* 不显示安装按钮。 */ 100 }; 101 /* 显示证书详情。 */ 102 certificateManagerDialog.openCertificateDetailDialog(context, cert, property).then(() => { 103 console.info('Succeeded in opening show ca detail dialog.'); 104 }).catch((err: BusinessError) => { 105 console.error(`Failed to open show ca detail dialog. Code: ${err.code}, message: ${err.message}`); 106 }) 107 } catch (error) { 108 console.error(`Failed to open show ca detail dialog. Code: ${error.code}, message: ${error.message}`); 109 } 110 } 111 ``` 112