📄 common.c
字号:
#include "common.h"BIO *bio_err=0;static char *pass;static int password_cb(char *buf,int num,int rwflag,void *userdata);static void sigpipe_handle(int x);/* A simple error and exit routine*/int err_exit(string) char *string; { fprintf(stderr,"%s\n",string); exit(0); }/* Print SSL errors and exit*/int berr_exit(string) char *string; { BIO_printf(bio_err,"%s\n",string); ERR_print_errors(bio_err); exit(0); }/*The password code is not thread safe*/static int password_cb(char *buf,int num,int rwflag,void *userdata) { if(num<strlen(pass)+1) return(0); strcpy(buf,pass); return(strlen(pass)); }static void sigpipe_handle(int x){}SSL_CTX *initialize_ctx(keyfile,password) char *keyfile; char *password; { SSL_METHOD *meth; SSL_CTX *ctx; if(!bio_err){ /* Global system initialization*/ SSL_library_init(); SSL_load_error_strings(); /* An error write context */ bio_err=BIO_new_fp(stderr,BIO_NOCLOSE); } /* Set up a SIGPIPE handler */ signal(SIGPIPE,sigpipe_handle); /* Create our context*/ meth=SSLv3_method(); ctx=SSL_CTX_new(meth); /* Load our keys and certificates*/ if(!(SSL_CTX_use_certificate_file(ctx,keyfile,SSL_FILETYPE_PEM))) berr_exit("Couldn't read certificate file"); pass=password; SSL_CTX_set_default_passwd_cb(ctx,password_cb); if(!(SSL_CTX_use_PrivateKey_file(ctx,keyfile,SSL_FILETYPE_PEM))) berr_exit("Couldn't read key file"); /* Load the CAs we trust*/ if(!(SSL_CTX_load_verify_locations(ctx,CA_LIST,0))) berr_exit("Couldn't read CA list"); SSL_CTX_set_verify_depth(ctx,1); /* Load randomness */ if(!(RAND_load_file(RANDOM,1024*1024))) berr_exit("Couldn't load randomness"); return ctx; } void destroy_ctx(ctx) SSL_CTX *ctx; { SSL_CTX_free(ctx); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -