如何使用 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_CERT
将 ParseCert()
公开给调用应用程序,默认情况下它是不透明的 API。
如果您有任何后续问题并希望获得最佳响应时间,可以通过 support@wolfssl.com 联系 wolfSSL 支持团队。
谢谢!
- KH
我尝试导入证书的 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_CERT
将 ParseCert()
公开给调用应用程序,默认情况下它是不透明的 API。
如果您有任何后续问题并希望获得最佳响应时间,可以通过 support@wolfssl.com 联系 wolfSSL 支持团队。
谢谢!
- KH