我的硬件中有 STSafe a110 加密芯片。我已经创建了私钥和公钥对并签署了固件映像。固件升级过程中,主机端需要使用stsafe a110芯片进行签名校验。我用过 ECDSA_do_verify(&Hash[0], 64, sig, eckey_pub); 但我收到“OpenSSL 错误 218570907 错误:0D07209B:asn1 编码例程:ASN1_get_object:太长”错误。之后我将消息大小更改为 ECDSA_do_verify(&Hash[0], 32, sig, eckey_pub); 但是现在它失败了,调用了 StSafeA_VerifyMessageSignature,StatusCode:0 SignatureValidity=0 错误。
可能是什么原因呢?是否有 32 字节消息大小的限制?由于签名验证失败,是否还有其他限制?
2023-2-1 15:07:02
您必须小心,当您使用 openssl dgst -sha256 -sign privatekey.pem -out firmware.sig firmware.hash 命令时,Openssl 将使用 SHA256 对文件 firmware.hash 进行哈希处理,然后对其进行签名。
与验证相同,因此,您需要传递FW文件以使用OpenSSL生成签名。
关于您使用 STSAFE-A 进行验证的问题,请说明您使用的是哪种软件?
您必须小心,当您使用 openssl dgst -sha256 -sign privatekey.pem -out firmware.sig firmware.hash 命令时,Openssl 将使用 SHA256 对文件 firmware.hash 进行哈希处理,然后对其进行签名。
与验证相同,因此,您需要传递FW文件以使用OpenSSL生成签名。
关于您使用 STSAFE-A 进行验证的问题,请说明您使用的是哪种软件?
举报