1# 证书扩展信息对象的创建、解析和校验 2 3 4以获取证书指定OID域段,并判断是否为CA证书为例,完成证书扩展信息对象的创建、解析和校验。 5 6 7## 开发步骤 8 91. 导入[证书算法库框架模块](../../reference/apis-device-certificate-kit/js-apis-cert.md)。 10 ```ts 11 import { cert } from '@kit.DeviceCertificateKit'; 12 ``` 13 142. 解析证书扩展域段数据,调用[cert.createCertExtension](../../reference/apis-device-certificate-kit/js-apis-cert.md#certcreatecertextension10)创建证书扩展域段对象。 15 163. 调用[CertExtension.getEntry](../../reference/apis-device-certificate-kit/js-apis-cert.md#getentry10)获取指定OID证书扩展域段信息。 17 比如,证书扩展域段对象标识符列表,根据对象标识符获取具体数据等。 18 194. 调用[CertExtension.checkCA](../../reference/apis-device-certificate-kit/js-apis-cert.md#checkca10)判断证书是否为CA证书。 20 21```ts 22import { cert } from '@kit.DeviceCertificateKit'; 23import { BusinessError } from '@kit.BasicServicesKit'; 24import { util } from '@kit.ArkTS'; 25 26// 证书扩展数据,以下只是一个示例。需要根据具体业务来赋值 27let extData = new Uint8Array([ 28 0x30, 0x40, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x1D, 29 0x13, 0x01, 0x01, 0xFF, 0x04, 0x05, 0x30, 0x03, 30 0x01, 0x01, 0xFF, 0x30, 0x0E, 0x06, 0x03, 0x55, 31 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 32 0x02, 0x01, 0xC6, 0x30, 0x1D, 0x06, 0x03, 0x55, 33 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0xE0, 0x8C, 34 0x9B, 0xDB, 0x25, 0x49, 0xB3, 0xF1, 0x7C, 0x86, 35 0xD6, 0xB2, 0x42, 0x87, 0x0B, 0xD0, 0x6B, 0xA0, 36 0xD9, 0xE4 37]); 38 39// 证书扩展示例 40function certExtensionSample(): void { 41 let textEncoder = new util.TextEncoder(); 42 let encodingBlob: cert.EncodingBlob = { 43 data: extData, 44 // 证书扩展格式,目前仅支持DER格式 45 encodingFormat: cert.EncodingFormat.FORMAT_DER 46 }; 47 48 // 创建一个证书扩展实例 49 cert.createCertExtension(encodingBlob, (err, certExtension) => { 50 if (err != null) { 51 // 证书扩展实例创建失败 52 console.error(`createCertExtension failed, errCode:${err.code}, errMsg:${err.message} `); 53 return; 54 } 55 // 证书扩展实例创建成功 56 console.log('createCertExtension success'); 57 58 try { 59 // 根据OID获取证书扩展信息 60 let oidData = '2.5.29.14'; 61 let oid: cert.DataBlob = { 62 data: textEncoder.encodeInto(oidData), 63 } 64 let entry = certExtension.getEntry(cert.ExtensionEntryType.EXTENSION_ENTRY_TYPE_ENTRY, oid); 65 66 // 检查证书是否为CA证书 67 let pathLen = certExtension.checkCA(); 68 console.log('test cert extension success'); 69 } catch (err) { 70 let e: BusinessError = err as BusinessError; 71 console.error(`operation failed, message:${e.message} ,code:${e.code} `); 72 } 73 }); 74} 75``` 76