我尝试导入证书的公钥,使其具有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结构?
答案 0 :(得分:1)
就像您提到的那样,您有一个证书,并且正试图将其传递到仅需要密钥而不是证书的API中。
尝试使用InitDecodedCert(),ParseCert()首先将证书解码为DecodedCert结构中的相应部分。然后将cert-> publicKey传递给wc_EccPublicKeyDecode()! (完成操作后,请不要忘记使用FreeDecodedCert())。
注意:您将需要使用设置WOLFSSL_TEST_CERT
来向调用应用程序公开ParseCert()
,默认情况下它是一个不透明的API。
如果您有任何后续问题,并希望获得最佳响应时间,则可以通过support@wolfssl.com与wolfSSL支持团队联系。
谢谢!