我尝试将我使用OpenSSL创建的SECP256R1
公钥加载到我的C程序中。根据{{3}},以下代码应该有效:
#include <stdio.h>
#include <openssl/pem.h>
#include <openssl/ec.h>
int main()
{
EC_KEY *pk = NULL;
FILE *in = fopen("pk.pem", "rt");
if (!in)
return 2;
pk = PEM_read_EC_PUBKEY(in, NULL, NULL, NULL);
fclose(in);
return 0;
}
但是,在从PEM_read...
调用返回之前,我的程序突然以1
代码退出,没有进一步说明。造成这种情况的原因是什么?
pk.pem:
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGQxkTNnZ3zp4NXgpnwhTkU2fzENB
RPXu3JJq1gx/CwZGh4mIWPbmHvd8eYUmffoPu4fPU6UxAQwGIH7+DEaKJw==
-----END PUBLIC KEY-----
sk.pem:
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIElzeIrCIus5+2GIayg/i7VubOCQ1yqApAo2sau4dD1hoAoGCCqGSM49
AwEHoUQDQgAEGQxkTNnZ3zp4NXgpnwhTkU2fzENBRPXu3JJq1gx/CwZGh4mIWPbm
Hvd8eYUmffoPu4fPU6UxAQwGIH7+DEaKJw==
-----END EC PRIVATE KEY-----
答案 0 :(得分:-1)
只需在顶部添加#include <openssl/applink.c>
,问题就会消失。
显然,这是在Windows上使用OpenSSL的一个问题。