Closed b1gcat closed 11 months ago
验证代码看起来没啥问题,确认一下(密钥, 消息, 签名),这三元组是否匹配。
你的
pHashData
是怎么计算的?
提取公钥 + defaultID + msg 做sm3 defaultID 是1234567812345678
struct HKey key = {0};
...
if (-1 == openKey(pKey, pin, NULL)) goto out;
ulResult = SKF_ExportPublicKey(pKey->hCont, 1, (BYTE *) &ecc_pub, &ulEccPubLen);
if (ulResult != SAR_OK) {
Output(outputTemplate, ulResult, "无法找到公钥,请确认KEY是否正确", "-", "-", "-");
goto out;
}
ulResult = SKF_DigestInit(pKey->hDev, SGD_SM3, &ecc_pub, (BYTE *) UID, UID_LEN, &hKey);
if (ulResult != SAR_OK) {
Output(outputTemplate, ulResult, "无法初始化签名", "-", "-", "-");
goto out;
}
ulResult = SKF_Digest(hKey, (BYTE *) data, strlen(data), pHashData, &ulHashDataLen);
if (ulResult != SAR_OK) {
Output(outputTemplate, ulResult, "HASH错误", "-", "-", "-");
goto out;
}
输出一下pHashData的hex看看。CalculateSM2Hash
算出来的是bcaefdbf978d4695da727f4dc668034e5ecc5e1d17bf5abd8e19a785e3d5a12c
517923904401D752ADC4F8F9DD219E037639685715F9EC637D49F50388F6FB1E 不一致, 我研究研究
可以了 和对面确认了下发布的pubkey给错了
感谢😄
通过skfusb 对hello进行签名:
得到的这个结构体
对应得到签名数据(bin2hex):
然后使用gmsm验证签名
不清楚我哪一步有问题,请老师帮忙看看 谢谢。