C++ 基于EC点值创建openssl EC_密钥对象
我想使用openssl验证ECDSA签名。我从使用PKCS11生成的ECDSA密钥对中检索的EC点值。下面是我目前已经完成的代码C++ 基于EC点值创建openssl EC_密钥对象,c++,openssl,pkcs#11,C++,Openssl,Pkcs#11,我想使用openssl验证ECDSA签名。我从使用PKCS11生成的ECDSA密钥对中检索的EC点值。下面是我目前已经完成的代码 VerifyEccData(int hashAlgo,BYTE *data,int dataLen,BYTE *signature,int signatureLen,BYTE* curveType,BYTE* ecPoint,int ecPointLen) { const unsigned char * a = (unsigned char *)ecPoint
VerifyEccData(int hashAlgo,BYTE *data,int dataLen,BYTE *signature,int
signatureLen,BYTE* curveType,BYTE* ecPoint,int ecPointLen)
{
const unsigned char * a = (unsigned char *)ecPoint + 2
EC_KEY *ec = EC_KEY_new();
int eccGrpSN = OBJ_txt2nid("secp112r1");
EC_GROUP *ecgroup = EC_GROUP_new_by_curve_name(eccGrpSN);
EC_KEY_set_group(ec,ecgroup );
o2i_ECPublicKey(&ec, &a, ecPointLen-2);
SHA1(data, dataLen,shaResult);
ECDSA_verify(0,shaResult, sizeof(shaResult), signature,signatureLen, ec);
}
以上代码返回
错误:10067066:椭圆曲线例程:ec_GFp_simple_oct2point:编码无效
我不确定如果这个错误是什么意思。如果有人能帮我或给我指出正确的方向,我真的很感激
我发现了这个,但当我尝试它时,给出了不同的错误
错误:0D07209B:asn1编码例程:asn1\u get\u对象:太长
请提供完整的程序源代码,以便参数和有问题的结果值将被清除。我更新代码@OlegAlso,请参阅OpenSSL wiki。