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

时间:2018-04-06 21:26:42

标签: c visual-studio-2015 openssl pem elliptic-curve

我尝试将我使用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-----

1 个答案:

答案 0 :(得分:-1)

只需在顶部添加#include <openssl/applink.c>,问题就会消失。 显然,这是在Windows上使用OpenSSL的一个问题。