如何使用 wc_EccPublicKeyDecode 在 wolfssl 中导入 der 证书

How to import der certificate in wolfssl using wc_EccPublicKeyDecode

我尝试导入证书的 public 密钥以将其放入 ecc_key 结构中以供进一步使用。

为此,我在 wolfssl API 文档中找到了这个 wc_EccPublicKeyDecode 函数。我试图用它来将证书加载到 ecc_key 结构中。

const byte b64_cert[] = "MIIB6TCCAY+gAwIBAgIJAPhfFTGxGQMtMAoGCCqGSM49BAMCMFExCzAJBgNVBAYT"
                        "AlhYMQswCQYDVQQIDAJYWDELMAkGA1UEBwwCWFgxCzAJBgNVBAoMAlhYMQswCQYD"
                        "VQQLDAJYWDEOMAwGA1UEAwwFWFhYWFgwHhcNMTkwOTE4MTExMDQ3WhcNMjAwOTE3"
                        "MTExMDQ3WjBRMQswCQYDVQQGEwJYWDELMAkGA1UECAwCWFgxCzAJBgNVBAcMAlhY"
                        "MQswCQYDVQQKDAJYWDELMAkGA1UECwwCWFgxDjAMBgNVBAMMBVhYWFhYMFkwEwYH"
                        "KoZIzj0CAQYIKoZIzj0DAQcDQgAEOJdKmIL9KXUMcrR2obrUuyDsWoj7GFYxnGAI"
                        "wKz7aWgKenLL9pOTs5xhIkeZIEekkRayhV++CqMzEHRJhF6vNaNQME4wHQYDVR0O"
                        "BBYEFKtf9OtFyPb7GIkxjXsc8LbI6p4xMB8GA1UdIwQYMBaAFKtf9OtFyPb7GIkx"
                        "jXsc8LbI6p4xMAwGA1UdEwQFMAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIhANN9YLSc"
                        "VcEQn/JEKcdPxdR70SnDkEa0hCrm3yiZqXSAAiB9krAmY/Shv2yq2sTD+84x7s9K"
                        "XcPcX00w1JyeaIbaDw==";

uint8_t der_cert[1000] = {0};
word32 size_of_cert = 1000;
ecc_key eccKey;
int wolfssl_ret = wc_ecc_init(&eccKey);

Base64_Decode(b64_cert, sizeof(b64_cert), der_cert, &size_of_cert);
word32 idx = 0;
wolfssl_ret = wc_EccPublicKeyDecode( der_cert, &idx, &eccKey, size_of_cert );
printf("wc_EccPublicKeyDecode failed! Wolfssl error = %d", wolfssl_ret);

但不幸的是,我总是收到 ASN_OBJECT_ID_E (-144) 错误代码:

wc_EccPublicKeyDecode failed! Wolfssl error = -144

那我做错了什么?我使用了错误的功能吗? 我还能如何将 DER/PEM 证书导入 ecc_key 结构?

就像你提到的,你有一个证书,你正试图将它传递到一个 API 中,它只需要一个密钥,而不是一个证书。

尝试使用 InitDecodedCert()、ParseCert() 首先将证书解码到 DecodedCert 结构中的各个部分。然后将 cert->publicKey 传递给 wc_EccPublicKeyDecode()! (完成后不要忘记 FreeDecodedCert())。

注意:您需要使用设置 WOLFSSL_TEST_CERTParseCert() 公开给调用应用程序,默认情况下它是不透明的 API。

如果您有任何后续问题并希望获得最佳响应时间,可以通过 support@wolfssl.com 联系 wolfSSL 支持团队。

谢谢!

  • KH