HarmonyOS 生成SM2密钥对报错

生成SM2密钥对报错,报错错误码:17620001 内存错误。

async genKeyPairByData(pubKeyData: Uint8Array) {
  let pubKeyBlob: cryptoFramework.DataBlob = { data: pubKeyData };
  let sm2Generator = cryptoFramework.createAsyKeyGenerator('SM2_256');
  let keyPair = await sm2Generator.convertKey(pubKeyBlob, null);
  console.info('convertKey success');
  return keyPair;
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
HarmonyOS
2024-12-20 14:36:50
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
aquaa

问题点:直接使用HarmonyOS传入的公钥,未处理

转换方法:

//根据密钥参数生成sm2公钥

export async function convertStrToPubKey(keyStr: string): Promise<cryptoFramework.PubKey> {
  let pubKeyStr = keyStr.startsWith("04") ? keyStr.slice(2) : keyStr
  let pkPart1 = pubKeyStr.slice(0, pubKeyStr.length / 2)
  let pkPart2 = pubKeyStr.slice(pubKeyStr.length / 2)
  let pk: cryptoFramework.Point = {
    x: BigInt("0x" + pkPart1),
    y: BigInt("0x" + pkPart2),
  }
  let pubKeySpec: cryptoFramework.ECCPubKeySpec = {
    params: cryptoFramework.ECCKeyUtil.genECCCommonParamsSpec('NID_sm2'),
    pk: pk,
    algName: "SM2",
    specType: cryptoFramework.AsyKeySpecType.PUBLIC_KEY_SPEC
  }
  let keypairGenerator = cryptoFramework.createAsyKeyGeneratorBySpec(pubKeySpec)
  let puk = await keypairGenerator.generatePubKey();

  return await keypairGenerator.generatePubKey()
}

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
分享
微博
QQ
微信
回复
2024-12-20 15:31:16
相关问题
HarmonyOS SM2密钥问题
537浏览 • 1回复 待解决
HarmonyOS SM2密钥交换
317浏览 • 1回复 待解决
HarmonyOS SM2密钥交换计算协商密钥
376浏览 • 1回复 待解决
HarmonyOS SM2密钥对转换失败
1221浏览 • 1回复 待解决
HarmonyOS 指定私钥生成SM2秘钥的方法
500浏览 • 1回复 待解决
HarmonyOS SM2数据签名
406浏览 • 1回复 待解决
HarmonyOS生成SM2密文服务端无法解析
389浏览 • 1回复 待解决
HarmonyOS SM2加密算法
507浏览 • 1回复 待解决
HarmonyOS sm2验签失败
635浏览 • 1回复 待解决
HarmonyOS SM2公私钥转换
425浏览 • 1回复 待解决
HarmonyOS SM2/SM4结合加解密
577浏览 • 1回复 待解决
huks sm2签名验签失败
780浏览 • 1回复 待解决
HarmonyOS SM2公钥PEM读取接口
587浏览 • 1回复 待解决
HarmonyOS sm2签名后数据长度问题
332浏览 • 1回复 待解决
HarmonyOS Sm2和DES加解密问题
981浏览 • 1回复 待解决