HarmonyOS KeyPair 生成证书失败问题

通过getRawFileContentSync从证书文件获取得到Uint8Array数据后,通过cryptoFramework.createAsyKeyGenerator获取keyPair失败

HarmonyOS
2024-12-25 08:29:40
1152浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
FengTianYa

参考以下demo

import { cert } from '@kit.DeviceCertificateKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { util } from '@kit.ArkTS';

// 此处仅为示例的证书二进制数据,需根据业务的不同对证书数据进行赋值
let certData = '-----BEGIN CERTIFICATE-----\n' +
  'MIIBLzCB1QIUO/QDVJwZLIpeJyPjyTvE43xvE5cwCgYIKoZIzj0EAwIwGjEYMBYG\n' +
  'A1UEAwwPRXhhbXBsZSBSb290IENBMB4XDTIzMDkwNDExMjAxOVoXDTI2MDUzMDEx\n' +
  'MjAxOVowGjEYMBYGA1UEAwwPRXhhbXBsZSBSb290IENBMFkwEwYHKoZIzj0CAQYI\n' +
  'KoZIzj0DAQcDQgAEHjG74yMIueO7z3T+dyuEIrhxTg2fqgeNB3SGfsIXlsiUfLTa\n' +
  'tUsU0i/sePnrKglj2H8Abbx9PK0tsW/VgqwDIDAKBggqhkjOPQQDAgNJADBGAiEA\n' +
  '0ce/fvA4tckNZeB865aOApKXKlBjiRlaiuq5mEEqvNACIQDPD9WyC21MXqPBuRUf\n' +
  'BetUokslUfjT6+s/X4ByaxycAA==\n' +
  '-----END CERTIFICATE-----\n';

// 证书示例
function certSample(): void {
  let textEncoder = new util.TextEncoder();
  let encodingBlob: cert.EncodingBlob = {
    // 将证书数据从string类型转换成Unit8Array
    data: textEncoder.encodeInto(certData),
    // 证书格式,仅支持PEM和DER。在此示例中,证书为PEM格式
    encodingFormat: cert.EncodingFormat.FORMAT_PEM
  };

  // 创建X509Cert实例
  cert.createX509Cert(encodingBlob, (err, x509Cert) => {
    if (err != null) {
      // 创建X509Cert实例失败
      console.error(`createX509Cert failed, errCode:${err.code}, errMsg:${err.message}`);
      return;
    }
    // X509Cert实例创建成功
    console.log('createX509Cert success');

    // 获取证书版本
    let version = x509Cert.getVersion();
    let serial = x509Cert.getCertSerialNumber();
    console.log(`X509 version: ${version} , X509 serial:${serial}`);

    // 使用上级证书对象的getPublicKey()方法或本(自签名)证书对象获取公钥对象
    try {
      let pubKey = x509Cert.getPublicKey();
      // 验证证书签名
      x509Cert.verify(pubKey, (err, data) => {
        if (err == null) {
          // 签名验证成功
          console.log('verify success');
        } else {
          // 签名验证失败
          console.error(`verify failed, errCode: ${err.code} , errMsg:${err.message}`);
        }
      });
    } catch (error) {
      let e: BusinessError = error as BusinessError;
      console.error(`getPublicKey failed, errCode: ${e.code} , errMsg:${e.message}`);
    }

    // 用一个字符串代表时间
    let date = '20230930000001Z';

    // 验证证书的有效期
    try {
      x509Cert.checkValidityWithDate(date);
    } catch (error) {
      let e: BusinessError = error as BusinessError;
      console.error(`checkValidityWithDate failed, errCode: ${e.code}, errMsg:${e.message}`);
    }
  });
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
分享
微博
QQ
微信
回复
2024-12-25 11:46:46
相关问题
HarmonyOS RN capi生成Codegen失败
788浏览 • 1回复 待解决
HarmonyOS 二维码生成失败
754浏览 • 1回复 待解决
HarmonyOS 新建证书问题
465浏览 • 1回复 待解决
HarmonyOS 证书SN问题
457浏览 • 1回复 待解决
HarmonyOS 证书相关问题
1034浏览 • 1回复 待解决
HarmonyOS 发布证书问题
853浏览 • 1回复 待解决
HarmonyOS 证书相关问题咨询
816浏览 • 1回复 待解决
HarmonyOS 证书公钥问题
832浏览 • 1回复 待解决
HarmonyOS AppGallery Connet证书问题
769浏览 • 1回复 待解决
HarmonyOS 自动生成代码问题
981浏览 • 1回复 待解决
读取证书里扩展项的内容失败
796浏览 • 1回复 待解决
HarmonyOS har包生成问题
1869浏览 • 1回复 待解决
HarmonyOS 编译失败问题
1264浏览 • 1回复 待解决
HarmonyOS 获取定位失败问题
945浏览 • 1回复 待解决
HarmonyOS RSA加密失败问题
850浏览 • 1回复 待解决