使用 OpenSSL libcrypt 加载未加密的 PEM Public 密钥

Loading an Unencrypted PEM Public Key with OpenSSL libcrypt

我正在尝试将我使用 OpenSSL 创建的 SECP256R1 Public 密钥加载到我的 C 程序中。根据 OpenSSL documentation,下面的代码应该可以工作:

#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-----

只需在顶部添加 #include <openssl/applink.c> 即可解决问题。 显然,在 Windows 上使用 OpenSSL 是一个问题。