SSL_CTX_use_PrivateKey_file 如何提供密码

nin*_*fan 4 c terminal openssl

SSL_CTX_use_PrivateKey_file 函数或 SSL_CTX_check_private_key 函数在终端中要求我的私钥输入密码。我想在一些 OpenSSL 函数中传递这个密码,所以这些函数之一不会在终端中询问它。我的应用程序将从命令行或对话框窗口获取密码。

fra*_*ale 8

您正在寻找的功能是:

void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb);
Run Code Online (Sandbox Code Playgroud)

回调函数参数pem_password_cb具有签名:

int pem_passwd_cb(char *buf, int size, int rwflag, void *userdata);
Run Code Online (Sandbox Code Playgroud)

buf是密码短语的目标缓冲区。 size给出缓冲区的大小。 rwflag指示密码是用于解密(读)还是加密(写)操作。

*userdata是应用程序可以指定传递给回调的任意数据。您可以userdata通过以下功能设置:

void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u);
Run Code Online (Sandbox Code Playgroud)

有关SSL_CTX_set_default_passwd_cb(3)更多信息,请参阅手册页。

  • 抱歉,但我没有足够的声誉来投票支持您的帖子。您的解决方案很好,但我没有此功能的手册页。 (2认同)