在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函数调用的。
阅读(10597) | 评论(0) | 转发(1) |