⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 common.c

📁 ssl的客户端和服务端源代码
💻 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 + -