HarmonyOS 鸿蒙Next如何获取X509证书公钥,并转化成string
HarmonyOS 鸿蒙Next如何获取X509证书公钥,并转化成string
找HarmonyOS工作还需要会Flutter技术的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17
关于HarmonyOS 鸿蒙Next如何获取X509证书公钥,并转化成string的问题,您也可以访问:https://www.itying.com/category-93-b0.html 联系官网客服。
参考代码如下:
function certSample(): void { let textEncoder = new util.TextEncoder(); let encodingBlob: certFramework.EncodingBlob = { // 将证书数据从string类型转换成Unit8Array data: textEncoder.encodeInto(certData), // 证书格式,仅支持PEM和DER。在此示例中,证书为PEM格式 encodingFormat: certFramework.EncodingFormat.FORMAT_PEM };
// 创建X509Cert实例 certFramework.createX509Cert(encodingBlob, (err, x509Cert) => { if (err != null) { // Failed to create the X509Cert instance. console.error(
createX509Cert failed, errCode:${err.code}, errMsg:${err.message}
); return; } // X509Cert实例创建成功 console.log(‘createX509Cert success’);<span class="hljs-comment"><span class="hljs-comment">// 获取证书版本 </span></span> <span class="hljs-keyword"><span class="hljs-keyword">let</span></span> version = x509Cert.getVersion(); <span class="hljs-keyword"><span class="hljs-keyword">let</span></span> serial = x509Cert.getCertSerialNumber(); console.log(`X509 version: ${version} , X509 serial:${serial}`); <span class="hljs-comment"><span class="hljs-comment">// 使用上级证书对象的getPublicKey()方法或本(自签名)证书对象获取公钥对象 </span></span> <span class="hljs-keyword"><span class="hljs-keyword">try</span></span> { <span class="hljs-keyword"><span class="hljs-keyword">let</span></span> pubKey: cryptoFramework.PubKey = x509Cert.getPublicKey(); <span class="hljs-comment"><span class="hljs-comment">//获取公钥 </span></span> <span class="hljs-keyword"><span class="hljs-keyword">let</span></span> pubk = uint8ArrayToHexStr(pubKey.getEncoded().data) console.log(<span class="hljs-string"><span class="hljs-string">"test---"</span></span> + pubk) <span class="hljs-comment"><span class="hljs-comment">// 验证证书签名 </span></span> x509Cert.verify(pubKey, (err, data) => { <span class="hljs-keyword"><span class="hljs-keyword">if</span></span> (err == <span class="hljs-literal"><span class="hljs-literal">null</span></span>) { <span class="hljs-comment"><span class="hljs-comment">// 签名验证成功 </span></span> console.log(<span class="hljs-string"><span class="hljs-string">'verify success'</span></span>); } <span class="hljs-keyword"><span class="hljs-keyword">else</span></span> { <span class="hljs-comment"><span class="hljs-comment">// 签名验证失败 </span></span> console.error(`verify failed, errCode: ${err.code} , errMsg:${err.message}`); } }); } <span class="hljs-keyword"><span class="hljs-keyword">catch</span></span> (error) { <span class="hljs-keyword"><span class="hljs-keyword">let</span></span> e: BusinessError = error as BusinessError; console.error(`getPublicKey failed, errCode: ${e.code} , errMsg:${e.message}`); } <span class="hljs-comment"><span class="hljs-comment">// 用一个字符串代表时间 </span></span> <span class="hljs-keyword"><span class="hljs-keyword">let</span></span> date = <span class="hljs-string"><span class="hljs-string">'20230930000001Z'</span></span>; <span class="hljs-comment"><span class="hljs-comment">// 验证证书的有效期 </span></span> <span class="hljs-keyword"><span class="hljs-keyword">try</span></span> { x509Cert.checkValidityWithDate(date); } <span class="hljs-keyword"><span class="hljs-keyword">catch</span></span> (error) { <span class="hljs-keyword"><span class="hljs-keyword">let</span></span> e: BusinessError = error as BusinessError; console.error(`checkValidityWithDate failed, errCode: ${e.code}, errMsg:${e.message}`); }
}); }
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
更多关于HarmonyOS 鸿蒙Next如何获取X509证书公钥,并转化成string的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html