根据EC点值创建openssl EC_KEY对象

时间:2017-05-20 07:52:03

标签: 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 + 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:无效编码

我不确定这个错误是什么意思。如果有人可以帮助或指出我正确的方向真的很感激。

我找到了这个https://www.mail-archive.com/opensc-devel@lists.opensc-project.org/msg08847.html但是当我尝试它时会给出不同的错误。

  

错误:0D07209B:asn1编码例程:ASN1_get_object:太长

0 个答案:

没有答案