1

我正在从缓冲区解析 RSA 私钥mbedtls_pk_parse_key(),它返回 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_keypair. 的grp成员mbedtls_ecp_keypair有一个id为零的成员,对应于MBEDTLS_ECP_DP_NONE。我把错误的东西传递给了mbedtls_ecdsa_from_keypair吗?

4

1 回答 1

1

调用mbedtls_ecdsa_from_keypair()似乎不适用于 RSA 密钥。我切换到 EC 私钥(secp256r1确切地说),它开始正常工作。

于 2019-10-15T11:40:50.037 回答