使用 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 是一个问题。
我正在尝试将我使用 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 是一个问题。