为什么mbedtls_ecdsa_from_keypair返回错误?

时间:2019-10-08 20:16:12

标签: c rsa mbedtls

我正在使用mbedtls_pk_parse_key()从缓冲区中解析RSA私钥,该私钥返回0。然后我调用mbedtls_ecdsa_from_keypair()并返回-20096(我相信它对应于MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE)

我正在使用XDK Workbench构建类似于以下代码的内容:

  mbedtls_mpi r, s;
  mbedtls_pk_context pk;
  mbedtls_ecdsa_context ecdsa_sign;

  mbedtls_mpi_init(&r);
  mbedtls_mpi_init(&s);
  mbedtls_pk_init(&pk);
  mbedtls_ecdsa_init(&ecdsa_sign);

  int ret = mbedtls_pk_parse_key(&pk,  priv_key, strlen(priv_key) + 1, NULL, 0);
  /* Returns 0 */

  ret = mbedtls_ecdsa_from_keypair(&ecdsa_sign, pk.pk_ctx);
  /* Returns -20096 */

当我查看mbedtls_ecdsa_from_keypair()的实现时,我发现pk.pk_ctx被视为mbedtls_ecp_keypairgrp的{​​{1}}成员的mbedtls_ecp_keypair成员为零,它对应于id。我将错误的内容传递给MBEDTLS_ECP_DP_NONE吗?

1 个答案:

答案 0 :(得分:1)

调用String sample ='to' def person = new XmlSlurper().parse(new File("I:/Work/test.xml")) println person."${sample}" 似乎不适用于RSA密钥。我切换到EC私钥(确切地说是.state('menu.test', { cache : false, url : '/test/', views : { 'menuContent' : { controller : 'TestController' } } }) ),它开始正常工作。