Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16069
  • 博文数量: 7
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2016-10-03 15:49
文章分类
文章存档

2023年(1)

2021年(1)

2016年(5)

我的朋友

分类: C/C++

2021-10-12 11:18:37

在OpenSSL库函数中设置读取私钥的密码的函数总共涉及三个,即
void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb);
void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u);
int pem_passwd_cb(char *buf, int size, int rwflag, void *userdata);
那么设置读取私钥密码有两种方法(假设ctx是已经初始化好的上下文变量)。
方法一:
使用函数SSL_CTX_set_default_passwd_cb_userdata直接设置,密码为123456,那么就
SSL_CTX_set_default_passwd_cb_userdata(ctx, (void*)"123456");
方法二:
先使用函数SSL_CTX_set_default_passwd_cb设置回调函数,假设回调函数为pem_passwd_cb,那么语句为
SSL_CTX_set_default_passwd_cb(ctx, pem_password_cb),请注意回调函数的名字可以变化,但是,格式必须与OpenSSL文档,即上面的定义一致。并且在调用函数SSL_CTX_set_default_passwd_cb之前申明或者定义你的回调函数。

回调函数的编写:
回调函数中要实现的功能就是把密码到buf这个字符缓冲区中(可使用strcpy等类似函数),并注意,密码的长度不要超过size。
说明:
(1) 当使用方法一时,其实在OpenSSL中还是调用了一个回调函数PEM_def_callback,该函数定义在OpenSSL源码中的文件pem_lib.c中。
(2) 回调函数实际上是由定义在OpenSSL源码目录中的pem_pkey.c文件定义的PEM_read_bio_PrivateKey函数调用的。
阅读(1470) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~